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
[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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)