2025年hadoop 查看yarn队列(hadoop查看namenode)

hadoop 查看yarn队列(hadoop查看namenode)p br Hadoop 框架包括下述三个个模块 br br HDFS Hadoop 集群中最根本的文件系统 数据存储 p 一个 HDFS 集群是由一个 NameNode 和若干个 DataNode 组成的 NameNode 作为主服务器

大家好,我是讯享网,很高兴认识大家。



 <p><br /> Hadoop框架包括下述三个个模块<br />  <br /> HDFS&#xff1a;Hadoop集群中最根本的文件系统&#xff08;数据存储&#xff09;</p> 

讯享网

     一个HDFS集群是由一个NameNode和若干个DataNode组成的
NameNode作为主服务器,管理文件系统命名空间和客户端对文件的访问操作。
DataNode管理存储的数据,HDFS支持文件形式的数据。
DataNode负责管理节点上它们拥有的存储,它将存储划分为多个block块,管理block块信息,同时周期性的将其所有的block块信息发送给NameNode。
 
MapReduce:为能够在集群上分布式处理海量数据而量身订做的框架

     MapReduce job可以分为三次连续过程。
Map 将输入数据划分为key-value集合
Shuffle 将Map产生的结果传输给Reduce
Reduce 则对接收到的key-value进一步处理
YARN:为应用执行分配计算资源的一个框架

    YARN主要包含下面三个核心组件
ResourceManager(一个集群只有一个)
ApplicationMaster(每个应用都有一个)
NodeManagers (每个节点都有一个)
1.Yarn
1.Yarn架构
1.resourcemanger : 负责资源的分配
2.nodemanager : 负责资源的供给与隔离
Yarn
1.资源调度 
                  resourcemanger将nodemanager上资源分配给task
2.资源隔离
                  nodemanager按照要求给task提供资源,保证供给的资源有独占性
资源
nodemanager指挥分配的资源
 container:(一定比例的cpu和mem)
cpu
mem
2.yarn的架构设计
1. mr作业运行·如何申请资源去运行作业?
1.client =》 rmapps发送请求·去运行·jar·(appmaster)
2.apps 分配一个container·去运行appmaster.
3.app master向apps manager ·去注册,(yarn-web·可以看到iob·运行情况)
4.app master 向 resouce scheduler-申请资源运行 我的代码
5-6.nodemanager会开启资源container去运行map task reduce task
7.task 会向 app-master 汇报代码的运行情况
8.当运行完成之后appmaster 会给 apps manager 通知我的作业运行完成了 请求释放资源
9.apps manager 收到请求之后 通知客户端 你的代码运行完成了
补充
input :map task个数·=》·container.申请的个数
reduce :educe task·=》·container.由请的个数
2.调度器
1.FIFO scheduler
            先进先出 单队列
2.Capacity scheduler (容量调度器)
            多队列、每个队列之间 互不影响  先进先出
3.Fair scheduler (公平调度器)
            多队列、·每个队列之间 job  有影响 不是先进先出
            job的优先级
3.默认调度器:
         Capacity scheduler.容量调度器
         yarn.resourcemanager.scheduler.class.=》 CapacityScheduler
3.调优
yarn调优
1.container
一定比例的mem和cpu
2.针对集群中每个节点对container进行配置
刀片服务器配置 128G 16物理core
1.刀片服务器装完系统 消耗1G
2.系统预留20%内存
1.给未来部署组件预留内存空间
2.防止全部使用会导致系统夯住   oom机制【liniux系统】

3.目前位置 大数据服务资源  102G
hadoop
Datanode              进程内存2G
nodemanager       进程内存4G

102G - 2G - 4G = 96G   =&gt;yarn资源 container一共96G
container资源分配
内存
cpu【core】
 
1. container内存

    yarn.nodemanager.resource.memory-mb  96G 【默认值是8G】
最小
    yarn.scheduler.minimum-allocation-mb 1g  极限情况下 会有96个container
最大 
    yarn.scheduler.maximum-allocation-mb 96G 极限情况下 会有1个container
注意:container内存会自动增加 默认1G增加
2. contaner cpu
虚拟核 vcore :设计初衷 考虑不同节点的cpu的性能不一样
例如: 某个物理cpu是另外一个物理cpu的2G
第一机器:强悍   pcore: vcore=1: 2 (1core·当成2core使用)
第二机器:不强悍  pcore: vcore=1: 1
 
16个物理核: 16vcore
虚拟核 和物理核的比例 : 
yarn.nodemanager.resource.pcores-vcores-multiplier  2

            yarn core =》 vcore 16*2 = 32 vcore 

实际开发角度:

1.mem 为主 
 2.cpu : 
        cloudera 公司推荐 一个contaier 的vcore 最大值最好不要超过5   4 

            yarn core =》 vcore 16*2 = 32 vcore 

