本篇文章主要列举一些Hadoop常用场景
主要是以下几种
高可用集群
节点新增/减少/拉黑
HDFS数据迁移
大量小文件存储
高可用集群
一句话概括 双namenode消除单点故障
过程:
对active Namenode进行的任何操作,都会同步到共享存储设备(从NAS NSF挂载)到一个目录,备用节点会监控共享存储设备,发现更改同步到自身,发生故障时进行切换
Hadoop节点上下线
上线
-
首先在slave配置中新加节点并且保证dfs.exclude文件为空
-
刷新node节点 ./hdfs dfsadmin -refreshNodes
-
直接启动节点./hadoop-daemon.sh datanode
-
如果是部署在yarn上,则 ./yarn-daemon.sh start nodemanager
-
均衡broker ./bin/start-balancer.sh -threshold 5
-
速度慢的话 ,修改带宽
<property> 2 <name>dfs.balance.bandwidthPerSec</name> 3 <value>1048576</value> 4 <description> 5 Specifies the maximum amount of bandwidth that each datanode 6 can utilize for the balancing purpose in term of 7 the number of bytes per second. 8 </description> 9 </property>
下线
- 需要配置的文件
namenode节点的dfs.exclude文件,添加下线节点即可
resourcemanager节点上的yarn.exclude文件,同样添加下线节点
- 刷新Namenode和ResourceManager
hdfs dfsadmin -refreshNodes //刷新Namenode节点
yarn rmadmin -refreshNodes //刷新ResourceManager节点
-
打开web浏览器,查看节点状态为udecommission in progress 表示正在退役中,当变为decommissioned 表明该节点数据块已被全部复制,所以不用担心下线数据丢失的问题
- **注意:**如果集群节点副本数为n,则服役的节点必须>=n,否则不能下线成功
-
停止datanode和namenode节点
./sbin/hadoop-daemon.sh stop datanode
./sbin/yarn-daemon.sh stop nodemanager
-
数据不平衡,参考上文,使用再平衡命令进行修改
Namenode 和DataNode多目录配置
原因:增加可靠性
namenode
-
修改hfds.site配置,将dfs.namenode.name.dir 下的配置文件以多个逗号隔开
-
配置已成功,需要格式化重启
删除logs和data文件
rm -rf data/* logs/*
-
格式化namenode
./sbin/hdfs namenode -format
-
启动集群
思考一个问题,生产环境上敢格式化namenode吗?
DataNode
和namenode类似,修改hdfs.site配置文件中的dfs.datanode.data.dir属性,多个文件以逗号隔开
HDFS小文件合并
使用HDFS存档文件或者HAR文件
原理:类似于在小文件外面包了一层,对Namenode来说是一个整体,对内还是一个一个的独立文件
操作: 使用archive命令归档
-
bin/hadoop archive -archiveName a.har -p /usr/local/tmp
HDFS数据迁移
应用场景:集群升级情况
使用命令:distcp
过程:
-
新旧集群都要配置对方的主机名
-
执行命令 hadoop distcp hftp://hadoop1.x-namenode:50070/usr/local /usr/tmp
-
修改hdfs.site.xml配置
<property> <name>dfs.checksum.type</name> <value>CRC32</value> <description> when transfer data from hadoop 1.x to hadoop 2.x the data block checksum in hadoop 1.x is crc32 and hadoop 2.x is crc32c . transfer data will fail . </description> </property>