Hadoop四

1.hdfs命令

hdfs dfs -linux命令  操作是一样的

hadoop fs <==>hdfs dfs  等价的

   2.查看当前版本 压缩情况

[ssn@localhost hadoop]$ hadoop checknative
2021-12-17 04:32:58,241 INFO bzip2.Bzip2Factory: Successfully loaded & initialized native-bzip2 library system-native
2021-12-17 04:32:58,247 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library
2021-12-17 04:32:58,255 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-12-17 04:32:58,265 WARN erasurecode.ErasureCodeNative: ISA-L support is not available in your platform... using builtin-java codec where applicable
2021-12-17 04:32:58,398 INFO nativeio.NativeIO: The native code was built without PMDK support.
Native library checking:
hadoop:  true /home/ssn/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.

如果压缩是false,一般需要自己编译,去支持压缩的

比如:

如何编译hadoop3.2源码增加snappy压缩功能_smartsteps的博客-CSDN博客_hadoop snappy 编译hadoop3.2.2源码编译安装软件下载解压安装包安装阶段1.安装jdk1.82.安装maven3.83.yum 安装源码编译相关依赖包4.安装protobuf5.安装CMake3.136.安装findbugs7.安装snappy8.编译hadoop软件下载所有软件安装包都放在了百度网盘里,请自取。链接:https://pan.baidu.com/s/1uJH5XYgyalQuVe_-5uYGUw提取码:lj2h解压安装包创建文件夹 /home/hadoopmkdir /home/hadoohttps://blog.csdn.net/smartsteps/article/details/119828617?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163968702616780255273874%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=163968702616780255273874&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-119828617.pc_search_em_sort&utm_term=hadoop-3.2.2+%E7%BC%96%E8%AF%91+%E5%8E%8B%E7%BC%A9+snappy&spm=1018.2226.3001.4187但是如果我们使用CDH系列的,不用担心,压缩是自带的,都是true

3.打印当前大数据环境类的路径

[ssn@localhost hadoop]$ hadoop classpath
/home/ssn/app/hadoop/etc/hadoop:/home/ssn/app/hadoop/share/hadoop/common/lib/*:/home/ssn/app/hadoop/share/hadoop/common/*:/home/ssn/app/hadoop/share/hadoop/hdfs:/home/ssn/app/hadoop/share/hadoop/hdfs/lib/*:/home/ssn/app/hadoop/share/hadoop/hdfs/*:/home/ssn/app/hadoop/share/hadoop/mapreduce/lib/*:/home/ssn/app/hadoop/share/hadoop/mapreduce/*:/home/ssn/app/hadoop/share/hadoop/yarn:/home/ssn/app/hadoop/share/hadoop/yarn/lib/*:/home/ssn/app/hadoop/share/hadoop/yarn/*

4.安全模式

hdfs dfsadmin     [-safemode <enter | leave | get | wait>]

安全模式关闭:off状态,读写正常

查询log(日志)查看到safemode:on状态,必然集群是有问题的,这个时候可以手动从安全模式离开,就能正常提供服务了

安全模式下:可以读,不可以写

进入安全模式:

hdfs dfsadmin -safemode enter

离开安全模式

hdfs dfsadmin -safemode leave

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

5.查看集群的状况

hdfs fsck /

The filesystem under path '/' is CORRUPT 受损

The filesystem under path '/' is HEALTHY 健康

6.集群平衡

DN1 DN2节点和节点之间的平衡

DN1:/data01  /data02  单个节点多盘的平衡(Hadoop2版本无此功能,Hadoop3版本有)

[ssn@localhost sbin]$ hdfs balancer -policy datanode -threshold 10

threshold 10.0  :

每个节点磁盘使用率-平均磁盘使用率<10%

举例:

        DN1 90%-76%=14%  多了4%

        DN2 80%-76%=4%  满足

        DN3 60%-76%=-16% 少了16%

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

官方是有脚本存在的

[ssn@localhost ~]cd /home/ssn/app/hadoop/sbin
[ssn@localhost sbin]cat start-balancer.sh

 单个节点和多盘的平衡:

hdfs diskbalancer

命令帮助

 

         

dfs:disk.balancer.enabled : true

执行命令:先生产计划,再执行计划

hdfs diskbalancer -plan localhost
hdfs diskbalancer -execute localhost.plan.json

7.回收站

linux没有回收站,非要做回收站,如何实现?

[ssn@localhost hadoop]$ which rm
/bin/rm

a.狸猫换太子

Linux回收站功能的实现_xunming的专栏-CSDN博客_linux回收站RM命令改造定时清空回收站记录删除时间使用方式RM命令改造vim /etc/bashrc在文件的最前端添加如下代码#修改rm命令alias rm=delete #命令别名,通过delete来实现rm改为mvalias r=deletealias rl='ls /trash' #rl 命令显示回收站中的文件alias ur=undelfile ...https://blog.csdn.net/diyangxia/article/details/79310395?ops_request_misc=&request_id=&biz_id=102&utm_term=linux%E5%9B%9E%E6%94%B6%E7%AB%99&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-79310395.nonecase&spm=1018.2226.3001.4187hdfs是有回收站的

官方文档配置参数  ,单位是分钟      

生产上必须配置

保存7天参数配置:

[ssn@localhost ~]$ cd app/hadoop/etc/hadoop/
[ssn@localhost hadoop]$ vi core-site.xml 
追加  <property>
        <name>fs.trash.interval</name>
        <value>10080</value>
    </property>

 配置完成,重启hadoop服务

 测试:

[ssn@localhost hadoop]$ hdfs dfs -ls /test
Found 1 items
-rw-r--r--   1 ssn supergroup         51 2021-12-16 19:01 /test/1.log
[ssn@localhost hadoop]$ hdfs dfs -rm /test/1.log
2021-12-17 19:25:48,084 INFO fs.TrashPolicyDefault: Moved: 'hdfs://localhost:9000/test/1.log' to trash at: hdfs://localhost:9000/user/ssn/.Trash/Current/test/1.log
[ssn@localhost hadoop]$ 


[ssn@localhost hadoop]$ hdfs dfs -ls hdfs://localhost:9000/user/ssn/.Trash/Current/test/1.log
-rw-r--r--   1 ssn supergroup         51 2021-12-16 19:01 hdfs://localhost:9000/user/ssn/.Trash/Current/test/1.log
[ssn@localhost hadoop]$ hdfs dfs -cat hdfs://localhost:9000/user/ssn/.Trash/Current/test/1.log
Eason
ssn
13
19zx
18lianwu
a b c d e
www.baidu.com

 8.mapreduce

计算框架

map     映射:是指一组数据按照一定的规则映射成一组

reduce 规约:

举SQL例说明:

SQL:

id          name

1             a

2              b

3              c

4              d

映射 select id +10,name from t;

规约 select name,sum(id)

from(

        select id+10 as id,name from t

)group by name;

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

9.mapreduce on yarn架构设计

  a.container 容器 虚拟化概念

        是一定的内存和CPU的资源组合

b.主从架构

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值