MapReduce:ChainMapper 和 ChainReducer

2024-03-09

我需要将 MapReduce jar 文件拆分为两个作业,以获得两个不同的输出文件,每个文件来自两个作业的每个减速器。

我的意思是第一个作业必须生成一个输出文件,该文件将作为链中第二个作业的输入。

我在 hadoop 版本 0.20 中读到了一些有关 ChainMapper 和 ChainReducer 的内容(目前我正在使用 0.18):这些可能适合我的需求吗?

有人可以建议我一些链接,在哪里可以找到一些示例来使用这些方法吗?或者也许还有另一种方法来解决我的问题?

谢谢你,

Luca


有很多方法可以做到这一点。

  1. 级联作业

    为第一个作业创建 JobConf 对象“job1”,并设置所有参数,其中“input”为输入目录,“temp”为输出目录。执行这个作业:JobClient.run(job1).

    在其正下方,为第二个作业创建 JobConf 对象“job2”,并设置所有参数,其中“temp”为输入目录,“output”为输出目录。执行这个作业:JobClient.run(job2).

  2. 两个 JobConf 对象

    创建两个JobConf对象,并按照(1)设置其中的所有参数,只是不使用JobClient.run。

    然后创建两个 Job 对象,以 jobconfs 作为参数:

    Job job1=new Job(jobconf1); Job job2=new Job(jobconf2);

    使用 jobControl 对象,您可以指定作业依赖项,然后运行作业:

    JobControl jbcntrl=new JobControl("jbcntrl");
    jbcntrl.addJob(job1);
    jbcntrl.addJob(job2);
    job2.addDependingJob(job1);
    jbcntrl.run();
    
  3. ChainMapper 和 ChainReducer

    如果您需要类似于 Map+ 的结构 |减少| Map*,您可以使用 Hadoop 版本 0.19 及更高版本附带的 ChainMapper 和 ChainReducer 类。请注意,在这种情况下,您只能使用一个减速器,但可以在其之前或之后使用任意数量的映射器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MapReduce:ChainMapper 和 ChainReducer 的相关文章

随机推荐