MapReduce计数程序(自主复习)
1.MyWordCount类
注意:
1.本机+测试,两个注释都放开
2.本机跑集群,要开异构平台为true
3.集群跑,把两个注释都注起来,然后在集群上面跑
package com.littlepage.wc; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; import java.io.IOException; public class MyWordCount {
public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
//1.读取配置
Configuration conf=new Configuration(true);
//设定本地环境运行,不进行集群运行
// conf.set("mapreduce.framework.name","local");
//设定异构平台
// conf.set("mapreduce.app-submission.cross-platform","true");
//2.设定Job
Job job=Job.getInstance(conf);
//3.设定Job执行的类
job.setJarByClass(MyWordCount.class);
//4.设定JobName
job.setJobName("SteveYu's word count");
//5.设定输入path
Path infile=new Path("/data/wc/input");
TextInputFormat.addInputPath(job,infile);
//6.设定输出path
Path outfile=new Path("/data/wc/loveloveOutput");
if(outfile.getFileSystem(conf).exists(outfile)) outfile.getFileSystem(conf).delete(outfile,true);
TextOutputFormat.setOutputPath(job,outfile);
//7.设定MapperClass和ReduceClass
job.setMapperClass(WordCountMapper.class);
job.setReducerClass(WordCountReducer.class);
//8.设定输出的Key,Value格式
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
//9.等待程序完成
job.waitForCompletion(true);
}
}
2.WordCountMapper类
作用:
定义一个拆分文本的功能,将Mapper进行拆分成key, value的形式
package com.littlepage.wc; import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper; import java.io.IOException;
import java.util.StringTokenizer; public class WordCountMapper extends Mapper<Object,Text,Text,IntWritable> {
private final static IntWritable one=new IntWritable();
private Text word=new Text(); @Override
protected void map(Object key, Text value, Context context) throws IOException, InterruptedException {
StringTokenizer itr=new StringTokenizer(value.toString());
while(itr.hasMoreTokens()){
word.set(itr.nextToken());
context.write(word,one);
}
}
}
3.WordCountReducer类
作用:
进行第二次映射计算
package com.littlepage.wc; import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer; import java.io.IOException; public class WordCountReducer extends Reducer<Text, IntWritable,Text,IntWritable> {
private IntWritable result=new IntWritable();
//相同的key为一组 ,这一组数据调用一次reduce
//hello 1 @Override
protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
int sum=;
for (IntWritable val:values) {
sum+=val.get();
}
result.set(sum);
context.write(key,result);
}
}
4.单机跑可能出现的问题
1.hadoop必须解压
2.hadoop必须配置HADOOP_HOME以及环境变量
3.hadoop必须将core-site.xml放进resources文件夹里面,并且文件夹得标识为source文件夹
4.hadoop的bin在windows必须粘贴为windows版本,并且,我们需要把hadoop.dll复制到system32文件夹内,因为system32是存放系统小工具的一个文件夹
MapReduce计数程序(自主复习)的更多相关文章
- MapReduce TopN(自主复习)
1.MyTopN 主程序 package com.littlepage.topn; import org.apache.hadoop.conf.Configuration; import org.a ...
- Hadoop分布环境搭建步骤,及自带MapReduce单词计数程序实现
Hadoop分布环境搭建步骤: 1.软硬件环境 CentOS 7.2 64 位 JDK- 1.8 Hadoo p- 2.7.4 2.安装SSH sudo yum install openssh-cli ...
- [Hadoop in Action] 第4章 编写MapReduce基础程序
基于hadoop的专利数据处理示例 MapReduce程序框架 用于计数统计的MapReduce基础程序 支持用脚本语言编写MapReduce程序的hadoop流式API 用于提升性能的Combine ...
- 第一章 flex单词计数程序
学习Flex&Bison目标, 读懂SQLite中SQL解析部分代码 Flex&Bison简介Flex做词法分析Bison做语法分析 第一个Flex程序, wc.fl, 单词计数程序 ...
- 【Storm】storm安装、配置、使用以及Storm单词计数程序的实例分析
前言:阅读笔记 storm和hadoop集群非常像.hadoop执行mr.storm执行topologies. mr和topologies最关键的不同点是:mr执行终于会结束,而topologies永 ...
- 微信小程序期末复习
过什么六一,复习不完了... 第1章作业 一.单选题(共10题,100.0分) 1以下哪个不是主流的手机操作系统? A.Android B.iOS C.Windows Phone D.Blackber ...
- 运行在YARN上的MapReduce应用程序(以MapReduce为例)
client作用:提交一个应用程序查看一个应用程序的运行状态(通过application master) 第一步:提交MR程序到ResourceManager,ResourceManager为这个应用 ...
- 《Hadoop权威》学习笔记五:MapReduce应用程序
一.API的配置---Configuration类 API的配置:Hadoop提供了专门的API对资源进行配置,Configuration类的实例(在org.apache.hadoop.conf包)包 ...
- 一脸懵逼学习Hadoop中的序列化机制——流量求和统计MapReduce的程序开发案例——流量求和统计排序
一:序列化概念 序列化(Serialization)是指把结构化对象转化为字节流.反序列化(Deserialization)是序列化的逆过程.即把字节流转回结构化对象.Java序列化(java.io. ...
随机推荐
- c++ 引用& 与 取地址&
https://www.csdn.net/gather_2e/NtjaYgzsNTctYmxvZwO0O0OO0O0O.html 还有指针和取值: int& a = b; int *c = & ...
- fstab中使用设备的uuid
设备定位的方法有: 设备名称, 如:/dev/sda1, 随着linux内核加载模块顺序在每次启动的时候可能会不同, 在插拔U盘/移动硬盘的时候, 设备分配到的名称可能不同,这样fs映射就会失败 因此 ...
- plsql连接本地oracle数据库,而远程主机却无法连接,出现无监听程序的解决方法(转)
原文转自:plsql连接本地oracle数据库,而远程主机却无法连接,出现无监听程序的解决方法 最近在使用plsql连接本地oracle数据库的时候,在同一网络环境中,出现了可以连接本地oracle, ...
- 【VS开发】 自己编写一个简单的ActiveX控件——详尽教程
最近开始学ActiveX控件编程,上手不太容易,上网想找相关教程也没合适的,最后还是在师哥的指导下完成了第一个简单控件的开发,现在把开发过程贴出来与大家分享一下~ (环境说明--平台:vs2005:语 ...
- https原理以及golang基本实现
关于https 背景知识 密码学的一些基本知识 大致上分为两类,基于key的加密算法与不基于key的加密算法.现在的算法基本都是基于key的,key就以一串随机数数,更换了key之后,算法还可以继续使 ...
- get、set快捷键那码事儿
今天发现一个省时间的方法.get一下,哈哈 在快捷get/set.或其他那个页面上的方法时,只需Shift+Alt+s 然后,选择哪个方法,就按该方法字母下有横线的那个字母(只按单个字母就行) 在ge ...
- 红帽学习笔记[RHCE]OpenLDAP 服务端与客户端配置
目录 OpenLDAP 服务端与客户端配置 关于LDIF 一个LDIF基本结构一个条目 属性 Object的类型 服务端 安装 生成证书 生成默认数据 修改基本的配置 导入基础数据 关于ldif的格式 ...
- poj1220(短除法实现任意进制转换)
题目链接:https://vjudge.net/problem/POJ-1220 题意:给定a进制的大数s,将其转换为b进制.其中2<=a,b<=62. 题意:一般进制转换是以10进制为中 ...
- 【3.1】【mysql基本实验】mysql复制(主从复制/异步复制/半同步复制,一主一从)
关键词:mysql复制(异步复制),mysql异步复制 核心原理: mysql 复制流程原理 一个事务在 mysql异步复制中的流程与生命周期 一个事务,在传统半同步的复制流程 #mysql主从基本实 ...
- MARKDOWN使用文档
ISSUE引用 引用当前项目内的ISSUE #1 markdown写法 #1 引用当前命名空间下的其他项目内的ISSUE projectname#1 sofa_ta#1 markdown写法 sofa ...