`
dajuezhao
  • 浏览: 60963 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

通过Hadoop的API对Job进行管理

阅读更多
一、需求背景

由于我们在做一些业务的时候,可能需要多个Job来组合才能满足一个也许需求,而每个Job之间都有依赖关系,所以产生了需要对Job顺序的控制。总结一下需求,大体如下:

1、Job之间有先后的顺序执行问题。

2、需要对每个Job的状态进行监控(是否完成以及失败情况处理等等)

3、对可以并发执行的Job调整。

4、每个Job处理时的信息的采集以及记录。

5、能够灵活添加或删除要执行的Job队列。

如果以上需求去掉2和4,那么,我们通过脚本就可以做到(如shell)。但是如果要获取Job的详细信息以及Job运行时的状态,那么还是需要调用Hadoop的API来实现。所以,这里我选择了Java语言来实现以上需求。

二、环境简述

1、操作系统Linux、JDK1.6

2、Hadoop 0.20.2

3、开发工具选择eclipse 3.3.2(可配合使用hadoop的插件)

三、设计思路

这里的设计必须要满足以上的需求,设计内容大体如下:

1、通过周期的遍历时间,获得Job队列启动时间,并在启动之前加载Job配置文件。

2、通过配置Job的列表来确定Job执行的先后顺序以及哪些可以并发哪些不能并发。

3、通过JobClinet来采集相关的Job信息。

4、对失败的Job有重新尝试执行的机制。

四、实现关键点

设计出来了,那么实现就需要一些关键点的考虑,一下是我总结的一些关键点:

1、Job配置文件设计。我这里对每个Job都有自己的编号,在队列任务启动之间都会加载该配置文件,根据用户自己配置的Job顺序来依次的启动Job。

2、上面提到的是典型的FIFO模式,hadoop本身通过配置可以实现公平调度模式,那么只要把集群配置完成,我们通过修改Job执行的配置文件也可以实现并发启动。这里的配置文件我就不详细列出来,各自的定义也不尽相同。关键点就是通过配置文件可以明显的标识出那一些Job是需要顺序执行,哪一些Job是可以并发执行就可以。读取文件之后程序获得了此信息就可以按照配置文件执行。在这里我通过java.util.concurrent.Semaphore类来实现。具体代码不写了。

3、如何通过java代码启动Job,这里我考虑的是使用Hadoop的API来实现。最早我也犯了个错误,采用exec的方式执行,后来我跟踪源代码找到我们在控制台输入hadoop jar的启动原理之后,将代码做了修改,采用了org.apache.hadoop.util.RunJar这个类,具体方法可以自己细看。

4、对于信息的采集,这里比较麻烦,应为我要采集到确定是通过我启动的Job,那么我必须有一个依据,这里我的依据就是JobName。在队列配置文件中将配置此JobName。同Job内部代码编写的Job job = new Job(conf, "JobName");需要一直。这样,通过JobName我能获取JobID,这样,最终就能定位并获取该Job的详细信息。

5、失败任务尝试。这里需要说明如果Job执行返回状态是fail,那么可以参照设定的失败次数进行重复尝试。也就是递归的调用。

6、Job启动之前还需要做一系列的检查工作。例如集群是否正常、输入和输出目录是否存在以及处理办法、指定的Jar文件是否存在等等。这些通过调用API都能实现。

五、总结

1、代码已编写完成,也经过了一些测试,基本没有大的问题。

2、一些信息的采集可能不够完成,只能做到一些基本状态的采集,不能作为性能监控和硬件监控的依据。

3、可能还存在一些漏洞和不完整的地方,后面我会持续的改进。

4、对于Hive我在这里还未提到,不使用Hive和不使用shell理由基本一致。如果做简单的业务,个人认为Hive还是首选。

5、写的不对或是有疑问的地方欢迎发邮件讨论。dajuezhao@gmail.com
分享到:
评论

相关推荐

    hadoop api 操作代码

    每个阶段都有相应的Hadoop API参与,开发者可以通过这些API进行干预和优化。 6. **YARN(Yet Another Resource Negotiator)**:是Hadoop的资源管理系统,负责作业调度和容器管理。在YARN上运行的MapReduce作业,会...

    HadoopAPI使用

    org.apache.hadoop.conf 包定义了系统参数的配置文件处理 API,用于管理 Hadoop 集群的配置文件。org.apache.hadoop.fs 包定义了抽象的文件系统 API,用于访问和管理 Hadoop 分布式文件系统(HDFS)。org.apache....

    Hadoop API 手册

    《Hadoop API 手册》是一本专门为Hadoop学习者和开发者准备的重要参考资料,它深入地介绍了Hadoop的API用法,是理解并利用Hadoop进行大数据处理的关键工具。手册以CHM(Microsoft Compiled HTML Help)格式呈现,...

    教你如何查看API及使用hadoop新api编程

    ### Hadoop新旧API对比及应用实践 #### 一、Hadoop API概述 Hadoop作为一个分布式计算框架,提供了丰富的API供开发者使用。随着版本的更新,Hadoop API也在不断演进,新旧API之间存在一定的差异。理解这些差异对于...

    hadoop-API.zip_Hadoop学习_hadoop api

    Hadoop是大数据处理领域的一个核心框架,其API的掌握对于开发者来说至关重要。...总之,这个“hadoop-API.zip”压缩包是学习Hadoop的宝贵资料,通过深入研究和实践,你将能够熟练运用Hadoop API解决实际的大数据问题。

    hadoop api 帮助文档

    通过深入了解和熟练使用Hadoop API,开发者能够构建高效、可靠的分布式应用程序,处理PB级别的数据,满足企业的大数据需求。无论是初学者还是经验丰富的开发者,Hadoop API的帮助文档都是必备的参考资料,助力快速...

    Hadoop 0.20.2 API文档

    MapReduce是Hadoop的数据处理模型,通过“映射”(map)和“化简”(reduce)两个阶段进行并行计算。 在Hadoop 0.20.2 API文档中,关于HDFS的接口包括了文件和目录的操作,如打开、创建、删除、重命名等,以及数据...

    hadoop中文版API.zip

    Hadoop中文版API是针对Apache Hadoop开源框架的中文文档,它为...通过深入学习和实践Hadoop中文版API,开发者能够更有效地开发和优化大数据处理程序,充分利用Hadoop平台的潜力,处理海量数据并实现高效的数据分析。

    hadoop-api中文说明文档

    Hadoop API中文说明文档是针对Apache Hadoop框架的开发者指南,它详细解释了如何使用...通过深入阅读和理解Hadoop API中文说明文档,开发者可以更好地利用Hadoop平台解决大数据问题,实现高效、可靠的分布式计算。

    hadoop的api文档

    通过深入学习这个API文档,开发者可以了解如何有效地利用Hadoop处理大数据问题,同时也能为后续版本的学习打下坚实的基础。 总结起来,Hadoop的API文档是理解Hadoop生态系统和进行分布式计算的关键。无论是对于初学...

    hadoop2.6-api.zip

    通过解压并使用“hadoop2.6-api.zip”,开发者可以直接引用这些API,构建自己的Hadoop应用程序,进行大数据的存储、检索和分析。直接打开“index”文件,可以查看API的详细文档,帮助理解和使用这些接口。Hadoop 2.6...

    Hadoop api 2.7 2.9 3.1 chm 大数据 官方文档 手册

    此外,Hadoop 2.7的API也对HDFS进行了优化,提高了数据读写性能,并增强了容错机制。 2. Hadoop API 2.9:此版本进一步提升了Hadoop的稳定性和性能,增加了对S3A和S3N等云存储的支持,使得Hadoop可以直接与Amazon ...

    hadoop2API帮助文档

    Hadoop2 API帮助文档是针对Hadoop 2.x版本的核心组件提供的一份详细参考资料,旨在帮助开发者高效地利用Hadoop框架进行大数据处理和分析。Hadoop是一个开源的分布式计算框架,由Apache软件基金会维护,其核心包括...

    教你如何查看API及使用hadoop新api编程 高清完整版PDF下载

    本文将详细探讨Hadoop新旧API的区别以及如何在实际项目中进行应用。 #### 二、Hadoop旧API概述 在Hadoop早期版本中,开发者主要使用`mapred`包来进行MapReduce作业的编写。这一时期的API相对较为简单,但存在一些...

    hadoop-1.2.1-api

    通过深入学习和理解这些API,开发者可以有效地利用Hadoop处理海量数据,构建高效的数据处理系统。`hadoop中文版API.chm`文件则为中文环境下的开发工作提供了便利,使得开发者能更直观地理解Hadoop的功能和用法,...

    Hadoop+HBase+Java API

    对于Hadoop,Java API主要包括`org.apache.hadoop.mapreduce`包下的类,如Job、Mapper、Reducer等,用于实现MapReduce任务。对于HBase,Java API包括`org.apache.hadoop.hbase`包,如HBaseAdmin、HTable、Put、Get等...

    hadoop0.23.9离线api

    hadoop0.23.9离线api,解压后进入 doc 目录 ,双击 index.html 和javaapi一样 All Classes Packages org.apache.hadoop org.apache.hadoop.classification org.apache.hadoop.conf org.apache.hadoop.contrib....

    hadoop 1.2.1 api 最新chm 伪中文版

    hadoop 1.2 api 伪中文版。支持即时查询,高级查询。方便编码学习。 大数据炙手可热!hadoop是一个大数据分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分...

    hadoop 0.21.0 API chm

    Hadoop 0.21.0 API CHM 文件...通过深入研究Hadoop 0.21.0 API CHM文档,开发者可以更好地理解和利用Hadoop框架,提高大数据处理的效率和灵活性。这份资料不仅适合初学者入门,也对有经验的开发者有着极高的参考价值。

Global site tag (gtag.js) - Google Analytics