美文网首页
Hadoop 里MapReduce里 实现多个job任务 包含(

Hadoop 里MapReduce里 实现多个job任务 包含(

作者: 吴国友 | 来源:发表于2019-01-15 07:57 被阅读10次

一、迭代式,所谓的迭代式,下一个执行的Job任务以上一个Job的输出作为输入,最终得到想要的结果。 这里我只写关键的代码了

Job job = new Job(new Configuration(),“test”);
 
JobConf jobConf=(JobConf) job.getConfiguration();
jobConf.setJobName("hadoopJoinTask");
 
//设置job输入路径
FileInputFormat.setInputPaths(inputPath);
//设置job输出的路径
FileOutputFormat.setOutputPath(jobConf, outPath);
 
Job job2 = new Job(new Configuration(),“test2”);
 
JobConf jobConf2=(JobConf) job2.getConfiguration();
jobConf2.setJobName("hadoopJoinTask");
 
//设置job2输入路径  job的输出路径
FileInputFormat.setInputPaths(outPath);
//设置job2输出的路径
FileOutputFormat.setOutputPath(jobConf2, outPath2);

二、依赖式,工作中经常遇到这样的情况,比如job3需要等job1、job2、、、等执行完才能执行,因此job3是依赖于其他的job完成才能执行

//hadoop2  查看hadoop源码 JobControl 发现有ControlledJob,  ControlledJob里有依赖方法  addDependingJob
 
        Job job = new Job(new Configuration(),"job1");
        Job job2 = new Job(new Configuration(),"job2");
 
        ControlledJob controlledJob=new ControlledJob(job.getConfiguration());
 
        //设置job
        controlledJob.setJob(job);
 
        ControlledJob controlledJob2=new ControlledJob(job2.getConfiguration());
        controlledJob2.setJob(job2);
        //这里就是设置job依赖的重要方法了,依赖于<span style="font-size: 9pt; font-family: Menlo;">controlledJob</span><span style="font-size: 9pt; font-family: Menlo;">  </span>
        controlledJob.addDependingJob(controlledJob);
 
        JobControl jc=new JobControl("jc");
        jc.addJob(controlledJob);
        jc.addJob(controlledJob2);
        //由于JobControl实现了Runnable 接口,而Runnable接口只有运行方法,没有结束方法,因此需要一个线程来辅助
 
        Thread jcThread = new Thread(jc);
        jcThread.start();
        while(true){
            //当job池里所有的job完成后,执行 下一步操作
            if(jc.allFinished()){
                System.out.println(jc.getSuccessfulJobList());
                jc.stop();
 
 
            }
            //获取执行失败的job列表
            if(jc.getFailedJobList().size() > 0){
                System.out.println(jc.getFailedJobList());
                jc.stop();
 
            }
        }

三、链式

        Configuration conf = new Configuration();
        Job job = new Job(conf);
        job.setJobName("ChianJOb");
        // 在ChainMapper里面添加Map1
        Configuration map1conf = new Configuration(false);
        ChainMapper.addMapper(job, Map1.class, LongWritable.class, Text.class,
                Text.class, Text.class, true, map1conf);
        // 在ChainReduce中加入Reducer,Map2;
        Configuration reduceConf = new Configuration(false);
        ChainReducer.setReducer(job, Reduce.class, LongWritable.class,
                Text.class, Text.class, Text.class, true, map1conf);
        Configuration map2Conf = new Configuration();
        ChainReducer.addMapper(job, Map2.class, LongWritable.class, Text.class,
                Text.class, Text.class, true, <span style="font-family: Menlo; font-size: 9pt;">map2Conf</span><span style="font-size: 9pt; font-family: Menlo;">);</span>

相关文章

  • Hadoop 里MapReduce里 实现多个job任务 包含(

    一、迭代式,所谓的迭代式,下一个执行的Job任务以上一个Job的输出作为输入,最终得到想要的结果。 这里我只写关键...

  • 大数据学习之Hadoop

    一、基础概念 Hadoop包含HDFS和MapReduce,HDFS实现分布式存储,MapReduce实现数据分布...

  • Storm Topology组件

    Storm集群中的任务称之为Topology。 对比Hadoop中的MapReduce job,mapper用于从...

  • 1. hdfs实例

    hadoop包含hdfs和MapReduce,hdfs负责数据文件存储,是hadoop的基础,MapReduce是...

  • 大数据综合笔记

    map reduce分析 参考文章 Hadoop-2.4.1源码分析--MapReduce作业(job)提交源码跟...

  • hadoop简介

    Hadoop目的 Hadoop包含的模块 Hadoop的两个核心组成: HDFS概念 MapReduce Word...

  • 谈谈Hadoop MapReduce和Spark MR实现

    谈谈MapReduce的概念、Hadoop MapReduce和Spark基于MR的实现 什么是MapReduce...

  • Python实现Hadoop MapReduce程序

    使用Python实现Hadoop MapReduce程序 - 不积跬步,无以至千里;不积小流,无以成江海 - 博客...

  • Hadoop权威指南

      客户端(client)提交作业(job),包括:输入数据、MapReduce程序和配置信息。Hadoop将作业...

  • 学习资源整理

    在线学习 腾讯云大学在线学习中心 Hadoop Hadoop官方文档(包含MapReduce/HDFS SHELL...

网友评论

      本文标题:Hadoop 里MapReduce里 实现多个job任务 包含(

      本文链接:https://www.haomeiwen.com/subject/kphedqtx.html