链多个MapReduce作业,将数据发送到相同的映射器

时间:2016-08-08 15:51:50

标签: java hadoop mapreduce

我遇到链接多个mapreduce工作的问题。

目前的情况如下: 应用程序处理2个数据源,每个数据源使用来自2个不同目录的“MultipleInputs”进入单独的映射器

First Job读取2个Mappers中的输入,使用“MultipleOutputs”处理数据并在2个不同目录上输出数据。

现在,第二个作业应该使用第一个作业的相同任务ID处理第一个任务的输出。

例如,

Job1: 2个不同的Mappers,1个Reducer

  • Mapper1_1读取datasource1目录,创建2个任务来处理它们并输出ds1 / ds1-m-00000和ds1 / ds1-m-00001中间文件

  • Mapper1_2读取datasource2目录,创建1个任务来处理它并输出ds2 / ds2-m-00002中间文件

  • Reducer1进行一些计算并输出一些统计数据

Job2: 2个不同的Mappers,1个Reducer

  • Mapper2_1读取ds1目录,创建2个任务来处理2个中间文件。

  • Mapper2_2读取ds2目录,创建1个任务来处理中间文件。

  • Reducer2进行一些计算以输出最终结果

由于某些原因,必须在第二个作业中使用相同的任务ID作为第一个作业中生成的任务ID,但实际上,任务ID是随机生成的,有时在第二个作业中生成,它们像第一个作业一样生成过程成功完成,有时不成功。

是否有控制为2个作业生成相同的任务ID或任何其他方法生成唯一编号以识别两个作业中的同一文件?

0 个答案:

没有答案