Hadoop2.0架构
2016-01-08 17:47
811 查看
打开Hadoop的官网,我们可以看到Hadoop2.0包括两个module:
HDFS – Hadoop File System。
YARN – Yet Another Resource Negotiator 也称为MapReduce2.0,即MPv2
其中HDFS是底层的存储系统。不仅Hadoop的底层存储可以使用HDFS,其他分布式计算系统也可以使用HDFS作为底层存储系统。HDFS与在Hadoop1.0中有一些大的变化。而Hadoop2.0最重要的变化是新抽象出来的YARN,即独立的分布式资源管理与调度系统。YARN的出现主要为了解决Hadoop1.0中NameNode的瓶颈问题。了解Hadoop1.0的同学知道,在1.0中NameNode既是HDFS的主控服务器,也是JobTracker之所在,因此负载很高且容易单点失败。另外MapReduce作为分布式批处理计算范型,在2.0中没有什么改变。对Hadoop1.0不了解的同学建议先看看1.0的架构,这样有助于对2.0的理解:
/article/9408020.html
下面我们分别就HDFS和YARN做进一步讨论。
HDFS
首先我们来看HDFS的架构:
大概描述是:HDFS仍然采用master/slave模式。主控节点仍然是NameNode,从节点仍然是多个DataNode。NameNode记录数据集的元数据。由于每个大文件load到HDFS时,都会被分割成默认64MB的数据块(Block),且这些数据块被分散到多个DataNode中做并行处理,因此NameNode需要管理一个文件分成了哪些Block,这些Block又分散在哪些DataNode上。这些映射关系就是元数据。当DataNode上的Block发生变化时,需向NameNode报告更新元数据。客户端操作数据时,需向NameNode查询元数据,在查询到数据所在的DataNode后,直接与DataNode交互,执行读/写操作。不同的数据块Block会有多个副本(主要是为了数据安全)。Rack是机架,一份数据的多个副本可能存在不同机架的服务器上。
在Hadoop2.0中,HDFS有两个大的改变:
HA方案
即High Availability。Hadoop1.0中的NameNode为单节点,而second NameNode并非是NameNode的热备机。因此在2.0中增加了stand-by NameNode(SNN),而主节点称为active NameNode(ANN)。ANN和SNN共享第三方存储,是热备方案,可自动failover。
NameNode联盟
HA解决了单节点失败的问题,但是NameNode的扩展性差的问题仍然没有解决。由于NameNode在内存中管理元数据,因此由于内存限制,Hadoop1.0能管理的机器数最多为4000~5000台。同时在多租户环境下(即一个集群运行完全不相关的多个应用),单一的NameNode无法实现租户间的有效隔离。NameNode联盟使用多个NameNode来解决扩展性问题,可管理1w台机器以上的集群。
NameNode联盟工作方式如下:将多个DataNode存储的Block的元数据分成多个Block Pool(并非是一对一的关系),而一个NameNode可以管理多个Block Pool。由此每个NameNode管理一部分元数据,且相互独立,不需要任何协调工作。
另外目前不能单独安装HDFS。也就是说如果你想用HDFS,需要直接安装Hadoop。
YARN
在Hadoop1.0中NameNode同时运行JobTracker,其作用是将用户提交到Hadoop的job分解成map或reduce task,并在各个DataNode上并发运行这些task。每个DataNode上都运行一个TaskTracker进程,跟踪报告task的运行情况并向JobTracker汇报。Hadoop2.0中这些功能被抽象成一个独立的模块,称为YARN。YARN本质上是一个分布式资源管理与调度系统。它包括:
唯一的资源管理器(Resource Manager)
每个作业一个的应用管理器(Application Master)
每个机器一个的节点管理器(Node Manager)
The ResourceManager has two main components: Scheduler and ApplicationsManager.
The ApplicationsManager is responsible for accepting job-submissions, negotiating the first container for executing the application specific ApplicationMaster and provides the service for restarting the ApplicationMaster container on failure.AM的功能和MPV1中的JobTracker类似。
The NodeManager is the per-machine framework agent who is responsible for containers, monitoring their resource usage (cpu, memory, disk, network) and reporting the same to the ResourceManager/Scheduler.
The per-application ApplicationMaster has the responsibility of negotiating appropriate resource containers from the Scheduler, tracking their status and monitoring for progress.
YARN是一个典型的二级调度器。RM管理全局资源与调度,为一级调度器,将资源分配给每个Application Master。而Application Master为二级调度器,负责在不同的Node间分配协调资源,在container运行子任务。
HDFS – Hadoop File System。
YARN – Yet Another Resource Negotiator 也称为MapReduce2.0,即MPv2
其中HDFS是底层的存储系统。不仅Hadoop的底层存储可以使用HDFS,其他分布式计算系统也可以使用HDFS作为底层存储系统。HDFS与在Hadoop1.0中有一些大的变化。而Hadoop2.0最重要的变化是新抽象出来的YARN,即独立的分布式资源管理与调度系统。YARN的出现主要为了解决Hadoop1.0中NameNode的瓶颈问题。了解Hadoop1.0的同学知道,在1.0中NameNode既是HDFS的主控服务器,也是JobTracker之所在,因此负载很高且容易单点失败。另外MapReduce作为分布式批处理计算范型,在2.0中没有什么改变。对Hadoop1.0不了解的同学建议先看看1.0的架构,这样有助于对2.0的理解:
/article/9408020.html
下面我们分别就HDFS和YARN做进一步讨论。
HDFS
首先我们来看HDFS的架构:
大概描述是:HDFS仍然采用master/slave模式。主控节点仍然是NameNode,从节点仍然是多个DataNode。NameNode记录数据集的元数据。由于每个大文件load到HDFS时,都会被分割成默认64MB的数据块(Block),且这些数据块被分散到多个DataNode中做并行处理,因此NameNode需要管理一个文件分成了哪些Block,这些Block又分散在哪些DataNode上。这些映射关系就是元数据。当DataNode上的Block发生变化时,需向NameNode报告更新元数据。客户端操作数据时,需向NameNode查询元数据,在查询到数据所在的DataNode后,直接与DataNode交互,执行读/写操作。不同的数据块Block会有多个副本(主要是为了数据安全)。Rack是机架,一份数据的多个副本可能存在不同机架的服务器上。
在Hadoop2.0中,HDFS有两个大的改变:
HA方案
即High Availability。Hadoop1.0中的NameNode为单节点,而second NameNode并非是NameNode的热备机。因此在2.0中增加了stand-by NameNode(SNN),而主节点称为active NameNode(ANN)。ANN和SNN共享第三方存储,是热备方案,可自动failover。
NameNode联盟
HA解决了单节点失败的问题,但是NameNode的扩展性差的问题仍然没有解决。由于NameNode在内存中管理元数据,因此由于内存限制,Hadoop1.0能管理的机器数最多为4000~5000台。同时在多租户环境下(即一个集群运行完全不相关的多个应用),单一的NameNode无法实现租户间的有效隔离。NameNode联盟使用多个NameNode来解决扩展性问题,可管理1w台机器以上的集群。
NameNode联盟工作方式如下:将多个DataNode存储的Block的元数据分成多个Block Pool(并非是一对一的关系),而一个NameNode可以管理多个Block Pool。由此每个NameNode管理一部分元数据,且相互独立,不需要任何协调工作。
另外目前不能单独安装HDFS。也就是说如果你想用HDFS,需要直接安装Hadoop。
YARN
在Hadoop1.0中NameNode同时运行JobTracker,其作用是将用户提交到Hadoop的job分解成map或reduce task,并在各个DataNode上并发运行这些task。每个DataNode上都运行一个TaskTracker进程,跟踪报告task的运行情况并向JobTracker汇报。Hadoop2.0中这些功能被抽象成一个独立的模块,称为YARN。YARN本质上是一个分布式资源管理与调度系统。它包括:
唯一的资源管理器(Resource Manager)
每个作业一个的应用管理器(Application Master)
每个机器一个的节点管理器(Node Manager)
The ResourceManager has two main components: Scheduler and ApplicationsManager.
The ApplicationsManager is responsible for accepting job-submissions, negotiating the first container for executing the application specific ApplicationMaster and provides the service for restarting the ApplicationMaster container on failure.AM的功能和MPV1中的JobTracker类似。
The NodeManager is the per-machine framework agent who is responsible for containers, monitoring their resource usage (cpu, memory, disk, network) and reporting the same to the ResourceManager/Scheduler.
The per-application ApplicationMaster has the responsibility of negotiating appropriate resource containers from the Scheduler, tracking their status and monitoring for progress.
YARN是一个典型的二级调度器。RM管理全局资源与调度,为一级调度器,将资源分配给每个Application Master。而Application Master为二级调度器,负责在不同的Node间分配协调资源,在container运行子任务。
相关文章推荐
- iOS个人整理05-应用程序的启动流程--视图控制器ViewController的加载过程--MVC架构
- 【IIS】Windows下利用IIS建立网站并实现局域网共享
- 又拍网架构中的分库设计
- 测评国内免费网站监控服务 - 监控宝,阿里云监控,百度云观测,360监控等对比
- Web应用程序开发查询网站
- 基于Dubbo框架构建分布式服务
- Android架构设计演变史
- 网站绑定域名后不能用IP直接访问了?
- IOS开发学习的重要网站
- 共享节点型的行为树架构(2)
- 共享节点型的行为树架构(1)
- .net erp(办公oa)开发平台架构之流程服务概要介绍
- 教你如何查看百度蜘蛛来没来过你的网站
- android 开发常用的不可不知的几个网站
- 网站地址收藏
- 网站漏洞——越权大法,纯文字,不喜勿看
- 推荐学习网站
- 两个域名指向同一个网站
- 从ZooKeeper源代码看如何实现分布式系统(二)数据的高可用存储
- 360广告转化分析上线