MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算
通俗的说就是将一个大任务分成多个小任务并行完成,然后合并小任务的结果,得到最终结果。
1)打包注意:
一定要选择一个MAIN,不然不会运行。
2)
3)输出目录是HADOOP自己创建的。如果有这个目录,一定要删除。如下:
4)测试命令:
java -jar WordCount.jar hdfs://station1:9000/input/ hdfs://station1:9000/out
5)核心代码如下:
import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; public class WordCount { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { Job job = new Job(); job.setJarByClass(WordCount.class); job.setJobName("WordCount"); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); job.setMapperClass(Map.class); job.setReducerClass(MyReduce.class); job.setOutputKeyClass(Text .class); job.setOutputValueClass(IntWritable.class); System.exit(job.waitForCompletion(true) ? 0 : 1);// JOB运行完程序才退出 }
/** * LongWritable, IntWritable, Text 均是 Hadoop 中实现的用于封装 Java * 数据类型的类,这些类实现了WritableComparable接口, * 都能够被串行化从而便于在分布式环境中进行数据交换,你可以将它们分别视为long,int,String 的替代品 */ public static class Map extends Mapper<LongWritable, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text();; /** * Mapper接口中的map方法: void map(K1 key, V1 value, OutputCollector<K2,V2> * output, Reporter reporter) 映射一个单个的输入k/v对到一个中间的k/v对 * 输出对不需要和输入对是相同的类型,输入对可以映射到0个或多个输出对。 * OutputCollector接口:收集Mapper和Reducer输出的<k,v>对。 * OutputCollector接口的collect(k, v)方法:增加一个(k,v)对到output * * * lwWritable 每行的行号 vlaue 每行的内容 * * * */ public void map(LongWritable key, Text value, Context context)throws IOException, InterruptedException { String line = value.toString().toLowerCase(); // 全部转为小写字母 StringTokenizer tokenizer = new StringTokenizer(line); // StringTokenizer tokenizer = new StringTokenizer(line); // StringTokenizer是一个用来分隔String的应用类,相当于VB的split函数。 while (tokenizer.hasMoreTokens()) { word.set(tokenizer.nextToken()); // 输出这个单词 context.write(word, one); // 这个单词出现了一次 } }; } public static class MyReduce 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); }; } }
6)效果:
与原来的统计结果一样。没有任何问题
[hadoop@station1 bin]$ grep the stop-all.sh |wc
10 107 639
相关推荐
本文将详细介绍如何快速入门阿里云E-MapReduce,包括准备工作、创建集群以及集群配置等方面。 首先,要使用阿里云E-MapReduce,你需要拥有一个阿里云账号。这个账号不仅是你在阿里云生态中的身份标识,还能用于开通...
阿里云E-MapReduce快速入门 阿里云E-MapReduce是阿里云提供的一种大数据处理服务,基于Hadoop和Spark的分布式计算引擎,可以对大规模数据进行快速处理和分析。本资源摘要信息将指导您快速开始使用阿里云E-...
Hadoop-MapReduce,入门篇
### 高级软件人才培训专家-Hadoop课程资料-3-第三章 - MapReduce & YARN入门 #### 知识点一:分布式计算概述 - **定义**:分布式计算是一种计算模型,它通过网络将任务分配到多台计算机上并行处理,以提高计算效率...
本文将对MapReduce的基本概念、编程模型、框架原理、相关组件以及入门编程实例等进行详细介绍。 MapReduce是一种分布式计算模型,能够将复杂的数据处理过程抽象为Map和Reduce两个简单的操作,从而简化并行计算的...
Hadoop及Mapreduce入门,简单易懂,让你快速进入hadoop的世界
入门 这个插件需要 Grunt >=0.4.0 如果您以前没有使用过 ,请务必查看指南,因为它解释了如何创建以及安装和使用 Grunt 插件。 熟悉该过程后,您可以使用以下命令安装此插件: npm install grunt-json-mapreduce -...
在这个“MapReduce入门案例.rar”压缩包中,包含了五个基础的MapReduce编程示例,帮助初学者理解并掌握MapReduce的工作原理和用法。 1. 统计单词的个数: 这是最经典的MapReduce案例,通常被称为WordCount。在Map...
这篇文档是针对ActionTrail的快速入门指南,旨在帮助用户迅速了解并开始使用该服务。 1. **创建Trail** - 开通ActionTrail:在阿里云官方网站的产品列表中找到并开通操作审计服务。 - 设置Trail名称:创建Trail时...
6.1 一种并行编程模型-MapReduce-之一 6.2 一种并行编程模型-MapReduce-之二 6.3 一种并行编程模型-MapReduce-之三 6.4 一种并行编程模型-MapReduce-之四 6.5 ApacheSpark之一 6.6 ApacheSpark之二 6.7 ApacheSpark...
通过这个入门示例,我们可以看到,Hadoop MapReduce入门并不复杂,但处理大数据需要考虑数据的组织方式、如何编写有效的Map和Reduce逻辑,以及在MapReduce框架下对数据如何进行高效处理。实际上,MapReduce框架会...
4. MapReduce入门编程(9学时) - MapReduce原理 - MapReduce编程逻辑 - 使用Eclipse进行MapReduce开发 - 自定义键值对、Combiner和Partitioner的使用 5. MapReduce进阶编程(12学时) - MapReduce的高级应用 ...
hadoop 第三版-权威指南-从入门到精通-中文pdf版本。介绍hadoop分布式文件系统,MapReduce的工作原理,并手把手教你如何构建hadoop集群,同时附带介绍了pig,hive,hbase,zookeeper,sqoop等hadoop家族的开源软件。
这个例子展示了MapReduce的基本工作原理,是初学者入门Hadoop编程的首选。 首先,我们来了解Hadoop MapReduce的基本概念。MapReduce由两个主要阶段组成:Map阶段和Reduce阶段。在Map阶段,输入数据被分割成多个块,...
1.什么是mapreduce 2.编写mapreduce典型demo 3.理解mapreduce核心思想 4.熟练编写mapreduce典型demo
大数据系列-Hive入门与实战 Hive 是什么? ---------------- Hive 是一个构建在 Hadoop 之上的数据仓库平台,能够将 SQL 语句转译成 MapReduce 作业,并在 Hadoop 集群上执行。Hive 表是 HDFS 的一个文件目录,一...
### Hadoop MapReduce 入门知识点详解 #### 一、MapReduce 概述 ##### 1.1 MapReduce 的起源与发展 - **起源**: MapReduce 是由 Google 提出的一种分布式计算模型,最初是为了应对互联网搜索引擎处理大规模数据集...
这个入门程序将帮助初学者理解Hadoop的WordCount应用,这是一个基础且经典的例子,用于演示MapReduce的工作原理。 首先,我们要理解MapReduce的两个核心部分:Map阶段和Reduce阶段。在Map阶段,原始数据被分成多个...
MapReduce 是一种分布式计算模型,由Google提出,主要用于大规模数据集的并行处理。它简化了程序员编写处理海量数据的程序的方式,使得开发者无需关注底层的分布式存储和计算细节,只需专注于业务逻辑。 1. ...