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>
相关推荐
【尚硅谷大数据技术之Hadoop(MapReduce)1】深入解析MapReduce MapReduce是Google提出的一种用于处理和生成大规模数据集的编程模型,被广泛应用于大数据处理领域。Hadoop将其作为核心组件,实现了分布式计算的功能...
在本篇"Hadoop学习笔记(三)"中,我们将探讨如何使用Hadoop的MapReduce框架来解决一个常见的问题——从大量数据中找出最大值。这个问题与SQL中的`SELECT MAX(NUMBER) FROM TABLE`查询相似,但在这里我们通过编程...
在Hadoop的学习过程中,MapReduce是一个非常核心的部分,它提供了分布式计算的能力,使得处理大规模数据变得可能。在本文中,我们将深入探讨如何使用Hadoop MapReduce实现类似SQL中的`MAX`和`MIN`操作。 首先,我们...
本学习笔记涵盖了Hadoop 1.0和2.0两个主要版本,旨在帮助读者全面理解Hadoop的核心概念、架构以及实际操作。 在Hadoop 1.0中,核心组件主要包括HDFS(Hadoop Distributed File System)和MapReduce。HDFS是一种...
在《Hadoop学习笔记_yedu.pdf》这本书中,读者可以深入了解到Hadoop的安装配置、HDFS的基本操作、MapReduce编程模型、YARN资源管理器的原理以及Hadoop生态系统的其他组件应用。书中的实例和实践环节将帮助读者掌握...
#### 六、Hadoop MapReduce 学习笔记 - **网址**: [Hadoop MapReduce 学习笔记](http://guoyunsky.iteye.com/blog/1233707) - **内容概述**: - **基本概念**: 讲解了MapReduce的基本概念和工作原理,以及它如何与...
【描述】这部分内容是赵星老师在传智黑马的Hadoop七天课程中的第三天教学资料,包含了丰富的学习材料,如PPT、文本笔记、示例数据和工作流程详解,旨在通过实例帮助学员消化吸收Hadoop的核心概念和技术。 【标签】...
在“传智黑马赵星老师hadoop七天课程资料笔记-第四天(全)”的学习中,我们深入探讨了Hadoop这一分布式计算框架的关键概念和技术。Hadoop是Apache软件基金会的一个开源项目,它设计用于处理和存储海量数据,通过...
本篇学习笔记主要介绍了如何在Eclipse中配置和编译Hadoop项目。 首先,我们需要创建一个新的Java项目来导入Hadoop的源代码。在Eclipse的Package Explorer视图中,通过右键选择“New” -> “Java Project”。在弹出...
这个例子展示了如何使用MapReduce处理大规模数据。在HDFS中,我们可以通过编程接口进行文件操作,如上传、下载、删除等。 以下是一些使用Java API操作HDFS的基本步骤: 1. **配置HDFS连接**: 在Java代码中,首先...
### 配置XEN环境及Hadoop集群环境学习笔记 #### XEN虚拟机的安装配置 **XEN** 是一种开源虚拟化技术,允许在一台物理机器上运行多个操作系统实例,这些实例通常被称为“域”(Domains)。XEN 的安装配置涉及到安装...
本文将详细探讨Hadoop课程笔记中的关键知识点,涵盖大数据的基础概念、Hadoop的组成部分以及其在不同场景中的应用。 首先,大数据技术是为了解决海量数据的存储和计算问题而诞生的。大数据的定义强调了其"5V"特点,...
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算...1、Hadoop示例程序WordCount详解及实例2、hadoop学习笔记:mapreduce框架详解3、hadoop示例程序wo
本课程通过笔记和代码实例,帮助学习者理解并掌握Hadoop的核心概念和技术。 在Hadoop的核心组件中,MapReduce是其计算模型,用于处理和生成大规模数据集。MapReduce分为两个主要阶段:Map阶段和Reduce阶段。Map阶段...
反思实践,整理学习笔记课后作业(1) 在职教云平台上完成相关练习题(2) 写一篇关于 Hadoop 集群搭建的心得体会教师讲解职教云教师:布置作业,提供指导学生:深入思考,完成作业 【知识点详解】 Hadoop 是一个开源...
### 大数据学习笔记知识点概览 #### 第一部分:Spark学习 ##### 第1章:Spark介绍 - **1.1 Spark简介与发展** - **背景**:随着大数据处理需求的增长,传统的Hadoop MapReduce框架虽然提供了强大的计算能力,但...
- **hadoop笔记.ppt**:这可能是一个PPT形式的学习笔记,整理了Hadoop的关键概念、核心组件的工作原理以及一些实例分析。 总之,Hadoop作为一个强大的分布式计算框架,对于大数据处理和分析有着至关重要的作用。...
【学习笔记zzzzz.zip】是一个包含Hadoop学习资料的压缩包,标签为“hadoop”,暗示了这个压缩包中的内容主要围绕着大数据处理框架Hadoop进行展开。Hadoop是Apache软件基金会的一个开源项目,其核心是分布式文件系统...