当前位置:网站首页 > R语言数据分析 > 正文

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




Hadoop框架包括下述三个个模块
 
HDFS:Hadoop集群中最根本的文件系统(数据存储)


     一个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   =>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 =>  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
 
#内存:
<property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>4096</value>
</property>
<property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>1024</value>
</property>
<property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>2048</value>
</property>
 
#cpu: 
<property>
        <name>yarn.nodemanager.resource.pcores-vcores-multiplier</name>
        <value>2</value>
</property>
<property>
        <name>yarn.nodemanager.resource.cpu-vcores</name>
        <value>4</value>
</property>
<property>
        <name>yarn.scheduler.minimum-allocation-vcores</name>
        <value>1</value>
</property>
<property>
        <name>yarn.scheduler.maximum-allocation-vcores</name>
        <value>2</value>
</property>
 
同步到其他:[hadoop@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 
<property>
        <name>io.compression.codecs</name>
        <value>org.apache.hadoop.io.compress.BZip2Codec,
        org.apache.hadoop.io.compress.SnappyCodec,
        org.apache.hadoop.io.compress.GzipCodec,
        org.apache.hadoop.io.compress.DefaultCodec
        </value>
</property>
 mapred-site.xml: 
1.先打开压缩的开关
2.map reduce 输出 压缩算法
reduce: 开关
mapreduce.output.fileoutputformat.compress
 
<property>
        <name>mapreduce.output.fileoutputformat.compress</name>
        <value>true</value>
</property>
 
mapreduce.output.fileoutputformat.compress.codec 
 
<property>
        <name>mapreduce.output.fileoutputformat.compress.codec</name>
        <value>org.apache.hadoop.io.compress.BZip2Codec</value>
</property>
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 配置多个磁盘

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



1.存储

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


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

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


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

到此这篇hadoop 查看yarn队列(hadoop查看namenode)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • traceparts零件库(traceparts零件库怎么直接导出零件)2025-05-28 16:09:06
  • cra什么意思中文(craic是什么意思)2025-05-28 16:09:06
  • resnet网络作者(resnet论文)2025-05-28 16:09:06
  • redhat挂载u盘(redhat挂载u盘命令)2025-05-28 16:09:06
  • prgrm怎么读(prblms怎么读)2025-05-28 16:09:06
  • ora怎么读音(oral怎么读?)2025-05-28 16:09:06
  • orexis怎么读(orifice怎么读)2025-05-28 16:09:06
  • yarn命令查看进程(查看yarn状态的命令)2025-05-28 16:09:06
  • seaturtle英语怎么读(seatbelts英语怎么读)2025-05-28 16:09:06
  • dric怎么读(drcchen怎么读)2025-05-28 16:09:06
  • 全屏图片