分享

Hadoop YARN 大数据解决方案进段应用

本帖最后由 韩克拉玛寒 于 2015-4-3 23:00 编辑
问题导读:

1、了解Hadoop版本衍化都有那些?
2、了解Hadoop版本号、以及Hadoop2.0版本产生的背景?
3、如何理解Hadoop2.X的基本构成?




Hadoop 版本衍化

1、第一代Hadoop:Hadoop1.0
        a、包含三个大版本,分别是0.20.x,0.21.x和0.22.x和CDH3
        b、0.20.x最后演化成1.0.x,变成了稳定版
        c、0.21.x和0.22.x,则增加NameNode HA等新的特性。

2、第二代Hadoop:Hadoop2.0
        a、包含Apache Hadoop 0.23.x、2.x和CDH4,均包含HDFS Federation和YARN两个系统。
        b、2.x增加了NameNode HA和Wire-compatibity两个重大特性。

3、Apache软件发布方式:根据新增特性延伸新版本

4、独立产生Hadoop版本的重大特性
        a、Append   支持文件追加功能
        b、RAID  构建DRFS,在保证数据可靠的前提下,通过引入校验码减少数据块数目。
        c、Symlink 支持HDFS文件链接
        d、Security  安全认证和授权机制
        e、MRv1 (MapReduce)
        f、MRv2/YARN
        g、NameNode HA
        h、HDFS Federation

5、Apache Hadoop的四大分支构成了三个系列的Hadoop版本
        a、0.20.x系列,主要有两个特性:Append 与Security
        b、0.21.0 / 0.22.x 系列:
        整个Hadoop项目被分割成三个独立的模块
                1、Common模块
                2、HDFS模块
                3、MapReduce模块
        c、0.23.X系列, 包括基础库Common、分布是文件系统HDFS、资源管理框架YARN和运行在YARN上的MapReduce四部分。
        d、2.X系列   与0.23.X相比,2.X增加了NameNode  HA和Wire-compatibility等新特性。

Hadoop版本演化.png


Hadoop 2.0版本号
1、Apache  Hadoop
        a、0.23.x,比如0.23.9
        b、2.x.x,比如2.2.0
        c、下载地址:http://hadoop.apache.org/releases.html
        d、SVN:http://svn.apache.org/repos/asf/hadoop/common/branches/

2、CDH(Cloudera Distributed Hadoop)
        a、CDH4,比如CDH4.5
        b、下载地址:http://archive.cloudera.com/cdh4/cdh4/4/(是tar.gz文件!)
        c、CDH5,比如CDH5-beta1
        d、下载地址:http://archive.cloudera.com/cdh5/cdh/(是tar.gz文件!)

Hadoop 2.0产生背景
1、Hadoop生态系统由Hadoop、HBase、Hive、Pig、Sqoop、Flume、Mahout(数据挖掘)、ZooKeeper等构成。
2、Hadoop 1.0由HDFS和MapReduce两个系统构成。
3、Hadoop1.0中HDFS和MapReduce在高可用、扩展性等方面存在问题。
4、HDFSS存在的问题
        a、NameNode单点故障,难以应用于在线场景。
        b、NameNode压力过大,且内存受限,影响系统扩展性。
5、MapReduce存在的问题
        a、JobTracker单点故障。
        b、JobTracker访问压力大,影响系统扩展性。
        c、难以支持除MapReduce之外的计算框架,比如Spark、Storm、Tez等。

Hadoop 2.0基本构成

Hadoop1.0与Hadoop2.0.png

1、Hadoop 2.0 由HDFS。MapReduce和YARN三个分支构成。
2、HDFS:NN Federation(冗余机制)、HA;
3、MapReduce:运行在YARN上的MR;
4、YARN:资源管理系统


HDFS 2.0
        1、解决HDFS 1.0中单点故障和内存受限问题。
        2、解决单点故障
                a、HDFS HA:通过贮备NameNode解决。
                b、如果NameNode发生故障,则切换到备用NameNode上。
        3、解决内存受限问题
                a、HDFS Federation(联邦);
                b、水平扩展,支持多个NameNode;
                c、每个NameNode分管一部分目录;
                的、每个NameNode共享所有DataNode存储资源;
        4、仅是架构上发生了变化,使用方式不变
                a、对HDFS使用者透明。
                b、HDFS 1.0中的命令和API 可有继续使用。
                        $hadoop fs -ls /user/hadoop/
                        $hadoop fs -mkdir /user/hadoop//data

HDFS 2.0  HA

Hadoop2.0 HA.png

        1、主备NameNode
        2、解决点点故障。
                a、主NameNode对外提供服务,备NameNode同步主NameNode元数据,以待切换。
                b、所有DataNode同时向两个NameNode汇报数据块信息。
        3、两种切换选择
                a、手动切换:通过命令实现主备之间的切换,可以用HDFS升级等场合。
                b、自动切换:基于Zookeep而实现。
        4、基于Zookeep而自动切换方案
                a、Zookeeper Failover Controller:监控NameNode健康状态,并向Zookeep而注册NameNode。
                b、NameNode挂掉后,ZKFC为NameNode竞争锁,获得ZKFC锁的NameNode变为active。
        5、多种共享存储系统可供选择。
                a、NFS:采用Linux文件共享系统;
                b、Qurom Journal Manager(QJM):多个Journal Node构成集群;
                c、Bookeeper:Bookeeper服务,对应一个netural,每个对应一个日志段,管理维护上很复杂,得通过ZK进入管理元数据,大型集群采用;
        6、推荐QJM方案:
                a、基本原理:数据同时写入所有Journal Node,多数写入成功,则认为写成功。
                b、一般配置奇数个Journal Node,越多,容错性越好。
                c、比如3个Journal Node,只要两个写成功,则数据写成功,最多允许一个Journal Node挂掉。
