- 浏览: 60885 次
- 性别:
- 来自: 北京
最新评论
-
scu_cxh:
您好,我在学习hadoop方面的东西,想做一个对task监控的 ...
JobClient应用概述 -
bennie19870116:
看不到图呢...
Eclipse下配置使用Hadoop插件
一、需求背景
由于我们在做一些业务的时候,可能需要多个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
由于我们在做一些业务的时候,可能需要多个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的基准测试工具使用(部分转载)
2011-01-21 11:58 1602一、背景由于以前没有 ... -
分布式集群中的硬件选择
2011-01-21 11:58 1029一、背景最近2个月时间一直在一个阴暗的地下室的角落里工作,主要 ... -
Map/Reduce的内存使用设置
2011-01-21 11:57 1643一、背景今天采用10台 ... -
Hadoop开发常用的InputFormat和OutputFormat(转)
2011-01-21 11:55 1478Hadoop中的Map Reduce框架依 ... -
SecondaryNamenode应用摘记
2010-11-04 15:54 1059一、环境 Hadoop 0.20.2、JDK 1.6、 ... -
Zookeeper分布式安装手册
2010-10-27 09:41 1325一、安装准备1、下载zookeeper-3.3.1,地址:ht ... -
Hadoop分布式安装
2010-10-27 09:41 1007一、安装准备1、下载hadoop 0.20.2,地址:http ... -
Map/Reduce使用杂记
2010-10-27 09:40 954一、硬件环境1、CPU:Intel(R) Core(TM)2 ... -
Hadoop中自定义计数器
2010-10-27 09:40 1530一、环境1、hadoop 0.20.22、操作系统Linux二 ... -
Map/Reduce中的Partiotioner使用
2010-10-27 09:39 909一、环境1、hadoop 0.20.22 ... -
Map/Reduce中的Combiner的使用
2010-10-27 09:38 1185一、作用1、combiner最基本是实现本地key的聚合,对m ... -
Hadoop中DBInputFormat和DBOutputFormat使用
2010-10-27 09:38 2429一、背景 为了方便MapReduce直接访问关系型数据 ... -
Hadoop的MultipleOutputFormat使用
2010-10-27 09:37 1682一、背景 Hadoop的MapReduce中多文件输出默 ... -
Map/Reduce中公平调度器配置
2010-10-27 09:37 1537一、背景一般来说,JOB ... -
无法启动Datanode的问题
2010-10-27 09:37 2392一、背景早上由于误删namenode上的hadoop文件夹,在 ... -
Map/Reduce的GroupingComparator排序简述
2010-10-27 09:36 1341一、背景排序对于MR来说是个核心内容,如何做好排序十分的重要, ... -
Map/Reduce中分区和分组的问题
2010-10-27 09:35 1133一、为什么写分区和分组在排序中的作用是不一样的,今天早上看书, ... -
关于Map和Reduce最大的并发数设置
2010-10-27 09:34 1242一、环境1、hadoop 0.20.22、操作系统 Linux ... -
关于集群数据负载均衡
2010-10-27 09:33 886一、环境1、hadoop 0.20.22、操作系统 Linux ... -
Map/Reduce执行流程简述
2010-10-27 09:33 981一、背景最近总在弄MR的东西,所以写点关于这个方面的内容,总结 ...
相关推荐
每个阶段都有相应的Hadoop API参与,开发者可以通过这些API进行干预和优化。 6. **YARN(Yet Another Resource Negotiator)**:是Hadoop的资源管理系统,负责作业调度和容器管理。在YARN上运行的MapReduce作业,会...
org.apache.hadoop.conf 包定义了系统参数的配置文件处理 API,用于管理 Hadoop 集群的配置文件。org.apache.hadoop.fs 包定义了抽象的文件系统 API,用于访问和管理 Hadoop 分布式文件系统(HDFS)。org.apache....
《Hadoop API 手册》是一本专门为Hadoop学习者和开发者准备的重要参考资料,它深入地介绍了Hadoop的API用法,是理解并利用Hadoop进行大数据处理的关键工具。手册以CHM(Microsoft Compiled HTML Help)格式呈现,...
### Hadoop新旧API对比及应用实践 #### 一、Hadoop API概述 Hadoop作为一个分布式计算框架,提供了丰富的API供开发者使用。随着版本的更新,Hadoop API也在不断演进,新旧API之间存在一定的差异。理解这些差异对于...
Hadoop是大数据处理领域的一个核心框架,其API的掌握对于开发者来说至关重要。...总之,这个“hadoop-API.zip”压缩包是学习Hadoop的宝贵资料,通过深入研究和实践,你将能够熟练运用Hadoop API解决实际的大数据问题。
通过深入了解和熟练使用Hadoop API,开发者能够构建高效、可靠的分布式应用程序,处理PB级别的数据,满足企业的大数据需求。无论是初学者还是经验丰富的开发者,Hadoop API的帮助文档都是必备的参考资料,助力快速...
MapReduce是Hadoop的数据处理模型,通过“映射”(map)和“化简”(reduce)两个阶段进行并行计算。 在Hadoop 0.20.2 API文档中,关于HDFS的接口包括了文件和目录的操作,如打开、创建、删除、重命名等,以及数据...
Hadoop中文版API是针对Apache Hadoop开源框架的中文文档,它为...通过深入学习和实践Hadoop中文版API,开发者能够更有效地开发和优化大数据处理程序,充分利用Hadoop平台的潜力,处理海量数据并实现高效的数据分析。
Hadoop API中文说明文档是针对Apache Hadoop框架的开发者指南,它详细解释了如何使用...通过深入阅读和理解Hadoop API中文说明文档,开发者可以更好地利用Hadoop平台解决大数据问题,实现高效、可靠的分布式计算。
通过深入学习这个API文档,开发者可以了解如何有效地利用Hadoop处理大数据问题,同时也能为后续版本的学习打下坚实的基础。 总结起来,Hadoop的API文档是理解Hadoop生态系统和进行分布式计算的关键。无论是对于初学...
通过解压并使用“hadoop2.6-api.zip”,开发者可以直接引用这些API,构建自己的Hadoop应用程序,进行大数据的存储、检索和分析。直接打开“index”文件,可以查看API的详细文档,帮助理解和使用这些接口。Hadoop 2.6...
此外,Hadoop 2.7的API也对HDFS进行了优化,提高了数据读写性能,并增强了容错机制。 2. Hadoop API 2.9:此版本进一步提升了Hadoop的稳定性和性能,增加了对S3A和S3N等云存储的支持,使得Hadoop可以直接与Amazon ...
Hadoop2 API帮助文档是针对Hadoop 2.x版本的核心组件提供的一份详细参考资料,旨在帮助开发者高效地利用Hadoop框架进行大数据处理和分析。Hadoop是一个开源的分布式计算框架,由Apache软件基金会维护,其核心包括...
本文将详细探讨Hadoop新旧API的区别以及如何在实际项目中进行应用。 #### 二、Hadoop旧API概述 在Hadoop早期版本中,开发者主要使用`mapred`包来进行MapReduce作业的编写。这一时期的API相对较为简单,但存在一些...
通过深入学习和理解这些API,开发者可以有效地利用Hadoop处理海量数据,构建高效的数据处理系统。`hadoop中文版API.chm`文件则为中文环境下的开发工作提供了便利,使得开发者能更直观地理解Hadoop的功能和用法,...
对于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,解压后进入 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 api 伪中文版。支持即时查询,高级查询。方便编码学习。 大数据炙手可热!hadoop是一个大数据分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分...
Hadoop 0.21.0 API CHM 文件...通过深入研究Hadoop 0.21.0 API CHM文档,开发者可以更好地理解和利用Hadoop框架,提高大数据处理的效率和灵活性。这份资料不仅适合初学者入门,也对有经验的开发者有着极高的参考价值。