知识学习——Hadoop MapReduce开发入门程序WordCount详解
来源:互联网 发布:复杂网络建模基本概念 编辑:程序博客网 时间:2024/05/20 06:39
##MapReduce计算模型
在Hadoop中,用于执行MapReduce任务的机器有两份角色:JobTracker和TaskTracker。JobTracker用于管理和调度工作,TaskTracker是用来执行工作的,一个Hadoop集群中只有一个JobTracker。
MapReduce Job
在Hadoop中,每个MapReduce任务会被初始化一个Job。每个Job可以分为Map阶段和Reduce阶段,可用Map和Reduce函数来表示。
Map函数接受一个<key,value>
形式的输入,产生一个同样为<key,value>
形式的中间输出,Hadoop将具有相同Key值的value集合到一起传递给Reduce函数,Reduce函数接受了一个如<key,list of value>
形式的输入,Reduce对此进行处理,输出<key,value>
形式的数据。
MapReduce入门程序WordCount
Map阶段
public class WordCount {//输入key类型,value类型,输出key类型,value类型 public static class WordCountMap extends Mapper<LongWritable, Text, Text, IntWritable> { //one表示单词出现一次 private final IntWritable one = new IntWritable(1); //word用于存储切下的单词 private Text word = new Text(); public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { //对输入的行切词 StringTokenizer token = new StringTokenizer(value.toString()); while (token.hasMoreTokens()) { //切下的单词存入word word.set(token.nextToken()); //用context将key,value输出 context.write(word, one); } } }
Reduce阶段
public static class WordCountReduce extends Reducer<Text, IntWritable, Text, IntWritable> { //输入key类型,value类型,输出key类型,value类型 //输入的格式是<key,list of value>形式 public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int sum = 0; //计算value的和 for (IntWritable val : values) { sum += val.get(); } //用context将key,value输出 context.write(key, new IntWritable(sum)); } }
public static void main(String[] args) throws Exception { //定义文件的输入输出地址 String[] paths = { "hdfs://master:9000/pxf/input/*.txt", "hdfs://master:9000/pxf/output" }; //调用conf类来对MapReduce Job进行初始化并命名 Configuration conf = new Configuration(); Job job = new Job(conf, "wordcount"); job.setJarByClass(WordCount.class); //设置Job输出结果<key,value>的中key和value数据类型 //因为结果是<单词,个数>,所以key设置为"Text"类型,相当于Java中String类型。 //Value设置为"IntWritable",相当于Java中的int类型 job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); //设置Job处理的Map(拆分)、以及Reduce(合并)的相关处理类 job.setMapperClass(WordCountMap.class); job.setReducerClass(WordCountReduce.class); job.setInputFormatClass(TextInputFormat.class); job.setOutputFormatClass(TextOutputFormat.class); FileInputFormat.addInputPath(job, new Path(paths[0])); FileOutputFormat.setOutputPath(job, new Path(paths[1])); job.waitForCompletion(true); }}
阅读全文
0 0
- 知识学习——Hadoop MapReduce开发入门程序WordCount详解
- 知识学习——Hadoop MapReduce开发入门
- Hadoop之MapReduce—Wordcount
- HADOOP 分布式集群环境下第一个mapReduce程序—WordCount
- hadoop入门程序WordCount代码详解
- MapReduce程序——wordCount
- Hadoop之Mapreduce------>入门级程序WordCount原理
- Hadoop之Mapreduce------>入门级程序WordCount代码编写
- Hadoop MapReduce WordCount程序编写
- Hadoop之MapReduce的程序开发(二)---WordCount
- hadoop学习笔记(三)mapreduce程序wordcount
- hadoop编程入门学习笔记-3 开发MapReduce程序
- hadoop学习WordCount+Block+Split+Shuffle+MapReduce详解
- Hadoop之MapReduce—Wordcount扩展
- MapReduce--1--入门程序WordCount
- Hadoop Wordcount 程序 详解
- hadoop学习之HDFS(2.1):linux下eclipse中配置hadoop-mapreduce开发环境并运行WordCount.java程序
- hadoop入门——wordcount
- Ubuntu14.04系统10分钟搭建JavaWeb常用运行环境(jdk+tomcat+mysql+phpmyadmin)
- 推荐系统中的矩阵分解
- 数据结构实验之查找三:树的种类统计
- Interceptor登录拦截(Spring拦截器)
- (二十一)套接字
- 知识学习——Hadoop MapReduce开发入门程序WordCount详解
- cas配置
- 《人类简史》读书笔记(分析阅读)
- 二分搜索树的删除节点操作
- java
- 13个能快速开发android的经典项目
- 213. House Robber II
- Python 深入浅出
- JAVA