hadoop容错

保证Hadoop中数据存储的可靠性和完整性至关重要。HDFS的容错机制,其中包括NameNode(元数据节点)的单点失效解决机制、Block数据块的多副本存储机制、NameNode的心跳检测机制、数据存储等。而数据处理可靠性方面,MapReduce。相对于HDFS来说,容错较简单,主要是任务出错重做机制。


1. HDFS中NameNode单点问题


        不同版本的Hadoop有不同的处理切制。对0.20.x版来说,单点问题主要是依靠SecondaryNameNod。机制解决。此机制中主要是一个SccondaryNameNode节点周期性地做CheckPoint,就是从NameNode节点上下载磁盘镜像和日志文件,在本地将日志合并到镜像中,产生新的镜像,将此镜像上传到NameNode节点,NameNode重启时就会加载此最新镜像,这样就完成了一次CheckPointo这种机制只保存从上次CheckPoint之前的元数据,而CheckPoint之后的元数据在NameNode失效后就将丢失,所以对于解决单点问题来说并不很理想。

    对此,FaceBook提出了一套机制来解决NameNode的单点问题,就是 Avatar机制。在此机制中,设置了一个Standby NameNod。节点,而原来的 Na-Node被称为PrimaryNameNode,另外还有一个节点NFS (Network File System),用来存储Primary NameNode的日志。 Standby NameNod。作为热备节点,通过不断读取NFS节点 PrimaryNameNode的日志来保持命名空间的同步,其还具备 SecondaryNameNode的Checkpoint的功能,即周期性合并镜像和日志,更 新Primary NameNode上的镜像。此外,DataNode同时与Primary NameNode和Standby NameNode交互,向二者同时发送心跳信息和数据块

信息,使得它们的数据块与DataNod。之间的映射信息保持一致。NameNode上的内存数据包括命名空间、数据块与DataNode之间的映射信息,这二者的激就保证了元数据的激,因此Standby NameNod。是一个热备节点。当Primary NameNode宕机时,Standby NameNode可以立即切换为Primary NameNode,接替其工作对外提供服务,这个切换时间一般在30秒之内。虽然在主备切换期间仍然会有操作失败等错误,但就当前来说,Avatar机制是解决HDFS的单点问题较好的选择。


2.HDFS数据块副本机制


     在HDFS中一个文件由许多数据块(Block)组成,数据块的大小可以 设定,而每个数据块有多个副本。

多个数据副本能够有效地保障数据不丢失,当HDFS中某个DataNode宕机时,HDFS会恢复其上的数据块,具体措施是:从存有与丢失数据块对应的副本的DataNode节点据块到另一个DataNode节点,直到此数据块的副本数达到指定值。 副本机制中,副本的数量值意味着对数据的存储空间的需求是原始数据的数倍,这对于大数据量存储的非重要据来说,是很大的空间浪费,因此需要考虑如何基于数据的重要性来设置副本数


3.HDFS心跳机制


HDFS中NameNode依赖心跳机制掌握整个集群的工作状况。DataNode通过周期性地发送心跳信息与NameNode联系,NameNode通过获取DataNode的心跳信息得DataNode的存在,以及其卜的磁盘容量、已用空间、剩余空间、总负载等信息,并以此为依据分配数据块和负载均衡,NameNode会将相关的命令返回给DataNode, DataNode默认每3秒发送一次信息,如果NameNode在10分钟内没有收到某个DataNode的心跳信息,就认为此。ataNode失效了,NameNode就会对其上的数据块做恢复操作。


4.HDFS负载均衡


  负载均衡是一个在很多系统中都要解决的问题,在HDFS中NatoeNode根据DataNode发送的心跳信息和所存储的数据块信息,掌握DataNode的当前状态。同时根据写人端位置将数据块分配给负载较轻、写人速度较快的DataNode,同时将副本写人到其他机架上去。另外,HOFS还有一个Balancer工具,它可以由Hadoop集群管理员启动,用来动态平衡HDFS上的数据,主要工作就是迁移数据块,当集群中有新的DataNode加人时,可以调用此工具,迅速将其他DatWode上的数据块迁移至叮新DataNode上,而当集群负载较高时,不应使用Balaacer,因为这样往往会造成网络上的阻塞,对客户端的延迟过大。


5.MapReduce容错


  MapReduce集群中运行JobTracker的机器为主节点。运行TaskTracker 的为子节点。lobTracker主要用于调度作业以及调度作业中的Map和 Reduc。任务到TaskTracker上,TaskTracker主要是执行Map和Reduce任 务。同样TaskTracker也会周期性地向lobTracke:发送心跳信息,报告节点 状态乖旺务执行情况。 当TaskTracker在指定时间内没有发送心侧瞻息时,JobTracker会以为其 已经宕机。并将其上未执行完的Map或Reduce任务重新调度到其他的 TaskTracker上组珍卖执行。当TaskTacker未宕机,但是在其卜运行泊勺任务失贝女 次数达到阂值时,JobTracker会认为此节点处于高负载状态。会将其列人黑名 单,不再将任务分配给此节点。当在指定的时间内此节点上没有任务再出错, 此节点从黑名单中删除,任务会被调度到此节点上执行 JobTracker会循环遍历调度到TaskTracker上的任务,每200秒检查一 次,当遇到TaakTracker上有Map或Reduc。任务失败或超时的情况时,将 被重新调度执行。此外当一个Map或Reduc。任务的进度低于整个作业的进 度与一个设定值之和时,一个备用的任务将被启动执行同样的任务,当两者 任何一个执行完任务时,此任务就会被认为已完成。   执行Map任务时,当读取数据尤其是读取大规模数据时,往往会遇到 错误数据,若此时放弃整个任务甚至是作业。是得不偿失的。因此 MapReduce提供了一个策略,当检测到有异常数据时,任务会跳过这些数 据继续处理其他正常数据。在通常的应用场景下,这种策略是允许的。







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值