HDFS 1.0
        1、当前HDFS两层结构
                a、Namespace;
                b、Block Storage:包括Block Management和Physical Storage
               
NameSpace.png

        2、当前HDFS的局限性
                a、Block Storage和NameSpace高耦合。
                b、NameNode扩展性。
                c、性能:单个NameNode当前仅支持约60K的task。
                d、隔离性。
        
Hadoop2.0 Federation.png


Federation架构实现:
        NameSpace:由多个NameNode组成的。已经把之前的Block Storage进行了变更,Federation改变了NameNode,config。改变了一些配置。并没有改变NameNode的本身内部的代码。所以我们在操作HDFS系统时,没有感觉到什么不同。依然可以使用它的API和命令来进行各种操作,对我们是透明的。它对Config,DataNode,整个架构的改变,从一个变成多个,每个NameNode独立负责自己部分的管理工作,对应的一个Pool,去缓存NameNode元数据信息。也叫做Block Pools。各自分工,相互之间也不进行协调工作。另外每个DataNode会记录每个NameNode的Pool的内容,它的改变是基于DataNode,Config,以及Pools中来做出相应的改变,并没有改变NameNode的本身,这种架构是可以保证NameNode的扩展性。也存在局限性,即本质上每个NameNode也是一个单点(NameNode Pool value),升级时是以NameNode和Pool来升级的。
YARN:
        1、YARN: Yet Another Resource Negotiator;
        2、Hadoop 2.0 新引入的资源管理系统,直接从MRv1演化而来的。
        3、核心思想:讲MRv1中JobTracker的资源管理和任务调度两个功能分开,分别由ResourceManager和ApplicationMaster进程实现;
                a、ResourceManager:负责整个集群的资源管理和调度;
                b、ApplicationMaster:负责应用程序相关的事务,比如任务调度、任务监控和容错等。
        4、YARN的引入,使得多个计算框架可以运行在一个集群中
                a、每个应用程序对应一个ApplicationMaster;
                b、目前多个计算框架可以运行在Yarn上,比如MapReduce、Spark、Storm等。

MapReduce 计算框架
        1、将计算过程分为两个阶段:Map和Reduce;
                a、Map阶段并行处理输入数据。
                b、Reduce阶段对Map结果进行汇总。
        2、Shuffle链接Map和Reduce两个阶段。
                a、Map Task将数据写到本地磁盘。
                b、Reduce Task从每个Map Task上读取一份数据。
        3、仅适合离线批处理;
                a、具有很好的容错性和扩展性。
                b、适合简单的批处理任务。
        4、缺点明显;
                a、启动开销大、过多使用磁盘导致效率地下等。

MapReduce On YARN
        1、MapReduce On YARN:MRv2;
        2、将MapReduce作业直接运行在YARN上,而不是JobTracker和TaskTracker构建的MRv1系统中。
        3、基本功能模块:
                a、YARN:负责资源管理和调度。
                b、MRAPPMaster:负责任务切分、任务调度、任务监控和容错等。
                c、MapTask/ReduceTask:任务驱动引擎,与MRv1一致。
        4、每个MapReduce作业对应一个MRAppMaster。
        5、MRAppMaster任务调度;
                a、YARN将资源分配给MRAppMaster。
                b、MRAppMaster进一步将资源分配给内部的任务。
        6、MRAppMaster容错;
                a、失败后,由YARN重新启动。
                b、任务失败后,MRAppMaster重新申请资源。

MRv1与MRv2兼容性
        1、MapReduce API
                a、分为新API(org.apache.hadoop.mapreduce)和旧 API(org.apache.hadoop.mapred)。
                b、新旧API性能没有差异(因此内核实现相同),不同之处仅在于编程接口的定义。
                c、新API自身拥有更好的封装,在兼容性和扩展性方面更优。

        2、MRv1与MRv2应用程序兼容性;
                a、采用MRv1旧API编写的应用程序,可直接使用之前的jar包将程序运行在MRv2上。
                b、采用MRv1新API编写的应用程序则不可以,需要使用MRv2编程库重新编译并根据编译错误提示修改不兼容的参数和返回值。

MRv1与MRv2不兼容API


MRv1和MRv2不兼容API.png

来自群组: about云小组群
欢迎加入about云群425860289432264021 ,云计算爱好者群,亦可关注about云腾讯认证空间||关注本站微信

已有(2)人评论

跳转到指定楼层
feng01301218 发表于 2015-4-4 20:44:22
问题导读:

1、了解Hadoop版本衍化都有那些?
2、了解Hadoop版本号、以及Hadoop2.0版本产生的背景?
3、如何理解Hadoop2.X的基本构成?
回复

使用道具 举报

Redgo 发表于 2015-4-4 21:50:05
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条