HDFS-异常大全-《每日五分钟搞定大数据》
点击看《每日五分钟搞定大数据》完整思维导图以及所有文章目录
问题1:Decomminssioning退役datanode(即删除节点) 1.配置exclude:
dfs.hosts.exclude
/data/hadoop/excludes
复制代码
在/data/hadoop/excludes文件添加要退役的节点ip(可同时退役多个,一个一行)
2.配置完后刷新节点
# $HADOOP_HOME/bin/hadoop dfsadmin-refreshNodes
复制代码
3.查看各节点状态
# $HADOOP_HOME/bin/hadoop dfsadmin -report
复制代码
4.进度可在HDFS的50070可视化界面的Decommissioning处查看
Under replicated blocks : 有备份的blocks
Blocks with no live replicas : 没有存活备份的blocks(存备份的datanode下线了)
Under Replicated Blocks In files under construction : 备份数不够的blocks
5.另外有暴力的方式:
直接停datanode,hadoop的balance机制会自动将备份数不足3份(可配置)的blocks重新备份,注意这个方式只可以一次停一台机器,不然可能会出现missing blocks。
问题2:出现corupt block,missing blocks 1.原因: 某个节点的datanode的blocks丢失,且没有副本
查看blocks信息以及有问题的blocks:
hdfs fsck /
复制代码
2.解决办法: 1)若是你停止了datanode且数据还没丢失则重启即可
2)数据丢失且其他节点没有副本则只能将这些blocks清理
hadoop fsck -move|-delete
复制代码
3)出现这种情况可以尝试hdfs dfs -get 下载有问题的文件,若报错则只能用1)2)的方式解决,若可以get下来将文件重新put上去也可解决问题。
问题3:出现invalidate block 1.原因: 当触发NAMENODE的双活切换(active-namenode给zk的心跳超时会发生) Datanode增量汇报该block-datanode映射给 namenode(切换后的active namenode)的时候,edit log还没从JournalNode同步过来,这时在namenode中已经有了block-datanode映射(从刚才datanode的report中来),但是还没有block-file映射(从edits文件里面来),导致namenode认为这个块不属于任何文件,定义为该块为invalidate block。
这个在后台日志可以查到(后台standby没有完全变成activenamenode之前,会出现包含 invalidate block 的后台日志。)
edits文件(包含block-file映射): 对于HDFS文件来说,包含的信息有修改时间、访问时间、块大小和组成一个文件块信息等;而对于目录来说,包含的信息主要有修改时间、访问控制权限等信息
2.解决办法: 重新上报block信息
hdfs dfsadmin -triggerBlockReport datanode_ip:port
复制代码
评论不能及时回复可直接加公众号提问或交流,知无不答,谢谢 。
【HDFS-异常大全-《每日五分钟搞定大数据》】
推荐阅读
- python-安装sublime遇到异常
- Android|Android BLE蓝牙连接异常处理
- C#中类的异常处理详解
- 教你如何做一个好看的表格,excel使用技巧大全
- php异常处理
- 使用sqlalchemy|使用sqlalchemy orm 的model序列化,解决返回model的异常
- 权限管理-linux常用命令大全[功能分类]
- Linux|Linux sed 使用大全
- 20170323
- WebAPI|WebAPI 多对多对象输出json异常()