收藏私塾在线
 

欢迎您来到私塾在线网!   

请登录! 

免费注册 


hadoop的笔记
状态: 离线
人气:2866914
访问用户量:2996
笔记经验:
总积分:1409
级别:普通会员
搜索本笔记
ta的交流分类
ta的交流主题贴(131)
ta的所有交流贴(138)
ta的全部笔记
全部笔记(249)
未分类笔记(0)
hadoop(109)
luoli的Hado……(19)
精通hadoop(10)
Hadoop原理与代……(6)
HBase(15)
深入浅出学Hive(11)
Hadoop实战-中……(11)
Hadoop实战-初……(8)
hadoop & h……(9)
Hive(18)
zookeeper(8)
Hadoop Str……(14)
云计算综合实战项目(11)
存档
2013-04(11)
2012-10(11)
2012-09(10)
2012-08(191)
2012-07(26)

2017-03-19 15:27:32
Hadoop实战-初级部分 之 Hadoop MapReduce JAVA API
浏览(90252)|评论(104)   交流分类:Java|笔记分类: Hadoop实战-初……


第一部分: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来运行
 
该帖子包含附件,回复帖子后即可下载附件。
精品视频课程推荐

Hadoop实战-初级部分视频教程
Hadoop初级精品课程,帮助学员快速掌握Hadoop入门到上手开发,并掌握一定的开发技巧。通过Hadoop初级课程,学员可以掌握基本的Hadoop 原理,Hadoop环境搭建,Hadoop Shell,Hadoop HDFS基本操作和编程,Hadoop Mapreduce编程。

透彻理解JavaBean视频教程
深入浅出的讲解JavaBen的写法、JavaBean的用法、JavaBean的实现机制、JavaBean对应翻译的代码理解。

研磨设计模式——跟着cc学设计系列视频教程
本视频课程是北京Java私塾原创精品书籍《研磨设计模式》一书的配套学习视频,由《研磨设计模式》的第一作者CC录制 课程目标:全面、系统的掌握GoF设计模式的知识,达到可以在实际项目开发中运用的能力 技术要点:如何实现可配置、如何实现缓存以及缓存的管理、如何实现用缓存来控制多实例的创建、如何实现参数化工厂、 如何实现可扩展工厂、如何实现原型管理器、如何实现Java的静态代理和动态代理、如何实现多线程处理队列请求、 如何实现命令的参数化配置、可撤销的操作、宏命令、队列请求和日志请求、如何实现翻页迭代、如何检测环状结构、 如何实现通用的增删改查、如何模拟工作流来处理流程、如何实现简单又通用的XML读取、如何实现模拟AOP的功能......

Hadoop实战-中高级部分视频教程
Hadoop中高级精品课程,帮助学员快速掌握Hadoop HDFS的原理;MapReduce的原理;MapReduce高级编程;Hadoop的IO机制,如序列化、压缩;Hadoop的RPC,RESTFul API等高级特性;彻底理解Hadoop,成为一名合格的云计算开发者。并掌握一些云端基本的运维知识,从而实现开发和运维兼修的高级人才。

Ajax+JSON基础实战视频教程
数据校验、Javascript模拟多线程、下拉列表联动、操作XML、AJAX结合JSON的操作、Json-lib的使用

浏览(90252)|评论(104)   交流分类:Java|笔记分类: Hadoop实战-初……

评论(104)
104楼 wy90314  2017-03-19 引用

学习中。。。课程不错

103楼 wwqz123  2017-03-19 引用

学习中

102楼 shenjb  2017-03-19 引用

好的

101楼 shenjb  2017-03-19 引用

学习

100楼 hukunfeiguochao  2016-08-19 引用

 讲的很好,学习中

99楼 刷儿  2016-08-19 引用

学习中

98楼 1519623220  2016-08-19 引用

牛啊   

97楼 baobao  2016-08-19 引用

xuexue

96楼 hukunfeiguochao  2016-08-19 引用

学习中。。。课程不错

95楼 jinkd6  2016-08-19 引用

讲的很好,学习中

94楼 刷儿  2016-08-19 引用

不错的材料

93楼 sun  2016-05-16 引用

下载下来学习看看

92楼 凌帆  2016-05-16 引用

学习学习

91楼 lzpazashufe  2016-05-16 引用

xuexi

90楼 想你已成习惯  2015-09-15 引用
感谢分享
89楼 kelen121  2015-09-04 引用

不错

88楼 lijuanjuan  2015-08-27 引用

xuexi

87楼 lzlkni  2015-08-02 引用

正在找这样的材料,不错

86楼 雨后心晴  2015-07-03 引用

学习中。。

请登录后评论 登录

关于我们 | 联系我们 | 用户协议 | 私塾在线服务协议 | 版权声明 | 隐私保护

版权所有 Copyright(C)2009-2012 私塾在线学习网