浅谈Hadoop容错机制

标签: hadoop | 发表时间:2013-11-22 22:26 | 作者:xiaozhuaixifu
出处:http://blog.csdn.net

简单介绍一下Hadoop中数据存储的可靠性和完整性,其中包括HDFS的容错机制、NameNode(元数据结点)的单点失效解决机制、Block数据块的多副本存储机制、

NameNode与DataNode之间的心跳检测机制、数据存储等。

(一)HDFS中NameNode单点问题

HDFS这种分布式的存储系统,存在中心结点,那么这个中心结点的可靠性就是整个集群的可靠性的关键,对于版本0.20.x的hadoop来说,主要是有一个叫做SecondaryNameNode的机制来解决,这个结点周期性的从NameNode 结点上下载磁盘镜像和日志文件,在本地将日志合并到镜像中,产生新的镜像,上传到NameNode,当NameNode结点重启时就会加载此最新的镜像文件,这个过程叫做CheckPoint,那么SecondaryNameNode会周期性的做CheckPoint,但是这种机制对于单点问题来说不是很理想,因为你做CheckPoint只能保存上次的元数据,那么CheckPoint之后的元数据在NameNode 失效后是会丢失的。

    FaceBook提出了Avatar机制来解决NameNode 的单点问题,这里多设置了一个叫做 Standby NameNode 的结点,原来的NameNode  叫做 PrimaryNameNode, 另外还有一个结点 NFS 用来存储 Primary NameNode 的日志和镜像文件。这里跟前面的解决机制不同的是 Standby NameNode 这个结点是 热备结点, 它不仅具有前面的CheckPoint的功能,还会周期性的读取 NFS结点上的 PrimaryNameNode 的日志来保持命名空间的同步,此外 DataNode 会同时向 Standby NameNode 和 PrimaryNameNode 发送心跳信息和数据块信息,这样,这两个结点的元数据信息是一致的,因此这也是为什么是热备结点的原因了。


注: 镜像文件存储的是NameNode 的命名空间即目录树,就是将内存中的命名空间持久化到镜像文件中。

CheckPoint的流程如下图:

1. SecondaryNameNode 通知 NameNode 开始做CheckPoint.......

2.

(二)HDFS数据块副本机制

    在HDFS中一个文件可能有许多的数据块(Block)组成,每个数据块的副本的默认数量是3,其中两个放在同一个机架中,两一个放在其他机架,对于大数据存储来说,这种机制会造成数据的存储空间翻倍,因此需要一定的机制来节省磁盘空间,比如基于历史统计记录的动态副本策略,和FaceBook 的 RAID机制。

(三)HDFS负载均衡

    NameNode 根据 DataNode发送的心跳信息和数据块信息来掌握 DataNode 的当前状态,HDFS有一个 balancer 工具 , 可以由管理员启动,用来迁移DataNode 之间的数据块,当集群负载较高的时候不宜采用,因为可能会造成网络阻塞,造成客户端延迟过大。

(四)MapReduce容错

    运行JobTracker 的结点为主结点,用于调度作业和调度MAP 和 Reduce 任务到 TaskTracker 上, 同样TaskTracker也会周期性的向JobTracker 发送心跳信息,保护任务执行的状况,如果在指定时间内没有收到心跳信号,那么认为此结点已经宕机,重新分配 Map 或者 Reduce 任务到其他的结点上.



to be continued......

作者:xiaozhuaixifu 发表于2013-11-22 14:26:44 原文链接
阅读:0 评论:0 查看评论

相关 [hadoop] 推荐:

Hadoop Streaming 编程

- - 学着站在巨人的肩膀上
Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer,例如:. 采用shell脚本语言中的一些命令作为mapper和reducer(cat作为mapper,wc作为reducer). 本文安排如下,第二节介绍Hadoop Streaming的原理,第三节介绍Hadoop Streaming的使用方法,第四节介绍Hadoop Streaming的程序编写方法,在这一节中,用C++、C、shell脚本 和python实现了WordCount作业,第五节总结了常见的问题.

Hadoop使用(一)

- Pei - 博客园-首页原创精华区
Hadoop使用主/从(Master/Slave)架构,主要角色有NameNode,DataNode,secondary NameNode,JobTracker,TaskTracker组成. 其中NameNode,secondary NameNode,JobTracker运行在Master节点上,DataNode和TaskTracker运行在Slave节点上.

Hadoop MapReduce技巧

- - 简单文本
我在使用Hadoop编写MapReduce程序时,遇到了一些问题,通过在Google上查询资料,并结合自己对Hadoop的理解,逐一解决了这些问题. Hadoop对MapReduce中Key与Value的类型是有要求的,简单说来,这些类型必须支持Hadoop的序列化. 为了提高序列化的性能,Hadoop还为Java中常见的基本类型提供了相应地支持序列化的类型,如IntWritable,LongWritable,并为String类型提供了Text类型.

Hadoop TaskScheduler浅析

- - kouu's home
TaskScheduler,顾名思义,就是MapReduce中的任务调度器. 在MapReduce中,JobTracker接收JobClient提交的Job,将它们按InputFormat的划分以及其他相关配置,生成若干个Map和Reduce任务. 然后,当一个TaskTracker通过心跳告知JobTracker自己还有空闲的任务Slot时,JobTracker就会向其分派任务.

HADOOP安装

- - OracleDBA Blog---三少个人自留地
最近有时间看看hadoop的一些东西,而且在测试的环境上做了一些搭建的工作. 首先,安装前需要做一些准备工作. 使用一台pcserver作为测试服务器,同时使用Oracle VM VirtualBox来作为虚拟机的服务器. 新建了三个虚拟机以后,安装linux,我安装的linux的版本是redhat linux 5.4 x64版本.

Hadoop Corona介绍

- - 董的博客
Dong | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及 版权声明. 网址: http://dongxicheng.org/hadoop-corona/hadoop-corona/. Hadoop Corona是facebook开源的下一代MapReduce框架. 其基本设计动机和Apache的YARN一致,在此不再重复,读者可参考我的这篇文章 “下一代Apache Hadoop MapReduce框架的架构”.

Hadoop RPC机制

- - 企业架构 - ITeye博客
RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. Hadoop底层的交互都是通过 rpc进行的. 例如:datanode和namenode 、tasktracker和jobtracker、secondary namenode和namenode之间的通信都是通过rpc实现的.

Hadoop Rumen介绍

- - 董的博客
Dong | 新浪微博: 西成懂 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及 版权声明. 网址: http://dongxicheng.org/mapreduce/hadoop-rumen-introduction/. 什么是Hadoop Rumen?. Hadoop Rumen是为Hadoop MapReduce设计的日志解析和分析工具,它能够将JobHistory 日志解析成有意义的数据并格式化存储.

Hadoop contrib介绍

- - 董的博客
Dong | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及 版权声明. 网址: http://dongxicheng.org/mapreduce/hadoop-contrib/. Hadoop Contrib是Hadoop代码中第三方公司贡献的工具包,一般作为Hadoop kernel的扩展功能,它包含多个非常有用的扩展包,本文以Hadoop 1.0为例对Hadoop Contrib中的各个工具包进行介绍.

HADOOP SHUFFLE(转载)

- - 数据库 - ITeye博客
Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方. 要想理解MapReduce,Shuffle是必须要了解的. 我看过很多相关的资料,但每次看完都云里雾里的绕着,很难理清大致的逻辑,反而越搅越混. 前段时间在做MapReduce job性能调优的工作,需要深入代码研究MapReduce的运行机制,这才对Shuffle探了个究竟.