`
pftzzg
  • 浏览: 10312 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

7-MapReduce入门

 
阅读更多

 

 

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

 

 

 

 

 

 

  • 大小: 55.3 KB
  • 大小: 20 KB
  • 大小: 106.2 KB
  • 大小: 13.9 KB
  • 大小: 11.3 KB
  • 大小: 58.6 KB
  • 大小: 58.6 KB
  • 大小: 40.9 KB
  • 大小: 13.4 KB
分享到:
评论

相关推荐

    阿里云E-MapReduce-快速入门-D.docx

    本文将详细介绍如何快速入门阿里云E-MapReduce,包括准备工作、创建集群以及集群配置等方面。 首先,要使用阿里云E-MapReduce,你需要拥有一个阿里云账号。这个账号不仅是你在阿里云生态中的身份标识,还能用于开通...

    阿里云E-MapReduce-快速入门.pdf

    阿里云E-MapReduce快速入门 阿里云E-MapReduce是阿里云提供的一种大数据处理服务,基于Hadoop和Spark的分布式计算引擎,可以对大规模数据进行快速处理和分析。本资源摘要信息将指导您快速开始使用阿里云E-...

    Hadoop-MapReduce.md

    Hadoop-MapReduce,入门篇

    高级软件人才培训专家-Hadoop课程资料-3-第三章 - MapReduce & YARN入门

    ### 高级软件人才培训专家-Hadoop课程资料-3-第三章 - MapReduce & YARN入门 #### 知识点一:分布式计算概述 - **定义**:分布式计算是一种计算模型,它通过网络将任务分配到多台计算机上并行处理,以提高计算效率...

    云帆大数据----04 MapReduce入门编程、框架原理、

    本文将对MapReduce的基本概念、编程模型、框架原理、相关组件以及入门编程实例等进行详细介绍。 MapReduce是一种分布式计算模型,能够将复杂的数据处理过程抽象为Map和Reduce两个简单的操作,从而简化并行计算的...

    Hadoop及Mapreduce入门

    Hadoop及Mapreduce入门,简单易懂,让你快速进入hadoop的世界

    grunt-json-mapreduce:对 JSON 文件执行自定义函数的 Grunt 任务

    入门 这个插件需要 Grunt &gt;=0.4.0 如果您以前没有使用过 ,请务必查看指南,因为它解释了如何创建以及安装和使用 Grunt 插件。 熟悉该过程后,您可以使用以下命令安装此插件: npm install grunt-json-mapreduce -...

    MapReduce入门案例.rar

    在这个“MapReduce入门案例.rar”压缩包中,包含了五个基础的MapReduce编程示例,帮助初学者理解并掌握MapReduce的工作原理和用法。 1. 统计单词的个数: 这是最经典的MapReduce案例,通常被称为WordCount。在Map...

    阿里云-操作审计-快速入门-D.docx

    这篇文档是针对ActionTrail的快速入门指南,旨在帮助用户迅速了解并开始使用该服务。 1. **创建Trail** - 开通ActionTrail:在阿里云官方网站的产品列表中找到并开通操作审计服务。 - 设置Trail名称:创建Trail时...

    大数据云计算教程 大数据基础入门学习课程 大数据导论课程系列 全套PPT课件 共45个章节.rar

    6.1 一种并行编程模型-MapReduce-之一 6.2 一种并行编程模型-MapReduce-之二 6.3 一种并行编程模型-MapReduce-之三 6.4 一种并行编程模型-MapReduce-之四 6.5 ApacheSpark之一 6.6 ApacheSpark之二 6.7 ApacheSpark...

    Hadoop MapReduce入门

    通过这个入门示例,我们可以看到,Hadoop MapReduce入门并不复杂,但处理大数据需要考虑数据的组织方式、如何编写有效的Map和Reduce逻辑,以及在MapReduce框架下对数据如何进行高效处理。实际上,MapReduce框架会...

    Hadoop大数据开发基础教学大纲.pdf

    4. MapReduce入门编程(9学时) - MapReduce原理 - MapReduce编程逻辑 - 使用Eclipse进行MapReduce开发 - 自定义键值对、Combiner和Partitioner的使用 5. MapReduce进阶编程(12学时) - MapReduce的高级应用 ...

    hadoop 第三版-权威指南-从入门到精通-中文pdf版本

    hadoop 第三版-权威指南-从入门到精通-中文pdf版本。介绍hadoop分布式文件系统,MapReduce的工作原理,并手把手教你如何构建hadoop集群,同时附带介绍了pig,hive,hbase,zookeeper,sqoop等hadoop家族的开源软件。

    wordcount-mapreduce:Hadoop MapReduce WordCount 示例应用程序

    这个例子展示了MapReduce的基本工作原理,是初学者入门Hadoop编程的首选。 首先,我们来了解Hadoop MapReduce的基本概念。MapReduce由两个主要阶段组成:Map阶段和Reduce阶段。在Map阶段,输入数据被分割成多个块,...

    mapreduce快速入门

    1.什么是mapreduce 2.编写mapreduce典型demo 3.理解mapreduce核心思想 4.熟练编写mapreduce典型demo

    大数据系列-Hive入门与实战.pptx

    大数据系列-Hive入门与实战 Hive 是什么? ---------------- Hive 是一个构建在 Hadoop 之上的数据仓库平台,能够将 SQL 语句转译成 MapReduce 作业,并在 Hadoop 集群上执行。Hive 表是 HDFS 的一个文件目录,一...

    Hadoop MapReduce 入门

    ### Hadoop MapReduce 入门知识点详解 #### 一、MapReduce 概述 ##### 1.1 MapReduce 的起源与发展 - **起源**: MapReduce 是由 Google 提出的一种分布式计算模型,最初是为了应对互联网搜索引擎处理大规模数据集...

    MapReduce入门程序

    这个入门程序将帮助初学者理解Hadoop的WordCount应用,这是一个基础且经典的例子,用于演示MapReduce的工作原理。 首先,我们要理解MapReduce的两个核心部分:Map阶段和Reduce阶段。在Map阶段,原始数据被分成多个...

    15_尚硅谷大数据之MapReduce入门1

    MapReduce 是一种分布式计算模型,由Google提出,主要用于大规模数据集的并行处理。它简化了程序员编写处理海量数据的程序的方式,使得开发者无需关注底层的分布式存储和计算细节,只需专注于业务逻辑。 1. ...

Global site tag (gtag.js) - Google Analytics