HDFS shell 快查

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 ]
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 /

你可能感兴趣的:(HDFS shell 快查)