yarn的资源调度流程

yarn的资源调度流程,第1张

yarn的资源调度流程

1.hdfs命令

hdfs dfs -linux命令 *** 作是一样
hadoop fs 《==》 hdfs dfs命令

2. 查看当前版本 压缩情况
[ruoze@ruozedata001 ~]$ hadoop checknative  
2021-11-28 14:05:52,092 INFO bzip2.Bzip2Factory: Successfully loaded & initialized native-bzip2 library system-native
2021-11-28 14:05:52,094 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library
2021-11-28 14:05:52,097 WARN zstd.ZStandardCompressor: Error loading zstandard native libraries: java.lang.InternalError: Cannot load libzstd.so.1 (libzstd.so.1: cannot open shared object file: No such file or directory)!
2021-11-28 14:05:52,101 WARN erasurecode.ErasureCodeNative: ISA-L support is not available in your platform... using builtin-java codec where applicable
2021-11-28 14:05:52,214 INFO nativeio.NativeIO: The native code was built without PMDK support.
Native library checking:
hadoop:  true /home/ruoze/app/hadoop-3.2.2/lib/native/libhadoop.so.1.0.0
zlib:    true /lib64/libz.so.1
zstd  :  false 
snappy:  true /lib64/libsnappy.so.1
lz4:     true revision:10301
bzip2:   true /lib64/libbz2.so.1
openssl: false Cannot load libcrypto.so (libcrypto.so: cannot open shared object file: No such file or directory)!
ISA-L:   false libhadoop was built without ISA-L support
PMDK:    false The native code was built without PMDK support.
[ruoze@ruozedata001 ~]$ 


如果压缩是false,一般需要自己编译 支持压缩,
但是我们是使用CDH系列的,不用担心 

3.
[ruoze@ruozedata001 ~]$ hadoop classpath
/home/ruoze/app/hadoop/etc/hadoop:/home/ruoze/app/hadoop/share/hadoop/common/lib/*:/home/ruoze/app/hadoop/share/hadoop/common/*:/home/ruoze/app/hadoop/share/hadoop/hdfs:/home/ruoze/app/hadoop/share/hadoop/hdfs/lib/*:/home/ruoze/app/hadoop/share/hadoop/hdfs/*:/home/ruoze/app/hadoop/share/hadoop/mapreduce/lib/*:/home/ruoze/app/hadoop/share/hadoop/mapreduce/*:/home/ruoze/app/hadoop/share/hadoop/yarn:/home/ruoze/app/hadoop/share/hadoop/yarn/lib/*:/home/ruoze/app/hadoop/share/hadoop/yarn/*
[ruoze@ruozedata001 ~]$ 

4. 安全模式
hdfs dfsadmin  [-safemode ]

安全模式关闭 : 读写正常
log 查看到 safemode: on,必然集群是有问题的,这个时候你可以手动从安全模式离开,就能正常对外提供服务。

hdfs dfsadmin -safemode enter
hdfs dfsadmin -safemode leave
写 读
11 00 10 01

drwxrwxr-x 3 ruoze ruoze 4096 Nov 26 22:24 tmp
[ruoze@ruozedata001 ~]$ hdfs dfs -put 1.log /tmp/
put: Cannot create file/tmp/1.log._COPYING_. Name node is in safe mode.
[ruoze@ruozedata001 ~]$ 
[ruoze@ruozedata001 ~]$ 
[ruoze@ruozedata001 ~]$ hdfs dfs -cat /1.log
jepson
ruoze
xingxing
a b c 
b a c
jepson
www.ruozedata.com ruoze a b c

做集群维护的时候,目标是不要有数据写入,那进入安全模式


5.检查

Target Replicas is 3 but found 1-2 live replica(s)
说明丢失1-2副本


6.集群平衡
6.1 DN1 DN2节点和节点之前的平衡 
balancer             run a cluster balancing utility
hdfs balancer -policy datanode -threshold 10

threshold = 10.0

每个节点磁盘使用率-平均磁盘使用率<10%
DN1  90% -76% = 14%   多了4%
DN2  80% -76% = 4%    满足
DN3  60% -76% = -16%  少了 -16% 

生产: 每天晚上业务低谷时期,定时执行该脚本

6.2 DN1: /data01(1T)  /data02(2T)  单个节点多盘的平衡  
diskbalancer         Distributes data evenly among disks on a given node

dfs.disk.balancer.enabled  : true
执行命令: 先生成计划  再执行 
hdfs diskbalancer -plan ruozedata001
hdfs diskbalancer -execute ruozedata001.plan.json


7.回收站

Linux 有回收站?
没有,但是非要做,怎么办?
https://www.cnblogs.com/qzqdy/p/9299595.html  


hdfs是有回收站的
[ruoze@ruozedata001 ~]$ hdfs dfs -rm /1.log
Deleted /1.log


 
        fs.trash.interval
        10080
 


[ruoze@ruozedata001 ~]$ hdfs dfs -rm /1.log
2021-11-28 14:58:06,479 INFO fs.TrashPolicyDefault: Moved: 'hdfs://ruozedata001:9000/1.log' to trash at: hdfs://ruozedata001:9000/user/ruoze/.Trash/Current/1.log
[ruoze@ruozedata001 ~]$ 

8.mapreduce
计算框架  生产不用  不得不学
map     映射: 是指一组数据按照一定的规则映射成一组

select id+10 as id ,name from t;

reduce  规约:  汇总
select name,sum(id) 
from 
(
select id+10 as id,name from t
) group by name;


SQL:
id name
1   a
2   b 
3   c
4   a


11   a  ruozedata001
12   b 
13   c
14   a  ruozedata100

【shuffle 洗牌】: 数据按照key进行网络传输规整到一起,按照计算规则计算。


9.mapreduce on yarn架构设计   面试题 *****
9.1 container 容器 虚拟化概念
是一定的内存和CPU的资源组合

9.2
主从架构
resourcemanager  rm
nodemanager      nm


reduce task 可能等到所有的map task跑完,才开始计算;
也有可能map task才跑60%,就开始计算。 主要看计算逻辑的嵌套。


9.2.1
client向rm提交应用程序(作业),其中包含application master和启动命令等;

9.2.2
applications manager会给这个作业,分配第一个container容器,来运行applicationmaster。

9.2.3 
application master就向applications manager注册,就可以在web界面查看作业的运行状态。

9.2.4
application master采取轮询的方式通过【RPC】协议向resource scheduler去申请和领取资源
(哪台DN机器,领取多少内存 CPU)

9.2.5
一旦application master拿到资源列表,就和对应的DN机器进行通信,要求启动container来运行task任务。

9.2.6
nm为task任务设置好运行的环境(container容器),将任务启动命令写在脚本里,通过脚本启动task。

9.2.7
然后各个task任务,通过【rpc】协议向application master主程序汇报进度和状态,以此可以随时掌握task的运行状态。
当task任务运行失败,也会重启container任务。

9.2.8
当所有的任务完成,application master向applications manager申请注销和关闭作业。
这个时候在web可以看任务是否完成,成功还是失败。


总结:
启动主程序,领取资源;1-4
运行任务,直到完成;  5-8
 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5624512.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存