HDFS的数据平衡时突然断网或者断电导致数据异常

HDFS的数据平衡时突然断网或者断电导致数据异常

什么是平衡,为什么平衡

平衡:是为了让数据均衡的分布在DN节点上,不会至于数据的倾斜,便于数据的搜索和使用。
为什么平衡:
集群上经常会增添新的DataNode节点,或者人为干预将数据的副本数降低或者增加,有的时候发现集群的数据存储达到平顶。
会造成datanode数据存储不均衡,一个datanode使用了70%,而有一个只使用了30%.此时都需要进行数据的平衡

如何进行数据的平衡

1、datanode之间出现了数据不平衡的现象

可以执行hadoop提供的balancer,来进行datanode之间数据balance,默认hdfs的balance带宽是1M/s,这个可以通过参数来进行调整dfs.datanode.balance.bandwidthPerSec, dfs.balance.bandwidthPerSec
HDFS平衡器检测集群中使用过度或者使用不足的DataNode,并在这些DataNode之间移动数据块来保证负载均衡。如果不对平衡操作进行带宽限制,那么它会很快就会抢占所有的网络资源,不会为Mapreduce作业或者数据输入预留资源。参数dfs.balance.bandwidthPerSec定义了每个DataNode平衡操作所允许的最大使用带宽,这个值的单位是byte,这是很不直观的,因为网络带宽一般都是用bit来描述的。因此,在设置的时候,要先计算好。DataNode使用这个参数来控制网络带宽的使用,但不幸的是,这个参数在守护进程启动的时候就读入,导致管理员没办法在平衡运行时来修改这个值,如果需要调整就要重启集群
#设置带宽,默认是1048576(1M/s),默认单位是字节,如果带宽允许的话可以设置为100M/s

hdfs dfsadmin -setBalanacerBandwidth 1048576
#允许的disk 数据差距,是一个百分数,例如我写的是5,也就是容忍datanode数据的差距是5%,一般设置的参数是10%
hdfs balancer -threshold 5
当然也可以进行单个节点进行数据的平衡
#选择需要进行数据balance的datanode
hdfs balancer -include spark-worker1,sparkworker2
或者有CDH的管理界面,可以在界面上继续参数的修改
点击模块HDFS,选择配置在搜索框里输入 “带宽”,可以看下系统默认的带宽值,以及输入 banlance ,也可以看到默认的值

当意外数据平衡失败,因为网络异常或者断电等非正常原因

因为非正常的原因导致部分数据已经平衡到其他节点上,此时balance的服务已经异常退出,如果没有退出,需要把服务停掉,因为HDFS在运行Balancer的时候,会将运行Balancer的主机名写入到balancer.id这个文件里面,通过这个Mark File来检测Balancer是否运行,该文件存放在HDFS上的/system目录下。
1.查看/system目录下的balancer.id文件内容,内容为空,确实没有正在运行Balancer的主机
2删除balancer.id这个文件
3.此时将各个DN节点进行重启,同时需要将NN节点重启,在将整个集群进行重启,目的就是将数据进行重新融合。
4.将异常网络的服务器进行节点的下掉和角色的提出,下掉后需要将其他DN的节点重启以及NN和集群的重启,此时数据会均衡到现有的服务器,同时进行hdfs 的健康检查
1.
hadoop1.x时候的命令,hadoop2.x也可使用:
hadoop fsck /
在hadoop2.0之后,可以使用新命令:
hdfs fsck /
返回结果截图如下:
在这里插入图片描述status:代表这次hdfs上block检测的结果
Total size: 代表/目录下文件总大小
Total dirs:代表检测的目录下总共有多少个目录
Total files:代表检测的目录下总共有多少文件
Total symlinks:代表检测的目录下有多少个符号连接
Total blocks(validated):代表检测的目录下有多少个block块是有效的
Minimally replicated blocks:代表拷贝的最小block块数
Over-replicated blocks:指的是副本数大于指定副本数的block数量
Under-replicated blocks:指的是副本数小于指定副本数的block数量
Mis-replicated blocks:指丢失的block块数量
Default replication factor: 3 指默认的副本数是3份(自身一份,需要拷贝两份)
Missing replicas:丢失的副本数
Number of data-nodes:有多少个节点
Number of racks:有多少个机架
若文件的副本数不满足3副本或者是自己设置的副本数,此时需要执行副本数量的修复
1.首先查找丢失的block
hdfs fsck / -files -blocks
2.进行丢失的副本修复,修复指定路径的hdfs文件,尝试多次
hdfs debug recoverLease -path 文件位置 -retries 重试次数
3.如果无法修复,列出损坏的块,此时的是无法修复,需要进行数据重入
hdfs fsck -list-corruptfileblocks
5.若数据检查时正常的说明数据已经自动修复完成,此时需要进行节点的下架,同时将数据进行平衡,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值