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()方法的签名来具体了解怎样一步步的链接作业

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

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中

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

hadoop得知;datajoin;chain署名;combine()的更多相关文章

  1. hadoop得知;block数据块;mapreduce实现样例;UnsupportedClassVersionError变态;该项目的源代码相关联

    对于开源的东西.特别是刚出来不久.我认为最好的学习方法是能够看到源代码,doc,样品测试 为了方便查看源代码,导入与项目相关的源代码 watermark/2/text/aHR0cDovL2Jsb2cu ...

  2. [Hadoop in Action] 第5章 高阶MapReduce

    链接多个MapReduce作业 执行多个数据集的联结 生成Bloom filter   1.链接MapReduce作业   [顺序链接MapReduce作业]   mapreduce-1 | mapr ...

  3. MapReduce,DataJoin,链接多数据源

    主要介绍用DataJoin类来链接多数据源,先看一下例子,假设二个数据源customs和orders customer ID       Name      PhomeNumber 1         ...

  4. hadoop中联结不同来源数据

    装载自http://www.cnblogs.com/dandingyy/archive/2013/03/01/2938462.html 有时可能需要对来自不同源的数据进行综合分析: 如下例子: 有Cu ...

  5. hadoop常见问题汇集

    1 hadoop conf.addResource http://stackoverflow.com/questions/16017538/how-does-configuration-addreso ...

  6. 转】用Maven构建Hadoop项目

    原博文出自于: http://blog.fens.me/hadoop-maven-eclipse/ 感谢!   用Maven构建Hadoop项目 Hadoop家族系列文章,主要介绍Hadoop家族产品 ...

  7. 本地通过Eclipse链接Hadoop操作Mysql数据库问题小结

    前一段时间,在上一篇博文中描述了自己抽时间在构建的完全分布式Hadoop环境过程中遇到的一些问题以及构建成功后,通过Eclipse操作HDFS的时候遇到的一些问题,最近又想进一步学习学习Hadoop操 ...

  8. Hadoop(十七)之MapReduce作业配置与Mapper和Reducer类

    前言 前面一篇博文写的是Combiner优化MapReduce执行,也就是使用Combiner在map端执行减少reduce端的计算量. 一.作业的默认配置 MapReduce程序的默认配置 1)概述 ...

  9. Hadoop基础-Map端链式编程之MapReduce统计TopN示例

    Hadoop基础-Map端链式编程之MapReduce统计TopN示例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.项目需求 对“temp.txt”中的数据进行分析,统计出各 ...

随机推荐

  1. oracle 12c 三学习 pdb 可插拔测试

    DECLARE l_result BOOLEAN; BEGIN l_result := DBMS_PDB.check_plug_compatibility( pdb_descr_file => ...

  2. JAVA字符串格式化-String.format()使用

    传统型格类型 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象. 熟悉C语言的同学应该记得C语言的sprintf()方法.两者有类似之处.format()方法有两种重载 ...

  3. Oracle trunc()函数

    Oracle trunc()函数的用法   --Oracle trunc()函数的用法/**************日期********************/1.select trunc(sysd ...

  4. oracle 选择最频繁出现之前,5文章数据

    SELECT * FROM ( SELECT PROJECT_LISTING.MATERIAL, COUNT (*) AS "出现次数" FROM PROJECT_LISTING ...

  5. HDU 4778 内存搜索&如压力

    鉴于G宝石,B包.和S.S当代表凑齐每种颜色的宝石S我们可以成为哲学家的石头 每个软件包包含N宝石.分别c1,c2....... 然后他们轮流拿包.每个包可以得到一次.宝石出包放在地上. 假设你可以成 ...

  6. android 上手维修设备和推断启动服务

    下载链接:http://download.csdn.net/detail/a123demi/7511823 我们经常在开发的时候,通过获取系统已启动的服务来推断该server是否还须要再启动. 而本文 ...

  7. 【剑指offer】面试题39:深度二叉树

    def TreeDepth1(root): if None == root: return 0 if None == root.left and None == root.right: return ...

  8. Android中的表格布局TableLayout

    表格布局最基本的三个属性: XML代码实例: <?xml version="1.0" encoding="utf-8"?> <LinearLa ...

  9. 分散式-ubuntu12.04安装hadoop1.2.1

    在hadoop1.2.1被预装在一份报告中安装说明java.我装了很多的版本号java以及许多的版本号hadoop,然后发现oracle-java7与hadoop1.2.1能够匹配. 一,安装详细过程 ...

  10. Vim 基本配置和经常使用的命令

    vim 优势和应用场景 vim 的优点纯文字编辑和 Linux 完美的融合提供了命令行.只能假设 ssh 至server进行操作,那么这样的情况就仅仅能使用 vim 了.vim 也是最为强大的通用文本 ...