最小:
            yarn.scheduler.minimum-allocation-vcores 1 极限情况下 只有32个container 
 

container: 

1. 8-32 个container =&gt;  task  8-32个

2.以内存为主 


讯享网

4G 2core 

1.内存

2.cpu 2

​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​修改配置内存

修改 yarn-site.xml:
路径:/home/hadoop/app/hadoop/etc/hadoop
[hadoop@bigdata13 hadoop]\( vim yarn-site.xml<br />  <br /> #内存&#xff1a;<br /> &lt;property&gt;<br />         &lt;name&gt;yarn.nodemanager.resource.memory-mb&lt;/name&gt;<br />         &lt;value&gt;4096&lt;/value&gt;<br /> &lt;/property&gt;<br /> &lt;property&gt;<br />         &lt;name&gt;yarn.scheduler.minimum-allocation-mb&lt;/name&gt;<br />         &lt;value&gt;1024&lt;/value&gt;<br /> &lt;/property&gt;<br /> &lt;property&gt;<br />         &lt;name&gt;yarn.scheduler.maximum-allocation-mb&lt;/name&gt;<br />         &lt;value&gt;2048&lt;/value&gt;<br /> &lt;/property&gt;<br />  <br /> #cpu&#xff1a; <br /> &lt;property&gt;<br />         &lt;name&gt;yarn.nodemanager.resource.pcores-vcores-multiplier&lt;/name&gt;<br />         &lt;value&gt;2&lt;/value&gt;<br /> &lt;/property&gt;<br /> &lt;property&gt;<br />         &lt;name&gt;yarn.nodemanager.resource.cpu-vcores&lt;/name&gt;<br />         &lt;value&gt;4&lt;/value&gt;<br /> &lt;/property&gt;<br /> &lt;property&gt;<br />         &lt;name&gt;yarn.scheduler.minimum-allocation-vcores&lt;/name&gt;<br />         &lt;value&gt;1&lt;/value&gt;<br /> &lt;/property&gt;<br /> &lt;property&gt;<br />         &lt;name&gt;yarn.scheduler.maximum-allocation-vcores&lt;/name&gt;<br />         &lt;value&gt;2&lt;/value&gt;<br /> &lt;/property&gt;<br />  <br /> 同步到其他&#xff1a;[hadoop&#64;bigdata13 hadoop]\) xsync yarn-site.xml
mapreduce:
1.map task  reduce task  默认申请的container:cpu mem 分别是多少?

2.map task: 

1.mem 

mapreduce.map.memory.mb 默认是1024 

   一个map task 申请的内存资源是 1024M 

如果map task 实际使用的资源量超过该值  task将会被强制杀死

2.cpu 

​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

了解:
mr: 进程级别 job =》 进程 maptasks、 redue tasks  =》 jvm 
    map task :
        mapreduce.map.java.opts jvm相关调优参数即可
    reduce task 
        mapreduce.reduce.java.opts jvm相关调优参数即可
    jvm参数调优=》 

1.提交mr作业时可以指定 ?当前job生效
    hadoop jar  xxx.jar  xxx参数 指定job运行时资源的参数 
2.集群环境里面可以配置:? 全局生效
    mapreude-site.xml 
3.最常见的 code  =》 当前job生效
    code 
    Configration         

​​​​​​​ 

2.存储 hdfs (存储文件)
压缩:
1.为什么要使用压缩? 
1.节省空间 (1file hdfs 3个副本)
2.节省时间:网络io 和磁盘io 会减少
mapreduce 过程中 map端输出采用压缩 
1.经过网络传输的数据量会变少 【减少了网络io】
2.磁盘上数据压缩后,读取到内存的数据量也会变少 【减少磁盘io】
2.使用场景? 
1.采用压缩,对机器的cpu要求比较高
 2.存储数据的空间不够
3.凡事都有两面性?
1.采用压缩 
           空间 和时间 减少 
 2.cpu 消耗 cpu利用率高  =》 会导致整个mr作业处理数据时间会稍微长一些
 
4.如何使用压缩? 
1.存储角度
                压缩普通文件 
2.计算角度 mr spark flink
1.input mr 不用考虑 切片会对压缩格式进行校验 =》 源码里面
 2.map out  配置参数即可
 3.reduce out 配置参数即可
 
5.常见的压缩格式 
gzip 
bzip2
LZO
Snappy 
LZ4 
 
1.压缩比
            Bzip2 30%  GZIP    snappy、lzo 50%

2.压缩文件是否可以被切分?
1.假设一个 5G文件 不能被切分 split 意味着 只能使用一个map task去处理
                map task  5G 
2.假设一个 5G文件 能被切片  splits 10map task 去并行处理  
                5*1024 /10 = 一个map task 处理的数据
3. 能否被切分 决定了 你的 一个map task处理的数据量有多少
3.压缩后的文件是否支持分割?
gzip  不可分割
bzip2  可分割
lzo   带索引的可以分割 (默认是不支持分割的)
snappy 不可分割的
4.mapreduce 每个阶段该如何采用这些算法?

    input =》 maps =》 reduce =》 output 
​​​​​​​input:
            Bzip2 
                支持分割 多个map task 进行出 
map out:
​​​​​​​​​​​​​​1. shuffle 过程 要选择一个解压 速度快的压缩格式 
2.snappy 、lzo 
reduce out : 
​​​​​​​​​​​​​​1.高的压缩比 + 支持分片  =》 节省空间 
2.bzip2  、lzo带索引的 
                reduce out 数据 作为下一个
                map 的输入咋办?
                建议使用bzip2【如果采用压缩的话】
压缩配置
​​​​​​​​​​​​​​​​​​​​​​​​​​​​1.mapreduce 压缩配置:
1.配置压缩的codec 
2.map reduce 输出配置:
1.先打开压缩的开关
2.配置codec 即可
2.hadoop集群hdfs 支持哪些压缩?
1.命令  hadoop checknative
2.core-site.xml:
   配置支持的压缩
mapred-site.xml: 
io.compression.codecs 

1.先打开压缩的开关 
2.map reduce 输出 压缩算法
补充: 
    原生 hadoop 默认不支持 lzo的压缩
bzip2gzip snappy 
&lt;property&gt;
        &lt;name&gt;io.compression.codecs&lt;/name&gt;
        &lt;value&gt;org.apache.hadoop.io.compress.BZip2Codec,
        org.apache.hadoop.io.compress.SnappyCodec,
        org.apache.hadoop.io.compress.GzipCodec,
        org.apache.hadoop.io.compress.DefaultCodec
        &lt;/value&gt;
&lt;/property&gt;
 mapred-site.xml: 
1.先打开压缩的开关
2.map reduce 输出 压缩算法
reduce: 开关
mapreduce.output.fileoutputformat.compress
 
&lt;property&gt;
        &lt;name&gt;mapreduce.output.fileoutputformat.compress&lt;/name&gt;
        &lt;value&gt;true&lt;/value&gt;
&lt;/property&gt;
 
mapreduce.output.fileoutputformat.compress.codec 
 
&lt;property&gt;
        &lt;name&gt;mapreduce.output.fileoutputformat.compress.codec&lt;/name&gt;
        &lt;value&gt;org.apache.hadoop.io.compress.BZip2Codec&lt;/value&gt;
&lt;/property&gt;
3.各个DN节点数据平衡 
eg: 
        DN1 存储空间 90% 
        DN2 存储空间 60% 
        DN3 存储空间 80% 

    如何做呢?
        sbin/start-balancer.sh 
    
    parameters = Balancer.BalancerParameters 
    [BalancingPolicy.Node, threshold = 10.0, max idle iteration = 5,

DN1 存储空间 90%  -76% = 14% 说明这个节点数据多 往别的节点迁移数据 出
DN2 存储空间 60%  -76% = -12% 说明这个节点数据少 别的节点迁移数据 进
DN3 存储空间 80%  -76% = 4%     说明这个节点数据多 往别的节点迁移数据 

avg=90 + 80 +60 /3 = 76% 

        注意: 不要在业务高峰期做  

            1.数据平衡 数据传输  带宽有关
            调优参数 :平衡的网络带宽  w 
        
        dfs.datanode.balance.bandwidthPerSec 100m 【2.x 默认是10m】

        每个节点数据几十T  需要数据平衡的数据 几十T  可以申请维护窗口时间 : 

        dfs.datanode.balance.bandwidthPerSec 临时调大 200M 
        2T 100m =》20s 
        2T 200M =》 10s 

4.单个DN节点 多块磁盘的数据平衡 
投产前规划: 
        DN 机器   10块 2T 【不做raid】  =》 20T   副本的

1.dn 配置多个磁盘

&lt;property&gt;
        &lt;name&gt;dfs.datanode.data.dir&lt;/name&gt;
        &lt;value&gt;/data01,/data02,/data03&lt;/value&gt;
&lt;/property&gt;
2.为什么要使用多块物理磁盘?

1.存储

2.因为多个磁盘的io也是叠加的
        每块磁盘 磁盘io 每秒 100m
        三块磁盘 1s 能 300m文件内容
        一块磁盘 1s 100m

3https://blog.csdn.net/u011250186/article/details/data01,/data02,/data03 

步骤
hdfs diskbalancer -plan  bigdata32  =&gt; 生成一个  bigdata32.plan.json 文件
hdfs diskbalancer -execute bigdata32.plan.json =》 执行disk 数据均衡计划文件 
dfs diskbalancer -query bigdata32

生产上 当你发现 磁盘写入不均衡 可以做一下 【一般 一个月 半个月 做一次即可】

小讯
上一篇 2025-04-30 12:09
下一篇 2025-05-03 09:23

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/191502.html