1 NameNode多目录配置
NameNode本地目录可以配置多个,每个目录存放内容相同,增加可靠性。
在hdfs-site.xml中添加,每台服务器节点的磁盘不同,可以选择不分发。
<property><name>dfs.namenode.name.dir</name><value>file://${hadoop.tmp.dir}/dfs/name1,file://${hadoop.tmp.dir}/dfs/name2</value>
</property>
关闭集群,删除三台节点的data和logs文件,最后再格式化重启集群。
myhadoop.sh stop
rm -rf data/ logs/
bin/hdfs namenode -format
sbin/start-dfs.sh
结果name1和name2的内容一模一样。
2 DataNode多目录配置
DataNode配置多个目录,每个目录存储的数据不一样(且数据不是副本),可以用于增加磁盘、硬盘,磁盘新增之后就会出现负载不均衡的问题。
在hdfs-site.xml中添加
<property><name>dfs.datanode.data.dir</name><value>file://${hadoop.tmp.dir}/dfs/data1,file://${hadoop.tmp.dir}/dfs/data2</value>
</property>
向一个集群上传文件,可以看到两个文件夹内容不一致。
3 集群数据均衡之磁盘间数据均衡
当硬盘空间不足时增加一块硬盘后,新加的硬盘是没有数据的,通过执行磁盘数据均衡命令使得磁盘负载均衡。
(1)生成均衡计划(我们只有一块磁盘,不会生成计划)
hdfs diskbalancer -plan hadoop103
(2)执行均衡计划
hdfs diskbalancer -execute hadoop103.plan.json
(3)查看当前均衡任务的执行情况
hdfs diskbalancer -query hadoop103
(4)取消均衡任务
hdfs diskbalancer -cancel hadoop103.plan.json