“肢解”Hadoop程序基础模板

  分布式编程相对复杂,而Hadoop本身蒙上大数据、云计算等各种面纱,让很多初学者望而却步。可事实上,Hadoop是一个很易用的分布式编程框架,经过良好封装屏蔽了很多分布式环境下的复杂问题,因此,对普通开发者来说很容易,容易到可以照葫芦画瓢。

大多数Hadoop程序的编写可以简单的依赖于一个模板及其变种。当编写一个新的MapReduce程序时,我们通常采用一个现有的MapReduce程序,通过修改达到我们希望的功能就行了。对于写大部分的Hadoop程序来说几乎就是照葫芦画瓢。

  使用 Java 语言编写 MapReduce 非常方便,因为 Hadoop 的 API 提供了 Mapper 和 Reducer 抽象类,对开发人员来说,只需要继承这两个抽象类,然后实现抽象类里面的方法就可以了。

  一个继承 Mapper 的静态类 MapClass:
  该类实现了 map(Text key,Text value,Context context)方法,map 方法包含三个参数:
          Text key:每行文件的 key 值(即引用的专利)。
          Text value:每行文件的 value 值(即被引用的专利)。
          Context context:Map 端的上下文。
  map 方法主要就是把字符串解析成 Key-Value的形式,发给 Reduce 端来统计。
  需要注意:此任务中的文件输入格式为 KeyValueTextInputFormat,所以 map 方法可以直接将 key/value 作为输出结果。

  一个继承 Reducer 的静态类 ReduceClass: 
  该类实现了 reduce(Text key, Iterable< Text> values, Context context) 方法,reduce 方法包含三个参数:
          Text key:Map 端输出的 Key 值。
          Iterable< Text> values:Map 端输出的 Value 集合(相同 Key 的集合)。
          Context context:Reduce 端的上下文。
   reduce 方法的主要功能就是获取 map 方法的 key-value 结果,相同的 Key 发送到同一个 reduce 里处理,然后迭代 Key,把 Value 相加,结果写到 HDFS 系统里面。

  驱动方法 run() 解释如下: 
  Configuration 类:
            读取 Hadoop 的配置文件,如 site-core.xml、mapred-site.xml、hdfs-site.xml 等。也可以使用 set 方法进行重新设置,如                                              conf.set("fs.default.name","hdfs://single.hadoop.dajiangtai.com:9000")。

  注意:set 方法设置的值会替代配置文件里面配置的值。
     Job 类:

   表示一个 MapReduce 任务。Job 的构造方法有两个参数,第一个参数为 Configuration,第二个参数为 Job 的名称(等同于任务的名称)。 

  Main调用
表示一个 MapReduce 任务。Job 的构造方法有两个参数,第一个参数为 Configuration,第二个参数为 Job 的名称(等同于任务的名称)。

时间: 2024-07-30 06:20:00

“肢解”Hadoop程序基础模板的相关文章

运行第一个Hadoop程序,WordCount

系统: Ubuntu14.04 Hadoop版本: 2.7.2 参照http://www.cnblogs.com/taichu/p/5264185.html中的分享,来学习运行第一个hadoop程序. 在hadoop的安装文件夹 /usr/local/hadoop下创建input文件夹 [email protected]:/usr/local/hadoop$ mkdir ./input 然后copy几个文档到input文件夹中作为WordCount的输入 [email protected]:/u

hadoop rpc基础

第一部分: hadoop rpc基础 RPC,远程程序调用,分布式计算中C/S模型的一个应用实例. 同其他RPC框架一样,Hadoop分为四个部分: 序列化层:支持多种框架实现序列化与反序列化 函数调用层:利用java反射与动态代理实现 网络传输层:基于TCP/IP的Socket机制 服务的处理框架:基于Reactor模式的事件驱动IO模型 Hadoop RPC主要对外提供2种接口 public static ProtocolProxy getProxy/waitForProxy: 构造一个客户

C#程序通过模板自动创建Word文档

原文:C#程序通过模板自动创建Word文档 引言:这段时间有项目要用到c#生成Word文档,通过网络查找到很多内容,但是功能上满足不了个人需求,于是决定借助网友们已经写好的代码,加以修改完善,以便于更好的交流和以后相似问题可以迅速的解决! 备注:本文用到的相关文件,在日志结尾提供下载 ? 第一步.项目基础--引用的添加 ?? 注意:此处要查找的"Microsoft.Office.Interop.Word.dll"版本必须为"11.*.*.*","*&quo

使用Visual Assistant X创建C程序注释模板

本文将讲解C程序注释模板的使用背景.创建方法,并在结束时进行总结. 1.使用背景 在项目开发过程中,为方便组内其他成员能够快速学习自己编写的代码,需要对自己写的函数添加注释.在正规的软件开发流程中,一个标准的函数及其注释可能如下所示. /************************************************************************ Function: ParseBinFile Description: 解析Bin文件数据 Parameter: b

.NET教程:微信小程序基础入门

.NET教程:微信小程序基础入门 准备 Demo 项目地址 (https://github.com/zce/weapp-demo) Clone or Download(需准备GIT环境) $ cd path/to/project/root $ git clone https://github.com/zce/weapp-demo.git project-name --depth 1 $ cd project-name 没有git环境,可以直接下载 (https://github.com/zce/

windows屏幕保护程序opengl模板

Visual Studio 2013 屏幕保护程序opengl模板 ScreenSaver.cpp #define VC_EXTRALEAN #include <windows.h> #include <commctrl.h> #include <scrnsave.h> #include <time.h> #include <math.h> #include <string> #include <time.h> #incl

程序基础(二)

此篇主要是在学习了程序基础后,编写的基础性综合小程序示例. 示例1:写一个函数,功能是提示并获取用户输入的数,判断该数是奇数还是偶数.然后,在主函数中调用两次该函数. 主函数: static void Main(string[] args) { Console.Write("请输入一个整数:"); int input = int.Parse(Console.ReadLine()); IsOdd(input);//函数调用 Console.ReadLine();} 判断奇偶性的函数: s

【转】手摸手,带你用vue撸后台 系列四(vueAdmin 一个极简的后台基础模板)

前言 做这个 vueAdmin-template 的主要原因是: vue-element-admin 这个项目的初衷是一个vue的管理后台集成方案,把平时用到的一些组件或者经验分享给大家,同时它也在不断的维护和拓展中,比如最近重构了dashboard,加入了全屏功能,新增了tabs-view等等.所以项目会越来越复杂,不太适合很多初用vue的同学来构建后台.所以就写了这个基础模板,它没有复杂的功能,只包含了一个后台需要最基础的东西.vueAdmin-template 主要是基于vue-cli w

JAVA并行程序基础

JAVA并行程序基础 一.有关线程你必须知道的事 进程与线程 在等待面向线程设计的计算机结构中,进程是线程的容器.我们都知道,程序是对于指令.数据及其组织形式的描述,而进程是程序的实体. 线程是轻量级的进程,是程序执行的最小单位.(PS:使用多线程去进行并发程序的设计,是因为线程间的调度和切换成本远小于进程) 线程的状态(Thread的State类): NEW–刚刚创建的线程,需要调用start()方法来执行线程: RUNNABLE–线程处于执行状态: BLOCKED–线程遇到synchroni