1.能否总结出MapReduce设计思路?
2.hadoop1遇到了什么问题?
3.hadoop2做了什么改进,具体哪些变化?
对 hadoop1 和 hadoop 2 做了一个解释 图片不错 拿来看看
<ignore_js_op style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun;">
Hadoop 1.0
<ignore_js_op style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun;">
从上图中可以清楚的看出原 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:
<ignore_js_op style="word-wrap: break-word; color: rgb(68, 68, 68); font-family: Tahoma, 'Microsoft Yahei', Simsun;">
从业界使用分布式系统的变化趋势和 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 的职责有:向调度器索要适当的资源容器,运行任务,跟踪应用程序的状态和监控它们的进程,处理任务的失败原因。
相关推荐
- **2.x版本系列**:引入了YARN (Yet Another Resource Negotiator),这是一种新的资源管理和任务调度系统,使得Hadoop能够更好地支持多种类型的数据处理应用程序。 此外,市场上还有几家知名的Hadoop发行商,如...
然而,Elasticsearch在复杂数据分析方面与Hadoop或Spark相比还是存在一定的局限性。主要问题在于Elasticsearch集群的数据一致性。在正常的集群运行状态下,所有节点对于集群中master节点的选择应该是一致的,但在...
本文将从企业应用的角度,对比Hadoop技术与其他传统技术之间的差异,并分析其比较优势。 首先,我们来看Hadoop的主要技术特性以及它面向的企业应用案例。Hadoop的设计初衷是为了处理大规模数据集,尤其适用于互联网...
其次,对比IBM的DB2,HANA的优势在于其对复杂数据分析的处理速度。DB2虽然也有高效能,但在处理大规模并发查询和实时分析时,HANA的内存计算能力使其更胜一筹。此外,HANA还集成了开发和应用平台,简化了数据集成和...
本文从多个方面对比分析了这些核心技术和相关技术的使用优势和关联性,旨在帮助人们选择合适的技术来解决大数据的计算和存储问题。 Hadoop是一个开源框架模型,它利用集群存储数据的能力,以高效和可扩展的方式对...
1. Hbase 和 Hive 的对比 Hbase 是一个分布式、列式存储的NoSQL数据库,设计用于快速随机读取和写入大量非结构化数据。它的优点包括: - 高性能:由于其列式存储和数据压缩,Hbase 在读写速度上有显著优势。 - ...
- **Hadoop生态系统**:详细介绍了与Hadoop相关的其他开源项目,如Hive、Pig、HBase等,以及它们如何相互配合共同解决复杂的大数据问题。 #### 五、适用人群 - **初学者**:对于刚刚接触Hadoop的读者来说,本书提供...
### Hadoop新旧API对比及应用实践 #### 一、Hadoop API概述 Hadoop作为一个分布式计算框架,提供了丰富的API供开发者使用。随着版本的更新,Hadoop API也在不断演进,新旧API之间存在一定的差异。理解这些差异对于...
Hadoop 和 MPP 是两种不同的架构,每种架构都有其优缺点。Hadoop 适合处理非结构数据和半结构数据,具有低成本的优势,对于超大数据集也能够很好的支持。而 MPP 适合替代现有关系数据结构下的大数据处理,具有较高的...
- **Pivotal Greenplum HD**:结合了Greenplum MPP数据库和Hadoop的优势,提供高度可扩展的数据处理能力。 ##### 五、报告结论与建议 - 在选择Hadoop发行版时,应考虑企业的具体需求、技术实力以及预算等因素。 - ...
谷歌和亚马逊等互联网巨头面对大数据问题,提出了新的技术和理念,其中Google发布了关于可扩展存储和处理系统的论文,这些思想催生了开源项目Hadoop和MapReduce。Hadoop的核心是分布式文件系统HDFS,它能存储各种...
2. 对实时响应有高要求:Hadoop的计算任务通常存在一定的延迟,例如最小延迟为1分钟。这在需要快速响应的场景,如商品推荐系统中并不适用。在这种情况下,预计算和即时访问的数据存储方案可能更为合适。 3. 实时...
Spark是一个快速、通用且可扩展的大数据处理引擎,它提供了更高效的内存计算模型,对比MapReduce在处理迭代算法和交互式应用时有显著优势。Spark支持多种数据处理模式,包括批处理、流处理、图计算和机器学习,其...
6. **NoSQL数据库**(Chapter5.pdf):NoSQL数据库是大数据环境下的重要组件,课程可能涵盖NoSQL的种类、优缺点以及与关系型数据库的对比。 7. **数据仓库Hive**(Chapter8.pdf):Hive是构建在Hadoop之上的数据...
这份报告主要关注Hadoop系统的基本架构、与Google File System (GFS) 的对比、以及Hadoop MapReduce的工作原理等方面。 ### Hadoop概述 Hadoop是一个开源软件框架,用于分布式存储和处理大规模数据集。它主要由两...
### Hadoop新旧API对比及应用 #### 一、引言 随着Hadoop生态系统的不断发展和完善,其核心组件之一——MapReduce也在不断演进。为了更好地支持分布式计算的需求,Hadoop引入了新的API(Application Programming ...
### 基于Hadoop的几大开源类SQL查询系统对比 #### 1. Hive **简介** Hive是一款基于Hadoop的数据仓库工具,能够将结构化的数据文件映射为数据库表,并支持SQL查询功能。它能将SQL语句转换为MapReduce任务执行,为...