刚刚看到一篇文章对 hadoop1 和 hadoop 2 做了一个解释 图片不错 拿来看看
Hadoop 1.0
从上图中可以清楚的看出原 MapReduce 程序的流程及设计思路:
- 首先用户程序 (JobClient) 提交了一个 job,job 的信息会发送到 Job Tracker 中,Job Tracker 是 Map-reduce 框架的中心,他需要与集群中的机器定时通信 (heartbeat), 需要管理哪些程序应该跑在哪些机器上,需要管理所有 job 失败、重启等操作。
- TaskTracker 是 Map-reduce 集群中每台机器都有的一个部分,他做的事情主要是监视自己所在机器的资源情况。
- TaskTracker 同时监视当前机器的 tasks 运行状况。TaskTracker 需要把这些信息通过 heartbeat 发送给 JobTracker,JobTracker 会搜集这些信息以给新提交的 job 分配运行在哪些机器上。上图虚线箭头就是表示消息的发送 - 接收的过程。
可以看得出原来的 map-reduce 架构是简单明了的,在最初推出的几年,也得到了众多的成功案例,获得业界广泛的支持和肯定,但随着分布式系统集群的规模和其工作负荷的增长,原框架的问题逐渐浮出水面,主要的问题集中如下:
- JobTracker 是 Map-reduce 的集中处理点,存在单点故障。
- JobTracker 完成了太多的任务,造成了过多的资源消耗,当 map-reduce job 非常多的时候,会造成很大的内存开销,潜在来说,也增加了 JobTracker fail 的风险,这也是业界普遍总结出老 Hadoop 的 Map-Reduce 只能支持 4000 节点主机的上限。
- 在 TaskTracker 端,以 map/reduce task 的数目作为资源的表示过于简单,没有考虑到 cpu/ 内存的占用情况,如果两个大内存消耗的 task 被调度到了一块,很容易出现 OOM。
- 在 TaskTracker 端,把资源强制划分为 map task slot 和 reduce task slot, 如果当系统中只有 map task 或者只有 reduce task 的时候,会造成资源的浪费,也就是前面提过的集群资源利用的问题。
- 源代码层面分析的时候,会发现代码非常的难读,常常因为一个 class 做了太多的事情,代码量达 3000 多行,,造成 class 的任务不清晰,增加 bug 修复和版本维护的难度。
- 从操作的角度来看,现在的 Hadoop MapReduce 框架在有任何重要的或者不重要的变化 ( 例如 bug 修复,性能提升和特性化 ) 时,都会强制进行系统级别的升级更新。更糟的是,它不管用户的喜好,强制让分布式集群系统的每一个用户端同时更新。这些更新会让用户为了验证他们之前的应用程序是不是适用新的 Hadoop 版本而浪费大量时间。
hadoop2.0:
从业界使用分布式系统的变化趋势和 hadoop 框架的长远发展来看,MapReduce 的 JobTracker/TaskTracker 机制需要大规模的调整来修复它在可扩展性,内存消耗,线程模型,可靠性和性能上的缺陷。在过去的几年中,hadoop 开发团队做了一些 bug 的修复,但是最近这些修复的成本越来越高,这表明对原框架做出改变的难度越来越大。
为从根本上解决旧 MapReduce 框架的性能瓶颈,促进 Hadoop 框架的更长远发展,从 0.23.0 版本开始,Hadoop 的 MapReduce 框架完全重构,发生了根本的变化。新的 Hadoop MapReduce 框架命名为 MapReduceV2 或者叫 Yarn,
重构根本的思想是将 JobTracker 两个主要的功能分离成单独的组件,这两个功能是资源管理和任务调度 / 监控。新的资源管理器全局管理所有应用程序计算资源的分配,每一个应用的 ApplicationMaster 负责相应的调度和协调。一个应用程序无非是一个单独的传统的 MapReduce 任务或者是一个 DAG( 有向无环图 ) 任务。ResourceManager 和每一台机器的节点管理服务器能够管理用户在那台机器上的进程并能对计算进行组织。
事实上,每一个应用的 ApplicationMaster 是一个详细的框架库,它结合从 ResourceManager 获得的资源和 NodeManager 协同工作来运行和监控任务。
上图中 ResourceManager 支持分层级的应用队列,这些队列享有集群一定比例的资源。从某种意义上讲它就是一个纯粹的调度器,它在执行过程中不对应用进行监控和状态跟踪。同样,它也不能重启因应用失败或者硬件错误而运行失败的任务。
ResourceManager 是基于应用程序对资源的需求进行调度的 ; 每一个应用程序需要不同类型的资源因此就需要不同的容器。资源包括:内存,CPU,磁盘,网络等等。可以看出,这同现 Mapreduce 固定类型的资源使用模型有显著区别,它给集群的使用带来负面的影响。资源管理器提供一个调度策略的插件,它负责将集群资源分配给多个队列和应用程序。调度插件可以基于现有的能力调度和公平调度模型。
上图中 NodeManager 是每一台机器框架的代理,是执行应用程序的容器,监控应用程序的资源使用情况 (CPU,内存,硬盘,网络 ) 并且向调度器汇报。
每一个应用的 ApplicationMaster 的职责有:向调度器索要适当的资源容器,运行任务,跟踪应用程序的状态和监控它们的进程,处理任务的失败原因。
详细配置参考:
http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/
相关推荐
自2006年成为Apache顶级项目以来,Hadoop已经经历了多个版本的迭代,其中Hadoop 1.0和2.0是两个主要的版本,它们对大数据技术的发展产生了深远的影响。 Hadoop 1.0是该框架的最初版本,它主要由两个核心组件构成:...
本学习笔记涵盖了Hadoop 1.0和2.0两个主要版本,旨在帮助读者全面理解Hadoop的核心概念、架构以及实际操作。 在Hadoop 1.0中,核心组件主要包括HDFS(Hadoop Distributed File System)和MapReduce。HDFS是一种...
详解hadoop Hadoop1.0架构 Hadoop1.0编程 Hadoop1.0弊端 Hadoop2.0架构 Hadoop2.0编程 Hadoop2.0部署
大数据处理--hadoop2.0核心架构技术,主要介绍了大数据面临的挑战,而hadoop正是解决这些挑战的重要技术,接着分别介绍了hadoop1.0和hadoop2.0的区别,进而重点讲到hadoop2.0 YARN,详细分析MapReduce及HDFS架构。
Hadoop2.0架构** Hadoop2.0的核心组件仍然是HDFS和MapReduce,但在架构上进行了重大改进: - **HDFS**:依然采用Master/Slave架构,但是加入了Secondary NameNode,用以辅助NameNode处理事务日志和镜像文件,提高...
Hadoop的版本演变分为两个主要的阶段:Hadoop 1.0和Hadoop 2.0。其中,1.0系列包括了三个主要版本0.20.x、0.21.x和0.22.x,其中0.20.x演变为稳定版1.0.x。2.0系列引入了YARN(Yet Another Resource Negotiator),这...
Hadoop2.0引入了YARN(Yet Another Resource Negotiator),将集群资源管理和数据处理分离,使得Hadoop的架构更加灵活,可以支持多种计算框架。 #### (2) NameNode的改进 Hadoop1.0中的NameNode是单点故障,这意味...
2. Hadoop 2.0架构:YARN的工作原理,包括ResourceManager、ApplicationMaster和NodeManager的角色和职责。 3. HDFS Federation:理解多NameNode架构如何提高HDFS的性能和可用性。 4. MapReduce:MapReduce编程模型...
本文将深入探讨Hadoop 2.0的主要组件、架构、以及其相较于Hadoop 1.0的改进。 一、Hadoop 2.0概述 Hadoop 2.0是Apache软件基金会开发的开源大数据处理框架,基于Java实现,旨在提供高可靠性、高扩展性和高效的数据...
《云计算(第三版)》是由刘鹏教授...总的来说,Hadoop 2.0作为主流的开源云架构,是云计算和大数据领域不可或缺的一部分,它的出现极大地推动了数据处理能力的发展,为企业和研究者提供了强大的数据处理和分析工具。
【细解Hadoop】 Hadoop是一个开源的分布式计算框架,主要解决...从Hadoop 1.0到Hadoop 2.0的演进,反映了大数据处理领域对高可用性、可扩展性和灵活性的需求。随着技术的发展,Hadoop将继续在大数据时代扮演重要角色。
Hadoop1.0作为初代的大数据处理框架,在数据存储和处理方面取得了显著成就,但也暴露出了一系列问题,主要包括: - **HDFS(Hadoop Distributed File System)**: - **资源隔离**:HDFS中对资源的隔离不够完善,...
Hadoop 2.0 是一个开源的分布式计算框架,是Hadoop生态系统的核心组成部分,它在Hadoop 1.0的基础上进行了重大改进,引入了YARN(Yet Another Resource Negotiator),使得系统更加灵活和可扩展。Hadoop 2.0家族包括...
Hadoop 2.0 YARN,全称Yet Another Resource Negotiator,是Apache Hadoop生态系统中的一个核心组件,它在Hadoop 1.0 MapReduce的基础上进行了重大改进,旨在解决资源管理和调度的问题,以提高分布式计算的效率和...
它解决了大数据存储和处理的问题,尤其适合处理非结构化数据,其核心组件包括Hadoop分布式文件系统(HDFS)和MapReduce编程模型。 Hadoop的版本衍化历史可以追溯到第一代Hadoop,主要包含三个大版本,分别是0.20.x...
#### Hadoop2.0 HA架构特点 - **共享存储**:JournalNodes通过网络共享存储(如NFS)与NameNodes连接,确保数据同步。 - **数据上报**:DataNodes会向两个NameNodes报告块信息,确保数据一致性。 - **应用监控**:...
Hadoop 2.0是对Hadoop 1.0的重大升级,其中最重要的一项改进是引入了YARN(Yet Another Resource Negotiator),它作为资源管理系统,负责集群中的任务调度和资源分配。YARN将原本Hadoop 1.0中的JobTracker功能拆分...
在Hadoop1.0中,JobTracker负责资源管理和任务调度,而在Hadoop2.0中,这一功能被分解为YARN的ResourceManager和ApplicationMaster。 YARN是Hadoop2.0引入的关键组件,它的主要任务是资源管理和任务调度。...
首先,关于Hadoop技术的介绍,文件中提到了Hadoop的多个版本的架构,Hadoop 1.0和Hadoop 2.0架构是重要的知识点。Hadoop 2.0引入了YARN(Yet Another Resource Negotiator),这是Hadoop 2.0架构中的关键改进之一,...
- **MapReduce**:原有的MapReduce框架资源管理效率低下,Hadoop2.0推出了YARN(Yet Another Resource Negotiator),将资源管理和计算任务调度分离,提高了系统的整体性能和灵活性。 **8.2 HDFS2.0的新特性** ...