`

Hadoop MapReduce JAVA API

 
阅读更多


第一部分:Word Count 程序讲解
 
•编写一个MapReduce 程序的步骤
–编写一个Mapper类
–编写一个Reducer类
–编写一个Driver类(即Job),来将Mapper与Reducer类来进行组合。
 
 

java代码:
Mapper

public class WordMapper extends MapReduceBase implements
		Mapper<LongWritable, Text, Text, IntWritable> {
	private final static IntWritable one = new IntWritable(1);
	private Text word = new Text();
	@Override
	public void map(LongWritable key, Text value,OutputCollector<Text, IntWritable> output, Reporter reporter)
			throws IOException {
		String line = value.toString();
		 for(String word : s.split("\\W+")){
                            if(word.length()>0){
 		        output.collect(new Text(word),new IntWritable(1));
  	                 }
                        }	
            }
}

java代码:
Reducer

public class WordReducer extends MapReduceBase implements
Reducer<Text, IntWritable, Text, IntWritable>{
	
	@Override
	public void reduce(Text key, Iterator<IntWritable> values,OutputCollector<Text, IntWritable> output, Reporter reporter)
			throws IOException {
		Int sum = 0;
		while (values.hasNext()) {
			sum += values.next().get()+sum;
		}
		output.collect(key, new IntWritable(sum));
	}

}
第二部分:Mapper API 介绍
•老版Mapper API
– org.apache.hadoop.mapred Interface Mapper<K1,V1,K2,V2>
 
•新版Mapper  API
– org.apache.hadoop.mapreduce Class Mapper<KEYIN,VALUEIN,KEYOUT,VALUEOUT>
 
第三部分:Reducer API 介绍
•老版 Reducer API
– org.apache.hadoop.mapred Interface Reducer<K2,V2,K3,V3>
 
•新版 Reducer API
– org.apache.hadoop.mapreduce Class Reducer<KEYIN,VALUEIN,KEYOUT,VALUEOUT>
 
第四部分:Job运行模式
•MapReduce程序可以以以下三种模式运行
–Local(Standalone) Mode:只有一个 Java 虚拟机在跑,完全没有分布式的成分。且不使用HDFS文件系统,而是使用本机的Linux文件系统。
–Pseudo-distributed Mode:在同一台机器上启动独立数个 JVM 进程,每一个hadoop daemon运行在一个单独的JVM进程中,进行“伪分布式”操作。
–Fully-distributed Mode:真正的可以运行于多台机器上的分布式模式。其中, Standalone mode 使用local filesystem 以及 local MapReducer job runner, Distributed mode 使用HDFS 以及 MapReduce daemons
 
•对应的配置文件 conf/core-site.xml:
    为Hadoop设定默认的文件系统
 
 <configuration>
  <property>
         <name> fs.default.name </name>
         <value>       VALUE      </value>
</property>
</configuration>
 
Standalone mode:    VALUE=file:///
Pseudo-distributed mode: VALUE=hdfs://localhost:9000
Fully-Distributed mode:   VALUE=hdfs://namenode
•对应的配置文件 conf/mapred-site.xml
<configuration>
 <property>
     <name> mapred.job.tracker </name>
      <value>            VALUE         </value>
 </property>
</configuration>
 
Standalone mode:          VALUE=local
Pseudo-distributed mode: VALUE=localhost:9001
Fully-Distributed mode:   VALUE=jobtracker:9001
HDFS client使用这个属性来决定NameNode的位置,这样HDFS client就可以连接到该NameNode.
第五部分:集群上运行Word Count
•打包
•启动
•MapReduce网络用户界面
•获取结果
•调试作业
 
 
•打包
步骤
在项目上,选择[File]=>Export,导出项目为一个jar包
•启动
– 步骤
hadoop jar yourjar.jar mainClassName  -conf inputfolder outputfolder
 
•MapReduce网络用户界面
– url
        http://localhost:50030/
•获取结果
–Hadoop fs –ls outputfolder
•调试作业
–加入传统的Log输出
–使用Reporter 来做错误源的输出比对
第六部分:Mapreduce 工作流
•如何将问题分解成MapReduce作业 
 –复杂的需求
  •在Word Count 程序中,求出单词出现频率的总和
  •单词中包含大写字母H的则转换为小写
  •在Word Count 程序中,求出单词出现频率的总和与单词的个数
•运行独立的作业
  –假设有Job1,Job2,需要运行
   •如果作业是线性的
      JobClinet.runjob(conf1)
      JobClinet.runjob(conf2)
   •如果更负责的是环形的
  –
  –可以通过Hadoop自带的JobControl来运行
 
3
13
分享到:
评论

相关推荐

    Hadoop+HBase+Java API

    对于Hadoop,Java API主要包括`org.apache.hadoop.mapreduce`包下的类,如Job、Mapper、Reducer等,用于实现MapReduce任务。对于HBase,Java API包括`org.apache.hadoop.hbase`包,如HBaseAdmin、HTable、Put、Get等...

    java操作hadoop之mapreduce计算整数的最大值和最小值实战源码

    本教程将详细讲解如何使用Java编程语言操作Hadoop的MapReduce来计算整数序列中的最大值和最小值,这对于数据分析和处理任务来说是非常基础且实用的技能。 首先,我们需要理解MapReduce的工作原理。MapReduce是一种...

    Hadoop MapReduce v2 Cookbook.pdf

    读者将学习到如何利用Java API实现自定义Mapper和Reducer,以及如何处理复杂的业务逻辑。此外,书中可能还会涵盖使用Hadoop生态中的其他工具,如HDFS(Hadoop Distributed File System)和Hive、Pig等数据查询与分析...

    hadoop-mapreduce-client-jobclient-2.6.5-API文档-中文版.zip

    标签:apache、mapreduce、jobclient、client、hadoop、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结

    hadoop的java_api

    9. **Hadoop配置**:在使用Hadoop Java API时,通常需要通过`Configuration`对象设置参数,如HDFS的地址、MapReduce的配置信息等。 10. **Hadoop客户端**:在Hadoop 2.x中,客户端库包含了一组API,用于与Hadoop...

    Hadoop_MapReduce教程

    - **Hadoop Pipes**:提供了 C++ API,允许开发者使用 C++ 编写 MapReduce 程序。 #### 六、Hadoop MapReduce 的局限性 尽管 Hadoop MapReduce 在大规模数据处理方面表现出色,但它也有一些局限性: - **不适合...

    hadoop-mapreduce-client-app-2.7.3-API文档-中英对照版.zip

    标签:apache、hadoop、mapreduce、client、app、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释...

    Hadoop_MapReduce教程.doc

    如Hadoop Streaming允许使用任意可执行程序(如Shell脚本)作为mapper和reducer,而Hadoop Pipes则是一个C++ API,可用于创建MapReduce应用程序。 7. **输入与输出**: MapReduce作业的输入和输出都是键值对的形式...

    hadoop-mapreduce-client-jobclient-2.6.5-API文档-中英对照版.zip

    赠送jar包:hadoop-mapreduce-...标签:apache、mapreduce、jobclient、client、hadoop、jar包、java、API文档、中英对照版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人

    hadoop-mapreduce-client-core-2.5.1-API文档-中文版.zip

    标签:core、apache、mapreduce、client、hadoop、jar包、java、API文档、中文版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,...

    hadoop-mapreduce-client-app-2.6.5-API文档-中英对照版.zip

    标签:apache、mapreduce、client、hadoop、jar包、java、API文档、中英对照版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,...

    Hadoop Mapreduce Cookbook(英文版)

    书中会展示如何使用Java API创建自定义的Mapper和Reducer,以及如何处理各种数据类型和转换。 4. **数据处理策略**:MapReduce支持多种数据处理策略,如排序、分组、Join操作等。这些策略在处理大规模数据时非常...

    hadoop-mapreduce-client-app-2.6.5-API文档-中文版.zip

    标签:apache、mapreduce、client、hadoop、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明...

    hadoop-mapreduce-client-core-2.7.3-API文档-中英对照版.zip

    标签:apache、hadoop、mapreduce、client、core、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,...

    007_hadoop中MapReduce应用案例_1_数据去重

    此外,`源码`标签提示我们关注代码实现的细节,这可能包括对Hadoop API的使用,如`JobConf`、`InputFormat`、`OutputFormat`等。`工具`标签可能意味着这个案例中还涉及到了其他辅助工具或库,例如Hadoop命令行工具,...

    hadoop 1.2.1 api 最新chm 伪中文版

    hadoop 1.2 api 伪中文版。支持即时查询,高级查询。方便编码学习。 大数据炙手可热!hadoop是一个大数据分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分...

    大数据-hadoop-mapreduce代码

    在这个压缩包中,"mapreduce0508"可能是一个包含具体MapReduce程序的目录或者文件,可能包括Java源代码,这些代码展示了如何编写Mapper和Reducer类。Mapper类通常会实现`map()`方法,而Reducer类则会实现`reduce()`...

    Hadoop之MapReduce的Java实现在windows下开发需要的winutils等文件

    在Windows环境下进行Hadoop MapReduce的Java开发时,由于Hadoop主要是为Linux...理解MapReduce的工作原理,正确配置和使用`winutils.exe`,以及熟悉Hadoop的Java API,是成功实现Windows环境下Hadoop MapReduce的关键。

    Hadoop集群配置及MapReduce开发手册

    - **配置MapReduce库**: 指定Hadoop MapReduce库的位置,以便Eclipse可以正确识别MapReduce相关的API。 **3.3 建立MapReduce工程** - **创建新项目**: 在Eclipse中创建一个新的Java项目,并选择Hadoop MapReduce...

Global site tag (gtag.js) - Google Analytics