1 hadoop的wordCount就像学编程时候的helloWord 一样,是编写程序的一个开始。
程序可以根据注释加以理解:
/** * @ClassName: WordCount2 * @Description: 执行:1 打成jar包 2 上传到hadoop服务器中 3 利用hadoop命令执行(输入和输出参数用文件夹) * 如: bin/hadoop jar WordCount1.jar /user/root/word_count_in/ /user/root/word_count_out * @author:root * @date 2014年11月24日 下午4:52:30 * */ public class WordCount2 { /** * Mapper<Object, Text, Text, IntWritable> 四个参数分别为 maper的输入key类型,输入value的类型,输出key的类型,输出value的类型 * mapper输出的key,value类型就是reducer输入的key,value类型,默认mapper输入key为行号,value为一行的字符串 * reducer将mapper输出按照key分组,相同的key数据列表放到同一个列表中,一起传递给reducer处理。 * 1 参数类型根据TextInputFormat类来定的,输入格式化还有其他类:如 http://username2.iteye.com/blog/2159836 * map[这里读入输入文件内容 以" \t\n\r\f" 进行分割 */ public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public 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); } } } /** * IntSumReducer 继承自 Reducer<Text,IntWritable,Text,IntWritable> * [不管几个Map,都只有一个Reduce,这是一个汇总] * 这里的key为Mapper设置的word[每一个key/value都会有一次reduce] * 当循环结束后,最后的确context就是最后的结果. */ public static class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable> { private IntWritable result = new IntWritable(); public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } result.set(sum); context.write(key, result); } } /** * @Title: main * 执行命令: * 命令 jar包 输入 输出 * bin/hadoop jar WordCount1.jar /user/root/word_count_in/ /user/root/word_count_out * @return void 返回类型 * @throws */ public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); String[] otherArgs = new GenericOptionsParser(conf, args) .getRemainingArgs(); /** * 这里必须有输入/输出 */ if (otherArgs.length != 2) { System.err.println("Usage: wordcount <in> <out>"); System.exit(2); } //构建mapreduce任务也叫mapreduce作业也叫做一个mapreduce的job Job job = new Job(conf, "word count"); job.setJarByClass(WordCount2.class);// 主类 job.setInputFormatClass( TextInputFormat.class);//文件输入的处理格式 job.setOutputFormatClass(TextOutputFormat.class);//文件输出的处理格式 job.setMapperClass(TokenizerMapper.class);// mapper job.setCombinerClass(IntSumReducer.class);// 作业合成类,可以提高运行效率 job.setReducerClass(IntSumReducer.class);// reducer job.setOutputKeyClass(Text.class);// 设置作业输出数据的关键类 job.setOutputValueClass(IntWritable.class);// 设置作业输出值类 FileInputFormat.addInputPath(job, new Path(otherArgs[0]));// 输入文件路径 FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));// 输出文件路径 System.exit(job.waitForCompletion(true) ? 0 : 1);// 等待完成退出. } }
相关推荐
这个文件可能是 Hadoop 官方文档中关于 WordCount 示例的一个章节,详细介绍了如何编写 Map 和 Reduce 函数,以及如何配置和运行 WordCount 作业。可能包括了 Java 代码示例,讲解如何创建 MapReduce 程序,并将其...
【标题】:在Hadoop平台上部署WordCount程序的详解 【描述】:本实验旨在让学生掌握如何在Hadoop平台上部署并运行WordCount程序,这是Hadoop入门的经典案例,旨在统计文本中的单词出现次数。通过实践,学生将了解...
在实现WordCount时,我们需要编写两个类:`Mapper`和`Reducer`。Mapper类中,我们使用`Tokenizer`将输入行分解为单词,并使用`emit`方法输出键值对。Reducer类中,我们将接收到的所有相同键的值进行累加。同时,为了...
接着,编写MapReduce程序的核心部分:Mapper和Reducer类。 Mapper类的主要任务是对输入的数据进行预处理,这里是指读取《唐诗三百首》的文本文件,进行中文分词。对于中文分词,我们可以使用开源的中文分词库,如...
在linux环境下部署的Hadoop集群-WordCount运行详解。
【大数据入门笔记系列】第五节 SpringBoot集成hadoop开发环境(复杂版的WordCount)前言环境清单创建SpringBoot项目创建包创建yml添加集群主机名映射hadoop配置文件环境变量HADOOP_HOME编写代码添加hadoop依赖jar包...
hadoop入门级的代码 Java编写 eclipse可运行 包含 hdfs的文件操作 rpc远程调用的简单示例 map-reduce的几个例子:wordcount 学生平均成绩 手机流量统计
Hadoop的WordCount实例代码解析 Hadoop的WordCount实例代码是Hadoop MapReduce编程模型的经典示例,通过对大文件中的单词出现次数的统计,展示了MapReduce编程模型的基本思想和实现细节。 Hadoop MapReduce编程...
本篇文档深入浅出地介绍了Hadoop集群的WordCount运行详解,从MapReduce理论到WordCount程序的运行,再到源码分析,内容丰富且详细,对于想要入门和深入了解Hadoop分布式计算和MapReduce模型的读者来说,是一份宝贵的...
通过这个Wordcount实例,我们可以学习到Hadoop MapReduce的基本工作原理,同时也可以了解到如何在Java中编写Hadoop程序。这只是一个基本的应用,实际的Hadoop项目可能会涉及更复杂的逻辑和优化,如分块、分区、压缩...
总结来说,基于Windows、Eclipse、Maven和Hadoop实现WordCount源码的过程主要包括以下步骤:配置开发环境、创建Maven项目、编写MapReduce代码、打包成jar文件,以及在Hadoop集群上运行作业。通过这个过程,我们可以...
在"wordcount"这个项目中,用户可能需要编写Java代码来实现Map和Reduce功能,并配置Hadoop环境,确保数据能正确地在集群中分发、处理和聚合。通常,这些代码会包含以下几个关键类: - `WordCount`:主类,负责驱动...
eclipse+hadoop+wordCount+sort 本文档主要介绍了如何在 ...本文档提供了在 Eclipse 中搭建 Hadoop 开发环境、创建 Hadoop 连接、编写 WordCount 和 Sort 程序的详细步骤,可以帮助开发者快速上手 Hadoop 开发。
实验2的目的是在Hadoop平台上部署WordCount程序,以此来理解和体验云计算的基础应用。这个实验主要涉及以下几个关键知识点: 1. **Linux系统基础**:实验要求学生具备Linux系统的使用知识,包括基本的命令行操作、...
Java是Hadoop的主要编程语言,因此这个项目标签为“Java”意味着我们将使用Java来编写MapReduce程序。 标题“hadoop_wordcount”指的是一个基于Hadoop的简单应用,用于统计文本文件中单词出现的次数。这个程序分为...
3. **编写并运行 Shell 脚本**: ```bash #!/bin/bash export CURRENT=/usr/local/working $HADOOP_HOME/bin/hdfs dfs -rm -r /temp/hdout $HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/share/hadoop/tools/lib/...
在本文中,我们将深入探讨如何在Eclipse IDE中安装Hadoop插件,并通过该插件运行WordCount示例,特别关注Windows环境下的配置。首先,我们需要了解Eclipse Hadoop插件的作用,它允许开发者在Eclipse环境中直接创建、...
然后,他们会在MyEclipse中创建一个Maven项目,导入Hadoop相关的依赖,编写Map和Reduce类实现WordCount逻辑。最后,使用Maven命令编译和打包项目,生成一个jar文件,通过Hadoop的`hadoop jar`命令提交到本地集群执行...
### Ubuntu安装Hadoop实现MapReduce里的WordCount #### 核心知识点概述 1. **Ubuntu环境下的基础配置**:包括VMware Tools的安装、JDK的安装与配置。 2. **Hadoop的安装与配置**:包括下载与解压、环境变量配置、...