Hadoop多Job并行处理的实例详解

 更新时间:2017年10月18日 10:16:39   作者:回首凡尘不做仙  
这篇文章主要介绍了Hadoop多Job并行处理的实例详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下

Hadoop多Job并行处理的实例详解

有关Hadoop多Job任务并行处理,经过测试,配置如下:

首先做如下配置:

1、修改mapred-site.xml添加调度器配置:

<property>
 <name>mapred.jobtracker.taskScheduler</name>
 <value>org.apache.hadoop.mapred.FairScheduler</value>
</property>

2、添加jar文件地址配置:

<property>
 <name>hadoopTest.jar</name>
 <value>所生成jar的地址</value>
</property>

Java基本代码如下:

// 获取各个Job,有关Job的创建,这里就不贴上来了。
Job job_base = (Job) 。。。;
Job job_avg = (Job) 。。。;
Job job_runCount = (Job) 。。。;
Job job_activeUser = (Job) ....;


job_base.setJarByClass(CapuseDateTimerTask.class);
job_avg.setJarByClass(CapuseDateTimerTask.class);
job_runCount.setJarByClass(CapuseDateTimerTask.class);
job_activeUser.setJarByClass(CapuseDateTimerTask.class);


// 执行完job_base才开始并行以下三个Job;
if (job_base.waitForCompletion(true)) {
FileUtil.hdfsFileHandle(jobBase);


// 并行Job
job_avg.submit();
job_runCount.submit();
job_activeUser.submit();
}

boolean bln1 = job_avg.isComplete();
boolean bln2 = job_runCount.isComplete();
boolean bln3 = job_activeUser.isComplete();


// 计算Job是否完成
while (!bln1 || !bln2 || !bln3) {
bln1 = job_avg.isComplete();
bln2 = job_runCount.isComplete();
bln3 = job_activeUser.isComplete();
}

最后将这些代码组装至Main方法,使用Hadoop执行命令运行:

hadoop jar jar包名称  方法入口所在的类

如:

hadoop jar hadoopTest.jar ch03.test Test

可以通过50030端口来监控Job的并行状态,这里就不多说了!!

解释:

1、配置Jar地址可以解决打包所生成的jar包后,运行时出现ClassNotFound的问题;

2、给多个Job设定setJarByClass,经测试,如果不设定此类,运行时会出现ClassNotFound错误,其中CapuseDateTimerTask为Main方法所在的类名;

3、waitForCompletion与submit方法是有区别的,waitForCompletion是串行,而submit是并行,正是因为submit是并行所以后续的代码操作需要取其执行是否完成的状态来做判断处理即:isComplete();

4、以上Job采用的是:org.apache.hadoop.mapreduce.Job

以上代码操作在单机/集群上测试都通过!

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • java学生信息管理系统源代码

    java学生信息管理系统源代码

    这篇文章主要为大家详细介绍了java学生信息管理系统源代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • PowerJob的ProcessorLoader工作流程源码解读

    PowerJob的ProcessorLoader工作流程源码解读

    这篇文章主要为大家介绍了PowerJob的ProcessorLoader工作流程源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • 在Elasticsearch中添加字段的详细步骤

    在Elasticsearch中添加字段的详细步骤

    在ES中,增加字段相对比较容易,因为ES支持动态映射(Dynamic Mapping),这篇文章主要给大家介绍了关于在Elasticsearch中添加字段的详细步骤,文中给出了详细的代码实例,需要的朋友可以参考下
    2024-07-07
  • Java设计模式之状态模式(State模式)介绍

    Java设计模式之状态模式(State模式)介绍

    这篇文章主要介绍了Java设计模式之状态模式(State模式)介绍,本文讲解了何时使用状态模式、如何使用状态模式等内容,需要的朋友可以参考下
    2015-03-03
  • java json不生成null或者空字符串属性(详解)

    java json不生成null或者空字符串属性(详解)

    下面小编就为大家带来一篇java json不生成null或者空字符串属性(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • mybatis collection和association的区别解析

    mybatis collection和association的区别解析

    这篇文章主要介绍了mybatis collection解析以及和association的区别,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • 基于Java实现一个高效可伸缩的计算结果缓存

    基于Java实现一个高效可伸缩的计算结果缓存

    这篇文章将通过对一个计算结果缓存的设计迭代介绍,分析每个版本的并发缺陷,并分析如何修复这些缺陷,最终完成一个高效可伸缩的计算结果缓存,感兴趣的小伙伴可以了解一下
    2023-06-06
  • 从零开始:快速入门SpringBoot注解的精髓

    从零开始:快速入门SpringBoot注解的精髓

    Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架,它通过使用注解来简化配置和开发过程,使开发人员能够更加专注于业务逻辑的实现,Spring Boot提供了许多注解,用于定义和配置应用程序的各个方面,需要的朋友可以参考下
    2023-10-10
  • 深入探究Java线程不安全的原因与解决

    深入探究Java线程不安全的原因与解决

    线程不安全这个问题,一般在学Java时,我们老师会让我们背诵一段长长的话。"当不同线程同时能访问同一个变量时,可能会导致线程不安全"。实际上,这句话重点想突出的只有原子性。而我们往往考虑线程不安全的原因,会从三方面进行考虑:就是原子性,可见性,有序性
    2022-04-04
  • Spring Get请求与post请求的实现

    Spring Get请求与post请求的实现

    在Spring中,GET请求和POST请求是两种常见的HTTP请求方法,用于与服务器进行交互,本文详细的介绍一下Spring Get请求与post请求的实现,感兴趣的可以了解一下
    2023-10-10

最新评论