码迷,mamicode.com
首页 > 其他好文 > 详细

hadoop学习;datajoin;chain签名;combine()

时间:2014-05-22 07:27:41      阅读:287      评论:0      收藏:0      [点我收藏+]

标签:style   blog   c   ext   http   color   

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()方法的签名来详细了解如何一步步的链接作业

bubuko.com,布布扣

byvalue用于判断是否是值传递,若为false则采用引用传递,初始mapper的输出内容保存在内存中,如果后期不再调用传入的值,可以这样,效率高,一般设为true

bubuko.com,布布扣

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任务所处理的所有记录指定一个全局标签

bubuko.com,布布扣

如果横跨几个文件,可以用它们的前缀作为标签

完成map任务初始化后,为每个记录调用DataJoinMapperBase的map()方法。里面调用generateTaggedOutput()和generateGroupKey()方法

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


hadoop学习;datajoin;chain签名;combine(),布布扣,bubuko.com

hadoop学习;datajoin;chain签名;combine()

标签:style   blog   c   ext   http   color   

原文地址:http://blog.csdn.net/needkane/article/details/26170207

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!