date: 2020-12-08title: HDFS中NameNode及DataNode的多目录配置 #标题
tags: HDFS #标签
categories: Hadoop # 分类

记录下HDFS中的namenode和datanode的多目录配置方式。

namenode配置多目录后每个目录下的文件及内容是一致的,增加了冗余性,提高可靠性;datanode配置多目录后,每个目录下的内容是不一样的,是为了提高磁盘读写速度以及增加磁盘空间。

配置NameNode多目录

多目录配置是为了增加集群的安全性,可以将第一个磁盘挂载到第一个目录上,第二个磁盘挂载到第二个目录上。这样当其中一块磁盘出现故障时,NameNode储存元数据也不会丢失。

  1. $ pwd
  2. /apps/usr/hadoop-2.9.2
  3. $ vim etc/hadoop/hdfs-site.xml # 编辑此配置文件,写入以下内容,以便指定多目录
  4. <property>
  5. <name>dfs.namenode.name.dir</name>
  6. <value>file:///${hadoop.tmp.dir}/dfs/name,file:///data/dfs/name2</value>
  7. </property>
  8. # 注:指定的 /data/dfs/name2 目录无需提前创建。
  9. # 如果之前启动了hdfs,请先自行停止(在namenode上执行即可)
  10. $ stop-dfs.sh
  11. # 所有hadoop集群几点中都删除data和logs目录(相当于格式化集群,谨慎操作)
  12. $ rm -rf data/ logs/
  13. # 将修改后的文件分发至其他节点
  14. $ scp etc/hadoop/hdfs-site.xml 192.168.20.3:/apps/usr/hadoop-2.9.2/etc/hadoop/
  15. $ scp etc/hadoop/hdfs-site.xml 192.168.20.4:/apps/usr/hadoop-2.9.2/etc/hadoop/
  16. # 格式化namenode
  17. $ hdfs namenode -format
  18. ......... #省略部分输出
  19. /current/fsimage.ckpt_0000000000000000000 of size 323 bytes saved in 0 seconds .
  20. 20/12/08 06:28:38 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
  21. 20/12/08 06:28:38 INFO namenode.NameNode: SHUTDOWN_MSG:
  22. /************************************************************
  23. SHUTDOWN_MSG: Shutting down NameNode at hadoop01/192.168.20.2
  24. ************************************************************/
  25. # 输出以上信息,表示格式化成功。
  26. # 至此,namenode的多目录配置完成,两个目录下存放的文件内容一致
  27. # 可通过比对md5值来判断
  28. $ md5sum /data/dfs/name2/current/fsimage_0000000000000000000
  29. 105bac744cba907e19fee9638eb784ec /data/dfs/name2/current/fsimage_0000000000000000000
  30. $ md5sum data/tmp/dfs/name/current/fsimage_0000000000000000000
  31. 105bac744cba907e19fee9638eb784ec data/tmp/dfs/name/current/fsimage_0000000000000000000
  32. # 确认无误后,启动hdfs(在namenode上执行即可)
  33. $ start-dfs.sh # 启动

配置dataNode多目录

DataNode配置多目录是因为一个目录下面挂的硬盘不够用,所以多加了几个目录。这里要和副本数区分开,副本数是配置hdfs中数据存放的份数,也就是备份数,防止数据丢失的。

  1. $ pwd
  2. /apps/usr/hadoop-2.9.2
  3. $ vim etc/hadoop/hdfs-site.xml # 编辑此配置文件,写入以下内容,以便指定多目录
  4. <property>
  5. <name>dfs.datanode.data.dir</name>
  6. <value>file:///${hadoop.tmp.dir}/dfs/data1,file:///data/dfs/data2</value>
  7. </property>

可以参考hadoop2.0的datanode多目录数据副本存放策略来了解datanode多目录副本存放策略。