`

Hadoop学习笔记 2 - MapReduce 简单实例

阅读更多

1.2 MapReduce开发实例

 

MapReduce 执行过程,如下图,(先由Mapper进行map计算,将数据进行分组,然后在由Reduce进行结果汇总计算)

 

直接上代码

package com.itbuilder.hadoop.mr;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
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 {

	public static void main(String[] args) throws Exception {

		//构建一个JOB对象
		Job job = Job.getInstance(new Configuration());
		
		//注意:main方法所在的类
		job.setJarByClass(WordCount.class);
		
		//设置Mapper相关属性
		job.setMapperClass(WCMapper.class);
		job.setMapOutputKeyClass(Text.class);
		job.setMapOutputValueClass(LongWritable.class);
		FileInputFormat.setInputPaths(job, new Path(args[0]));
		
		//设置Reducer相关属性
		job.setReducerClass(WCReducer.class);
		job.setOutputKeyClass(Text.class);
		job.setOutputValueClass(LongWritable.class);
		FileOutputFormat.setOutputPath(job, new Path(args[1]));
		
		//提交任务
		job.waitForCompletion(true);
	}

	
	
	public static class WCMapper extends Mapper<LongWritable, Text, Text, LongWritable> {

		
		public WCMapper() {
			super();
		}

		@Override
		protected void map(LongWritable key, Text value,
				Mapper<LongWritable, Text, Text, LongWritable>.Context context)
				throws IOException, InterruptedException {
			String line = value.toString();
			
			String words[] = line.split(" ");
			
			for (String word : words) {
				context.write(new Text(word), new LongWritable(1));
			}
			
		}
		
		
	}
	
	public static class WCReducer extends Reducer<Text, LongWritable, Text, LongWritable> {

		
		public WCReducer() {
			super();
		}

		@Override
		protected void reduce(Text k2, Iterable<LongWritable> v2,
				Reducer<Text, LongWritable, Text, LongWritable>.Context arg2)
				throws IOException, InterruptedException {
			long counter = 0;
			for (LongWritable count : v2) {
				counter += count.get();
			}
			arg2.write(k2, new LongWritable(counter));
		}

	}
	
	
}

 

需要注意:

WCMapper、WCReducer 作为内部类,必须是静态的内部类

 

 

pom.xml 中的jar包依赖

<dependencies>
  	<dependency>
  		<groupId>junit</groupId>
  		<artifactId>junit</artifactId>
  		<version>4.11</version>
  		<scope>test</scope>
  	</dependency>
  	<dependency>
  		<groupId>org.apache.hadoop</groupId>
  		<artifactId>hadoop-mapreduce-client-core</artifactId>
  		<version>2.7.1</version>
  	</dependency>
  	<dependency>
  		<groupId>org.apache.hadoop</groupId>
  		<artifactId>hadoop-common</artifactId>
  		<version>2.7.1</version>
  	</dependency>
  	<dependency>
  		<groupId>org.apache.hadoop</groupId>
  		<artifactId>hadoop-hdfs</artifactId>
  		<version>2.7.1</version>
  	</dependency>
  	
  	<dependency>
  		<groupId>org.apache.hadoop</groupId>
  		<artifactId>hadoop-yarn-common</artifactId>
  		<version>2.7.1</version>
  	</dependency>
  	<dependency>
  		<groupId>org.apache.hadoop</groupId>
  		<artifactId>hadoop-yarn-client</artifactId>
  		<version>2.7.1</version>
  	</dependency>
  </dependencies>

 

  • 大小: 10.7 KB
分享到:
评论

相关推荐

    尚硅谷大数据技术之Hadoop(MapReduce)1

    【尚硅谷大数据技术之Hadoop(MapReduce)1】深入解析MapReduce MapReduce是Google提出的一种用于处理和生成大规模数据集的编程模型,被广泛应用于大数据处理领域。Hadoop将其作为核心组件,实现了分布式计算的功能...

    hadoop学习笔记(三)

    在本篇"Hadoop学习笔记(三)"中,我们将探讨如何使用Hadoop的MapReduce框架来解决一个常见的问题——从大量数据中找出最大值。这个问题与SQL中的`SELECT MAX(NUMBER) FROM TABLE`查询相似,但在这里我们通过编程...

    hadoop学习笔记(六)

    在Hadoop的学习过程中,MapReduce是一个非常核心的部分,它提供了分布式计算的能力,使得处理大规模数据变得可能。在本文中,我们将深入探讨如何使用Hadoop MapReduce实现类似SQL中的`MAX`和`MIN`操作。 首先,我们...

    hadoop1.0\2.0学习笔记及

    本学习笔记涵盖了Hadoop 1.0和2.0两个主要版本,旨在帮助读者全面理解Hadoop的核心概念、架构以及实际操作。 在Hadoop 1.0中,核心组件主要包括HDFS(Hadoop Distributed File System)和MapReduce。HDFS是一种...

    Hadoop学习笔记

    在《Hadoop学习笔记_yedu.pdf》这本书中,读者可以深入了解到Hadoop的安装配置、HDFS的基本操作、MapReduce编程模型、YARN资源管理器的原理以及Hadoop生态系统的其他组件应用。书中的实例和实践环节将帮助读者掌握...

    Hadoop学习网址

    #### 六、Hadoop MapReduce 学习笔记 - **网址**: [Hadoop MapReduce 学习笔记](http://guoyunsky.iteye.com/blog/1233707) - **内容概述**: - **基本概念**: 讲解了MapReduce的基本概念和工作原理,以及它如何与...

    传智黑马赵星老师hadoop七天课程资料笔记-第三天(全)

    【描述】这部分内容是赵星老师在传智黑马的Hadoop七天课程中的第三天教学资料,包含了丰富的学习材料,如PPT、文本笔记、示例数据和工作流程详解,旨在通过实例帮助学员消化吸收Hadoop的核心概念和技术。 【标签】...

    传智黑马赵星老师hadoop七天课程资料笔记-第四天(全)

    在“传智黑马赵星老师hadoop七天课程资料笔记-第四天(全)”的学习中,我们深入探讨了Hadoop这一分布式计算框架的关键概念和技术。Hadoop是Apache软件基金会的一个开源项目,它设计用于处理和存储海量数据,通过...

    hadoopeclipse学习笔记

    本篇学习笔记主要介绍了如何在Eclipse中配置和编译Hadoop项目。 首先,我们需要创建一个新的Java项目来导入Hadoop的源代码。在Eclipse的Package Explorer视图中,通过右键选择“New” -&gt; “Java Project”。在弹出...

    Hadoop学习文档笔记,基本原理 HDFS

    这个例子展示了如何使用MapReduce处理大规模数据。在HDFS中,我们可以通过编程接口进行文件操作,如上传、下载、删除等。 以下是一些使用Java API操作HDFS的基本步骤: 1. **配置HDFS连接**: 在Java代码中,首先...

    配置xen环境及hadoop集群环境的学习笔记

    ### 配置XEN环境及Hadoop集群环境学习笔记 #### XEN虚拟机的安装配置 **XEN** 是一种开源虚拟化技术,允许在一台物理机器上运行多个操作系统实例,这些实例通常被称为“域”(Domains)。XEN 的安装配置涉及到安装...

    Hadoop课程笔记 .pdf

    本文将详细探讨Hadoop课程笔记中的关键知识点,涵盖大数据的基础概念、Hadoop的组成部分以及其在不同场景中的应用。 首先,大数据技术是为了解决海量数据的存储和计算问题而诞生的。大数据的定义强调了其"5V"特点,...

    初学Hadoop之图解MapReduce与WordCount示例分析

    Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算...1、Hadoop示例程序WordCount详解及实例2、hadoop学习笔记:mapreduce框架详解3、hadoop示例程序wo

    尚硅谷大数据技术之Hadoop

    本课程通过笔记和代码实例,帮助学习者理解并掌握Hadoop的核心概念和技术。 在Hadoop的核心组件中,MapReduce是其计算模型,用于处理和生成大规模数据集。MapReduce分为两个主要阶段:Map阶段和Reduce阶段。Map阶段...

    Hadoop平台技术 模块1 Hadoop概述-单元设计.docx

    反思实践,整理学习笔记课后作业(1) 在职教云平台上完成相关练习题(2) 写一篇关于 Hadoop 集群搭建的心得体会教师讲解职教云教师:布置作业,提供指导学生:深入思考,完成作业 【知识点详解】 Hadoop 是一个开源...

    大数据学习笔记

    ### 大数据学习笔记知识点概览 #### 第一部分:Spark学习 ##### 第1章:Spark介绍 - **1.1 Spark简介与发展** - **背景**:随着大数据处理需求的增长,传统的Hadoop MapReduce框架虽然提供了强大的计算能力,但...

    hadoop文档

    - **hadoop笔记.ppt**:这可能是一个PPT形式的学习笔记,整理了Hadoop的关键概念、核心组件的工作原理以及一些实例分析。 总之,Hadoop作为一个强大的分布式计算框架,对于大数据处理和分析有着至关重要的作用。...

    学习笔记zzzzz.zip

    【学习笔记zzzzz.zip】是一个包含Hadoop学习资料的压缩包,标签为“hadoop”,暗示了这个压缩包中的内容主要围绕着大数据处理框架Hadoop进行展开。Hadoop是Apache软件基金会的一个开源项目,其核心是分布式文件系统...

Global site tag (gtag.js) - Google Analytics