本文主要是介绍hadoop生产集群离线datanode(遇到的问题及解决方法),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1、修改namenode节点的hdfs-site.xml(master主机)
<property> <name>dfs.hosts.exclude</name> <value>file_path</value>
</property>
2、file_path文件中存储要离线的几点名称
3、执行命令 hdfs dfsadmin -refreshNodes
- 问题:执行到最发现50070界面数据块不发生变化,查看namenode发现问题:2017-02-08 15:19:10,145 WARN org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy: Failed to place enough replicas, still in need of 1 to reach 2 (unavailableStorages=[DISK, ARCHIVE], storagePolicy=BlockStoragePolicy{HOT:7, storageTypes=[DISK], creationFallbacks=[], replicationFallbacks=[ARCHIVE]}, newBlock=false) All required storage types are unavailable: unavailableStorages=[DISK, ARCHIVE], storagePolicy=BlockStoragePolicy{HOT:7, storageTypes=[DISK], creationFallbacks=[], replicationFallbacks=[ARCHIVE]}
原因:namenode中记录的文件副本数和实际存储的副本数不一致,可以使用 hadoop fsck / >test.log命令检查
解决方法: hdfs hadoop dfs -setrep -w 2 -R / 将机器中文件的副本数统一 然后再执行hadoop fsck / >test1.log检查,看是否有Missing
5、退役完成(block 转移结束),后续hadoop会自动删除datanode上的数据,也可以直接停掉datanode,手动删除数据
下线tasktracker or nodemanager(过程与下线datanode类似,一下列举不同点)
如下配置项到mapred-site.xml
yarn rmadmin -refreshNodes
若没启用yarn,即下线tasktracker时执行:
hadoop mradmin -refreshNodes
这篇关于hadoop生产集群离线datanode(遇到的问题及解决方法)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!