hadoop一种简化机制来管理job和control作业之间的非线性依赖,job对象mapreduce表明。

job该目的是通过使实例化jobconf对象的构造函数的工作落实。

x.addDeopendingJob(y)意味着x在y完毕之前不会启动。

鉴于job对象存储着配置和依赖信息,jobcontrol对象会负责监管作业的运行。通过addjob(),你能够为jobcontrol加入作业,当全部作业和依赖关系加入完毕后,调用jobcontrol的run()方法,生成一个线程提交作业并监视其运行,有allFinised(),getFailedJobs()方法

hadoop引入chainMapper和chainReducer来简化预处理和后处理

driver会先设置“全局”jobconf对象。包括作业名。输入路径和输出路径等。它一次性加入全部步骤,然后按顺序运行

ChainMapper.addMapper()方法的签名来具体了解怎样一步步的链接作业

hadoop得知;datajoin;chain署名;combine()-LMLPHP

byvalue用于推断是否是值传递,若为false则採用引用传递。初始mapper的输出内容保存在内存中。假设后期不再调用传入的值,能够这样,效率高,一般设为true

hadoop得知;datajoin;chain署名;combine()-LMLPHP

reduce函数接收输入数据,并对其值进行交叉乘积,reduce生成这些值的全部合并结果。

交叉乘积得到的每一个合并结果被送入函数combine()(不是combiner)生成一个输出记录,对于随意特定的合并,combine能够选择不输出。交叉乘积的本质确保了combine看到的记录都有同样的连接键

在解释怎样使用DatajoingMapperBase和DataJoinReduceBase之前。你须要了解在代码通篇所使用的一个抽象数据类TaggedMapOutput(用Text标签封装记录的数据类型)

在数据流的描写叙述中,mapper输出的包带有一个组键和一个被标签记录的值,datajoin软件包指定组键为text类型。而值为TaggerMapOutput类型,它详细实现了getTag()和setTag(Text Tag)方法

作为mapper的输出,TaggerMapOutput必须是Writable类型,因此我们的子类必须实现readFile()和write()方法

DataJoinMapper运行全部的封装,指定了三个能够填充的抽象方法

generateInputTag在map任务開始前调用。来为这个map任务所处理的全部记录指定一个全局标签,

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmVlZGthbmU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

假设横跨几个文件。能够用它们的前缀作为标签

完毕map任务初始化后。为每一个记录调用DataJoinMapperBase的map()方法。

里面调用generateTaggedOutput()和generateGroupKey()方法

原则上。在同一文件里,不同的记录能够用不同的标签,在标准情况下。我们希望一个标签代表一个数据源,它早先由generateInputTag()计算好并存在this.InputTag中

版权声明:本文博主原创文章。博客,未经同意不得转载。

04-16 16:32