收藏私塾在线
 

欢迎您来到私塾在线网!   

请登录! 

免费注册 


hadoop的笔记
状态: 离线
人气:2647357
访问用户量:2918
笔记经验:1309
总积分: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)

2016-08-19 13:28:29
Hadoop实战-初级部分 之 Hadoop MapReduce JAVA API
浏览(83300)|评论(100)   交流分类: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来运行
 
该帖子包含附件,回复帖子后即可下载附件。
精品视频课程推荐

深入浅出学Shrio视频教程
内容概述:Shiro是目前最热门、最易用、功能超强大的Java权限管理框架,强烈推荐,每个项目都必备的权限管理技术!通过本课程,你将从零开始直到彻底掌握Shiro的相关开发知识,达到可以进行实际项目开发的能力。包括:权限管理基础、Shiro入门、配置、身份认证、授权、Realms、Session管理、和Spring的集成、Web、Cache等众多开发细节技术 技术要点:源码级分析Shiro的授权过程、自定义开发Realm、多个Realms的开发配置、自定义开发AuthenticationStrategy、自定义开发自定义SessionDAO、和Struts2+Spring3的集成(包括修正struts2的bug)、Shiro和SpringMVC+Spring3的集成、包装使用其他的Cache框架、缓存数据同步更新的解决方案等等实际开发中常用的内容

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

深入浅出学Spring Web MVC视频教程
系统、完整的学习Spring Web MVC开发的知识。包括:Spring Web MVC入门;理解DispatcherServlet;注解式控制器开发详解;数据类型转换;数据格式化;数据验证; 拦截器;对Ajax的支持;文件上传下载;表单标签等内容;最后以一个综合的CRUD带翻页的应用示例来综合所学的知识

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

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

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

评论(100)
100楼 jinkd6  2016-08-19 引用

讲的很好,学习中

99楼 hukunfeiguochao  2016-08-19 引用

学习中。。。课程不错

98楼 hukunfeiguochao  2016-08-19 引用

 讲的很好,学习中

97楼 baobao  2016-08-19 引用

xuexue

96楼 1519623220  2016-08-19 引用

牛啊   

95楼 刷儿  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 引用

学习中。。

85楼 幽默你懂得  2015-06-24 引用

恩恩

84楼 wind  2015-04-11 引用

学习中。。。课程不错

83楼 wind  2015-04-11 引用

学习中。。。课程不错

82楼 swhscmyns  2015-03-16 引用

感谢分享

请登录后评论 登录

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

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