Hadoop 0.23.0是一个通用的资源分配框架,它不仅支持MapReduce计算框架,同时也支持流式计算框架,迭代计算框架,MPI等。它实现时采用基于了事件驱动机制,异步编程模型,如下图所示:
该图片来自《Hadoop 0.23 MRv2分析》
EventHandler被称作事件处理器, 每种事件类型对应一种EventHandler,其对事件的处理过程通过状态机来描述,handler 接收到一个事件后,使处理对象当前状态跳转到另外一个状态,同时触发一个动作。
(1)状态机
每个对象被建模成有限状态机,如:
• RM:Application,ApplicationAttempt,Container,Node
• AM:Job,Task,AttemptTask
• NM:Container,Application
如:application的状态机如下,刚开始application所处状态为NEW,待收到一个STARTED事件后,会转化成SUBMITTED状态。
(2)基于actors model的事件模型
该模型有以下几个特点:
[1] 每一个计算实体可以:
<1> 向其他actor发送有限个信息
<2> 收到的消息时触发一个行为
<3> 创建若干个新的actor
[2] 固有的并行性
[3] 异步的
如上图所示(小写表示状态,大写表示事件),两个actor(实际上是C++对象)对应两个不同的状态机,某些actor的事件(如事件A)会触发actor内部状态的转化,而另外一些事件(如事件Y)会触发其他actor的状态转化。具体事例,在后续的文章中会提到。
Hadoop-0.23.0代码并不像之前的Hadoop代码那样容易阅读,由于采用了actor model,其代码逻辑具有跳跃性,往往在看某个代码块时,由于逻辑需要,会跳跃到另外一个代码块,这之后又会跳跃,….。
为了更容易地阅读Hadoop-0.23.0代码,本人拟按照以下步骤进行:
<1> 熟悉其主要模块(ResourceManager,NodeManager,Client,ApplicationMaster)的功能;
<2> 阅读各个模块之间的通信协议;
<3> 分别深入各个模块,画出各个对象的状态机及搞清其转化逻辑;
<4> 分析各个模块主要功能的实现方法。
相关推荐
MapReduce是Hadoop处理大数据的主要计算框架,它借鉴了Google的MapReduce编程模型。MapReduce将大规模数据处理任务分解为两个主要阶段:Map阶段和Reduce阶段。 1. **Map阶段**:原始数据被切分成小块(split),...
分布式计算框架通常包括编程模型、特殊的组件、资源调度等几个方面。 61.1.1 编程模型 编程模型是分布式计算框架的核心组成部分,它定义了如何将计算任务分配到多个计算节点上,并如何对计算结果进行合并。常见的...
- **运行在YARN上的MR**:保留原有的编程模型,但通过YARN进行资源管理,提高了资源利用效率。 - **YARN(Yet Another Resource Negotiator)**: - **资源管理系统**:YARN的核心职责在于资源管理,它可以为不同...
MapReduce 是一种编程模型,用于大规模数据集(通常是分布在计算机集群上的数据)的并行运算。概念"Map(映射)"和"Reduce(归约)"是其主要思想,受到了函数式编程语言领域的影响。MapReduce 的设计目标是为了简化...
【Hadoop WordCount 示例开发】 在Hadoop框架中,WordCount是经典的...以上就是Hadoop的WordCount示例开发、YARN的基本理解和MR编程案例的详解。了解这些内容有助于深入理解Hadoop的分布式计算模型以及资源调度机制。
在大数据领域,MapReduce是一种广泛应用于处理海量数据的编程模型,由Google提出并开源实现,主要解决了分布式计算的问题。在这个“项目中的mr案例citydata数据”中,我们可能正在处理一个涉及城市数据的分析任务。...
原理剖析,删除数据,消费数据,Shell访问和Java API访问SparkCore技术原理,b编程模型,检查点,广播和累加器sparkSQL简介,运行原理,程序开发,数据源,分布式引擎,数据类型,性能优化,实战训练SparkStreaming...
1. YARN(Yet Another Resource Negotiator):Hadoop 2.x引入了YARN,取代了旧版中的JobTracker,负责集群资源管理和调度,提高了系统的可扩展性和资源利用率。 2. HDFS Federation:通过增加多个NameNode,解决了...
3. **MapReduce**: Hadoop 的 MapReduce 是一种编程模型,用于大规模数据集的并行处理。它将复杂的计算任务拆分为两个阶段:Map 阶段和 Reduce 阶段,通过并行化执行提高处理速度。在 mr-libsvm-2 中,Map 用于处理...
MapReduce 是 Hadoop 中用于处理大规模数据集的一种编程模型。它将任务分为两个阶段:Map 阶段负责将输入数据转换成中间键值对,Reduce 阶段则对这些中间结果进行汇总处理。通过这种方式,MapReduce 可以实现高效的...
它基于Google的MapReduce编程模型和分布式文件系统GFS(Google File System)的灵感而设计。Hadoop包含两个主要组件:HDFS(Hadoop Distributed File System)和YARN(Yet Another Resource Negotiator)。 **HDFS*...
Hadoop是一个开源框架,它允许使用简单的编程模型在集群上分布式处理大数据。它主要是由Java语言编写的。Hadoop的核心组件包括HDFS和MapReduce。HDFS是Hadoop的分布式文件系统,能够提供高吞吐量的数据访问,非常...
在MapReduce编程模型中,Map阶段通过读取数据集并将其映射为键值对(Key, Value),然后Reduce阶段将具有相同键的值集合起来,进行迭代计算。MR原语就是Map和Reduce的基本操作,这两个操作通过Shuffle过程连接起来,...
3. **作为并行程序设计模型**:MapReduce提供了一种简单而强大的编程模型,开发者只需要定义`Map`和`Reduce`两个函数即可完成复杂的并行计算任务。`Map`函数用于对输入数据进行初步处理,而`Reduce`函数则用于汇总`...
三、Hadoop MapReduce编程模型 MapReduce的工作原理是将大型任务拆分为两个阶段:Map阶段和Reduce阶段。Map阶段将输入数据切分成键值对,然后应用用户定义的函数;Reduce阶段则聚合Map的输出,并进一步处理得到最终...
Hadoop是一个由Apache基金会开发的开源框架,它允许使用简单的编程模型跨计算机集群分布式处理大数据集。Hadoop的设计初衷是能够可靠、高效地存储和分析大量数据。Hadoop框架由多个模块组成,其中包括: 1. Hadoop ...
这套教程深入浅出地介绍了MapReduce(MR)的概念,不仅限于基础理论,更注重实践层面的理解。它将从资源分配的角度出发,帮助学习者理解Hadoop如何高效地在分布式环境中处理海量数据。这种讲解方式使得复杂的技术...
MapReduce 是一种编程模型,用于大规模数据集的并行运算。该模型由Google提出,并被Apache软件基金会的Hadoop项目所实现。本节我们将详细介绍MapReduce的原理及其在Hadoop中的应用。 首先,MapReduce模型由两个主要...