HDFS设计的主要目的是对海量数据进行处理,也就是说在其上能够储存很大量文件,HDFS提供多种的访问的策略,首先我们来认识其通过shell接口的访问方式。
hdfs shell与linux命令基本相同。
创建文件夹 hdfs dfs -mkdir /data 上传文件 hdfs dfs -put me.txt /data//保留原文件hdfs dfs -copyFromLocal weibo.txt /middle/weibo//不保留原文件hdfs dfs -moveFromLocal weibo.txt /middle/weibo 查看文件内容 hadoop dfs -text /middle/weibo/weibo.txt 文件复制到本地 hdfs dfs -get /middle/weibo/weibo.txt hadoop fs -copyToLocal /middle/weibo/weibo.txt 删除文件或文件夹 hadoop fs -rmr /middle/weibo 集群间传数据 hadoop distcp hdfs://qq58053439:9000/weather hdfs://qq:9000/middle
HDFS fsck
move: 移动损坏的文件到/lost+found目录下
delete: 删除损坏的文件
openforwrite: 输出检测中的正在被写的文件
list-corruptfileblocks: 输出损坏的块及其所属的文件
files: 输出正在被检测的文件
blocks: 输出block的详细报告 (需要和-files参数一起使用)
locations: 输出block的位置信息 (需要和-files参数一起使用)
racks: 输出文件块位置所在的机架信息(需要和-files参数一起使用
查看HDFS中某个文件的块block分布
hadoop fsck /your_file_path -files -blocks -locations -racks
检测存在那些坏块
hdfs fsck /
删除坏块
hdfs fsck / -delete
HDFS balancer
机器其实非常容易出现机器与磁盘利用率不平衡的情况,比如在集群中添加新的数据节点。机器与磁盘利用率不平等会导致很多问题,比如程序无法更好的利用本地计算机的优势。
HDFS balancer可以使计算机达到平衡状态,如果磁盘利用率偏差小于10%,我们认为达到了平衡状态。可以使用下面命令
$HADOOP_HOME/bin/start-balancer.sh –t 10
另外需要注意的地方是,由于HDFS需要启动单独的Rebalance Server来执行Rebalance操作,所以尽量不要在NameNode上执行start-balancer.sh,而是找一台比较空闲的机器。
1) hadoop balance工具的用法:
To start:
bin/start-balancer.sh [-threshold <threshold>]
Example: bin/ start-balancer.sh
start the balancer with a default threshold of 10%
bin/ start-balancer.sh -threshold 5
start the balancer with a threshold of 5%
To stop:
bin/ stop-balancer.sh
影响hadoop balance工具的几个参数:
-threshold 默认设置:10,参数取值范围:0-100,参数含义:判断集群是否平衡的目标参数,每一个 datanode 存储使用率和集群总存储使用率的差值都应该小于这个阀值 ,理论上,该参数设置的越小,整个集群就越平衡,但是在线上环境中,hadoop集群在进行balance时,还在并发的进行数据的写入和删除,所以有可能无法到达设定的平衡参数值。
dfs.balance.bandwidthPerSec 默认设置:1048576(1 M/S),参数含义:设置balance工具在运行中所能占用的带宽,设置的过大可能会造成mapred运行缓慢
加入和移除Datanode
增加
在一个节点中安装已存在的datanode安装包
如果需要连接yarn需要在yarn-site.xml文件中添加参数yarn.resourcemanager.nodes.include-path指定的文件中添加需要添加的NodeManager
sbin/hadoop-deamon.sh start datanode
yarn-daemon.sh start nodemanager
hadoop dfsadmin
report的输出来确定新节点是否已连接
删除
将datanode加入黑名单中,配置在dfs.hosts.exclude中
bin/hadoop dfsadmin -refreshNodes
添加或者删除DataNode后,可能会需要调节已上传文件的副本数:
hadoop fs -setrep -R replicationNumber /
作者:张晓天a
链接:https://www.jianshu.com/p/612d9e121613