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

使用JobControl管理mapreduce多job依赖

阅读更多

当我们在处理mr问题的时候,有时候需求过于复杂,通过一个简单的mr无法达到目的,我们该怎么办呢?

答案是采取JobControl,直接上代码。

/**
	 * job2 依赖于 job1
	 * @param job1
	 * @param job2
	 * @param chainName
	 * @return
	 * @throws IOException
	 */
	public static int handleJobChain(Job job1 ,Job job2, String chainName) throws IOException{
		ControlledJob controlledJob1 = new ControlledJob(job1.getConfiguration());
		controlledJob1.setJob(job1);
		
		ControlledJob controlledJob2 = new ControlledJob(job2.getConfiguration());
		controlledJob2.setJob(job2);
		controlledJob2.addDependingJob(controlledJob1);
		
		JobControl jc = new JobControl(chainName);
		jc.addJob(controlledJob1);
		jc.addJob(controlledJob2);
		Thread jcThread = new Thread(jc);
		jcThread.start();
		while(true){
			if(jc.allFinished()){
				System.out.println(jc.getSuccessfulJobList());
				jc.stop();
				return 0;
			}
			if(jc.getFailedJobList().size() > 0){
				System.out.println(jc.getFailedJobList());
				jc.stop();
				return 1;
			}
		}
	}

 

要注意的地方就是hadoop的JobControl类实现了线程Runnable接口。我们需要实例化一个线程来让它启动。直接调用JobControl的run()方法,线程将无法结束

 

分享到:
评论

相关推荐

    hadoop mapreduce多表关联join多个job相互依赖传递参数

    MapReduce提供了一种分布式计算模型,能够高效地处理大规模数据集,但面对多表关联,尤其是多个Job之间的依赖和参数传递,开发者需要掌握特定的策略和技术。以下将详细阐述这些知识点。 首先,理解MapReduce的基本...

    使用Eclipse编译运行MapReduce程序.doc

    【使用Eclipse编译运行MapReduce程序】 MapReduce是Google提出的一种编程模型,用于大规模数据集的并行计算。在Hadoop生态系统中,MapReduce被广泛应用于处理和生成大数据。Eclipse作为流行的Java集成开发环境,...

    20、MapReduce 工作流介绍

    总结来说,MapReduce工作流是Hadoop中处理多阶段数据处理任务的重要工具,通过`JobControl` 和`ControlledJob` ,可以管理和协调一系列相互依赖的MapReduce作业,确保它们按照正确的顺序和条件执行。这对于实现复杂...

    使用命令行编译打包运行自己的MapReduce程序 Hadoop2.6.0

    但在Hadoop 2.x中,这种集中式的依赖管理方式被分成了多个单独的JAR文件,这样的变化提高了系统的灵活性,但也增加了开发人员在构建和部署MapReduce应用程序时的复杂度。 在Hadoop 2.6.0中,运行一个简单的...

    MapReduce多路径输入输出

    这是 MapReduce 的多路径输入输出示例代码。有关大数据的相关文章可以阅读我的专栏:《大数据之Hadoop》 http://blog.csdn.net/column/details/bumblebee-hadoop.html

    使用MyEclipse实现MapReduce

    1. 输入Split:Hadoop根据数据大小将其划分为多个块(Input Split)。 2. Map阶段:每个Input Split由一个Map任务处理,Map任务读取数据,解析成键值对,并调用用户定义的Map函数进行处理,生成新的中间键值对。 3. ...

    实验项目 MapReduce 编程

    此外,通过Shell命令如`mapred job -status id`,可以在运行过程中和结束后跟踪作业状态,这有利于理解MapReduce的执行流程。 实验的总结与思考部分,强调了实验的目标在于理解和掌握MapReduce编程思想,了解...

    mapreduce mapreduce mapreduce

    MapReduce通常与Hadoop框架一起使用,Hadoop提供了实现MapReduce模型的基础设施,包括数据存储(HDFS,Hadoop Distributed File System)和资源管理(YARN,Yet Another Resource Negotiator)。Hadoop允许数据...

    MapReduce的小应用

    使用JobControl类可以管理这两个job的顺序执行。在Reduce阶段,为了避免自动对相同key的字段相加,collect语句应放置在循环内部,确保每行数据独立处理。 **问题2:用户音乐风格偏好分析** 第二个问题是分析每个...

    第一个Mapreduce程序.pdf

    根据文档提供的依赖,我们可以得知,编写MapReduce程序至少需要上述五个jar包。 在正确配置了Java环境和导入了必要jar包之后,源码不再出现编译错误。随后,在Eclipse中将项目导出为JAR文件,这个JAR文件包含了...

    MapReduce实例分析:单词计数

    首先,检查单词计数是否可以使用 MapReduce 进行处理。因为在单词计数程序任务中,不同单词的出现次数之间不存在相关性,相互独立,所以,可以把不同的单词分发给不同的机器进行并行处理。因此,可以采用 MapReduce ...

    java项目Hadoop依赖包

    使用这些依赖包时,Java开发者首先需要在项目中引入对应的jar文件,通常通过Maven或Gradle等构建工具管理依赖。然后,他们可以利用Hadoop提供的API创建MapReduce作业,定义Mapper和Reducer类,设置输入输出格式,...

    MapReduce多语言编程上

    这使得非Java开发者也能利用MapReduce进行大数据处理,降低了使用门槛。 7. **优化技巧**: 为了提升性能,开发者可以对MapReduce作业进行优化,如减少数据的网络传输、选择合适的分区策略、合并小文件等。 在...

    hadoop mapreduce开发需要的pom文件

    hadoop mapreduce开发需要的pom文件,复制内容后,点击编译器的import导入即可使用

    MapReduce的实现细节

    在Hadoop MapReduce中,服务器间的通信主要依赖于远程过程调用(RPC)机制。具体来说: - 客户端通过RPC接口向作业服务器提交作业。 - 作业服务器通过RPC接口分配任务给任务服务器。 - 任务服务器通过RPC接口向作业...

    MapReduce2.0程序设计多语言编程(理论+实践)

    例如,`org.apache.hadoop.mapreduce`包下的各种类和接口,如Job、TaskAttemptID等,用于配置和管理MapReduce作业。 4. **多语言编程**:除了Java,MapReduce还支持其他编程语言,如使用Python的`hadoop streaming`...

    Hadoop mapreduce实现wordcount

    在这个案例中,我们将深入探讨如何在 Hadoop 环境中使用 MapReduce 实现 WordCount。 【描述】在 Hadoop 环境中,WordCount 的实现主要涉及两个关键阶段:Map 阶段和 Reduce 阶段。Map 阶段将原始输入数据(通常是...

    MapReduce基础.pdf

    - **内存管理**:虽然MapReduce能够处理大规模数据,但在处理特别大的数据集时可能会遇到内存不足的问题。 综上所述,MapReduce是一种非常重要的大数据处理模型,尤其适用于批处理场景。通过深入理解其工作原理和...

Global site tag (gtag.js) - Google Analytics