1.1 背景
由于最近集群磁盘报警频繁,需要对磁盘进行扩容或者清理
1.2 方案
方案:减少副本数
考虑到成本问题我们选择了暂时性的解决的方案减小副本数。操作如下:
1.2.1 修改副本数为2副本
在HADOOP的hdfs-site.xml中找到dfs.replication项,修改为2,分发同步到集群各个节点后,重启HDFS。
<!-- 指定副本数 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
如果是datasophon管理hdfs,在页面修改
2、但这样只能保证新写入的块副本数变为2,原有块仍然是3副本,因此还需要执行命令
hdfs dfs -setrep 2 -R -w /dw
4.如果配置了Kerberos,需要使用hdfs用户认证Kerberos执行
5.执行报错解决
Caused by: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot set replication for /data/bid_project/bid_project_t_zx_bid_company_message/.hoodie/.aux/ckp_meta/20231212131336469.COMPLETED. Name node is in safe mode.
The reported blocks 1206 needs additional 36 blocks to reach the threshold 0.9990 of total blocks 1244.
The minimum number of live datanodes is not required. Safe mode will be turned off automatically once the thresholds have been reached. NamenodeHostName:datasophon01
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.newSafemodeException(FSNamesystem.java:1577)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkNameNodeSafeMode(FSNamesystem.java:1564)
... 14 more
6.关闭namenode安全模式
(1)bin/hdfs dfsadmin -safemode get (功能描述:查看安全模式状态)
(2)bin/hdfs dfsadmin -safemode enter (功能描述:进入安全模式状态)
(3)bin/hdfs dfsadmin -safemode leave (功能描述:离开安全模式状态)
(4)bin/hdfs dfsadmin -safemode wait (功能描述:等待安全模式状态)
其中/dw是指定的路径,也就是你需要将那个路径三副本变为2副本,-R参数则表示包含子目录。 通过执行
说明HDFS中的“fsck”命令用于检查文件系统的一致性和健康状况。它检查文件系统的元数据,验证文件和目录的完整性,并报告它发现的任何不一致或错误。
hdfs fsck /dw
命令,观察Average block replication
一项,可以看出副本调整的过程是否已经完成。 最后我们发现缩小副本数后,某些数据节点的磁盘占用下降巨大。造成集群数据分布不均,因此需要进行 3、数据rebalance。
参考文章
《hadoop集群中存在配置较低的数据节点应用如何应对磁盘数据溢满的问题之rebalance》
链接: hdfs副本缩减