HDFS—多目录
1. NameNode多目录配置
NameNode的本地目录可以配置成多个,且每个目录存放内容相同,增加了可靠性
1.1 修改hdfs-site.xml
xml
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name1,file://${hadoop.tmp.dir}/dfs/name2</value>
</property>
警告
因为每台服务器节点的磁盘情况不同,所以这个配置配完之后,可以选择不分发
1.2 停止集群,删除三台节点的data和logs中所有数据
sh
[jack@hadoop102 hadoop-3.3.6]$ rm -rf data/ logs/
[jack@hadoop103 hadoop-3.3.6]$ rm -rf data/ logs/
[jack@hadoop104 hadoop-3.3.6]$ rm -rf data/ logs/
- 格式化集群并启动
sh
[jack@hadoop102 hadoop-3.3.6]$ bin/hdfs namenode -format
[jack@hadoop102 hadoop-3.3.6]$ sbin/start-dfs.sh
- 查看结果
sh
[jack@hadoop102 dfs]$ ll
总用量 12
drwx------. 3 jack jack 4096 12月 11 08:03 data
drwxrwxr-x. 3 jack jack 4096 12月 11 08:03 name1
drwxrwxr-x. 3 jack jack 4096 12月 11 08:03 name2
检查name1和name2里面的内容,发现一模一样。
总结
配置NameNode多目录的过程中,如果前期搭建HDFS集群没有配置NameNode多目录,由于涉及到删除数据后面生产上也不会变动有关NameNode多目录的配置
2. DataNode多目录配置
DataNode可以配置成多个目录,每个目录存储的数据不一样(数据不是副本)
2.1 配置hdfs-site.xml
xml
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data1,file://${hadoop.tmp.dir}/dfs/data2</value>
</property>
其中hadoop.tmp.dir在hdfs-site.xml中已经提前配置
2.2 查看结果
sh
[jack@hadoop102 dfs]$ ll
总用量 12
drwx------. 3 jack jack 4096 4月 4 14:22 data1
drwx------. 3 jack jack 4096 4月 4 14:22 data2
drwxrwxr-x. 3 jack jack 4096 12月 11 08:03 name1
drwxrwxr-x. 3 jack jack 4096 12月 11 08:03 name2
2.3 向集群上传一个文件,再次观察两个文件夹里面的内容
sh
[jack@hadoop102 hadoop-3.3.6]$ hadoop fs -put wcinput/word.txt /
发现不一致(一个有数一个没有)