Hadoop状态转移图生成

事件驱动和状态转移,在很大程度上保证了大型系统的顺利推进。状态转移有如下好处:

  1. 状态转移图是可以生成的。在讨论某个功能的时候,可以直接对着图进行讨论
  2. 某个状态转移图里面,通过加锁、生产者/消费者模式等方法,可以保证一个时间点只有一个状态转移,进而保证状态的正确性
  3. 在进行UT(单元测试)的时候,只需要对每一条转移路径进行测试就好啦

Hadoop也大量采用了这种方法,如MapReduce的状态转移,NM和RM中资源、任务的管理.

生成方法

hadoop内部的状态转移图,是可以通过程序生成的。方法:使用类VisualizeStateMachine,在运行的时候指定三个参数:图的名字、包含事件转移的类(类之间通过”,”隔开)、生成的文件名(.gv格式),如

$ hadoop org.apache.hadoop.yarn.state.VisualizeStateMachine TaskStateChange org.apache.hadoop.mapreduce.v2.app.job.impl.TaskImpl TaskImpl.gv

生成的图如下
TaskImpl

hadoop所有的状态转移图生成方法

mvn命令生成

参考MAPREDUCE-2930

$mvn -Pvisualize compile
$dot -Tpng NodeManager.gv > NodeManager.png; dot -Tpng ResourceManager.gv > ResourceManager.png; dot -Tpng MapReduce.gv > MapReduce.png;

通过VisualizeStateMachine生成

hadoop中使用状态转移的大致有三类:MapReduce、NodeManager、ResourceManager,下面将给出生成这三大类转移图的脚本

MapReduce相关

hadoop org.apache.hadoop.yarn.state.VisualizeStateMachine MapReduce org.apache.hadoop.mapreduce.v2.app.job.impl.JobImpl,org.apache.hadoop.mapreduce.v2.app.job.impl.TaskImpl,org.apache.hadoop.mapreduce.v2.app.job.impl.TaskAttemptImpl MapReduce.gv

NodeManager相关

hadoop org.apache.hadoop.yarn.state.VisualizeStateMachine NodeManager org.apache.hadoop.yarn.server.nodemanager.containermanager.application.ApplicationImpl,org.apache.hadoop.yarn.server.nodemanager.containermanager.container.ContainerImpl,org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.LocalizedResource NodeManager.gv

ResourceManager相关

hadoop org.apache.hadoop.yarn.state.VisualizeStateMachine ResourceManager org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt.RMAppAttemptImpl,org.apache.hadoop.yarn.server.resourcemanager.rmapp.RMAppImpl,org.apache.hadoop.yarn.server.resourcemanager.rmcontainer.RMContainerImpl,org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNodeImpl ResourceManager.gv
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hadoop是一个分布式计算框架,主要用于处理大规模数据集。它的设计目标是能够高效地在廉价的硬件上运行,并提供高容错性。Hadoop框架主要包括两个核心组件:Hadoop Distributed File System (HDFS) 和 MapReduce。 **Hadoop框架简介**: 1. **Hadoop Distributed File System (HDFS)**: HDFS是一个分布式文件系统,它将数据分散存储在多台计算机(称为DataNodes)上,提供高容错性和高吞吐量。它主要由两个部分组成: - NameNode:作为主节点,负责管理文件系统的命名空间和目录树,以及整个文件系统的元数据。 - DataNodes:存储实际的数据块,客户端通过NameNode获取数据块的位置信息进行读写操作。 2. **MapReduce**: MapReduce是Hadoop的核心计算模型,它将复杂的并行计算任务分解为两个阶段:Map阶段(将输入数据分成小块,并对每个块进行处理)和Reduce阶段(对Map阶段的结果进行汇总和排序)。这两个阶段通常在不同的DataNodes上并行执行。 - Map阶段:Mapper函数执行,接收键值对,进行一些简单的处理,然后生成中间键值对。 - Reduce阶段:Reducer函数接收中间键值对,进行聚合操作,生成最终结果。 3. **YARN (Yet Another Resource Negotiator)**: 在Hadoop 2.x版本中引入了资源调度器YARN,它取代了早期的JobTracker,更好地管理Hadoop的资源,如内存、CPU等。YARN将资源划分为Container,应用提交到YARN后,由ResourceManager进行调度。 4. **Hadoop生态系统**: 除了核心组件,Hadoop还有许多附属项目,如Hive用于SQL查询,Pig提供类似SQL的查询语言,HBase是一个分布式列式数据库等,它们都构建在Hadoop之上,扩展其功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值