Skip to content

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/
  1. 格式化集群并启动
sh
[jack@hadoop102 hadoop-3.3.6]$ bin/hdfs namenode -format
[jack@hadoop102 hadoop-3.3.6]$ sbin/start-dfs.sh
  1. 查看结果
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 /

发现不一致(一个有数一个没有)