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

Annotated Hadoop: 第三节 MapReduce工作原理

阅读更多

          MapReduce工作原理

Map-Reduce框架的运作完全基于<key,value>对,即数据的输入是一批<key,value>对,生成的结果也是一批<key,value>对,只是有时候它们的类型不一样而已。Keyvalue的类由于需要支持被序列化(serialize)操作,所以它们必须要实现Writable接口,而且key的类还必须实现WritableComparable接口,使得可以让框架对数据集的执行排序操作。

 

一个Map-Reduce任务的执行过程以及数据输入输出的类型如下所示:

(input)<k1,v1> -> map -> <k2,v2> -> combine -> <k2,v2> -> reduce -> <k3,v3>(output)

 

下面通过一个的例子并结合源代码来详细说明这个过程

3.1       WordCount示例

这也是Hadoop自带的一个例子,目标是统计文本文件中单词的个数。

假设有如下的两个文本文件来运行WorkCount程序:

Hello World Bye World

 

 

Hello Hadoop GoodBye Hadoop

 

 

 

 

3.2       map数据输入

Hadoop针对文本文件缺省使用LineRecordReader类来实现读取,一行一个key/value对,key取偏移量,value为行内容。

如下是map1的输入数据:

Key1

Value1

0

Hello World Bye World

如下是map2的输入数据:

Key1

Value1

0

Hello Hadoop GoodBye Hadoop

3.3       map输出/combine输入

如下是map1的输出结果

Key2

Value2

Hello

1

World

1

Bye

1

World

1

如下是map2的输出结果

Key2

Value2

Hello

1

Hadoop

1

GoodBye

1

Hadoop

1

3.4       combine输出

Combiner类实现将相同key的值合并起来,它也是一个Reducer的实现。

如下是combine1的输出

Key2

Value2

Hello

1

World

2

Bye

1

如下是combine2的输出

Key2

Value2

Hello

1

Hadoop

2

GoodBye

1

3.5       reduce输出

Reducer类实现将相同key的值合并起来。

如下是reduce的输出

Key2

Value2

Hello

2

World

2

Bye

1

Hadoop

2

GoodBye

1

即实现了WordCount的处理。

 

分享到:
评论

相关推荐

    The Annotated Turing

    The Annotated Turing: A Guided Tour through Alan Turing's Historic Paper on Computability and the Turing Machine Published by Wiley Publishing, Inc. 10475 Crosspoint Boulevard Indianapolis, IN ...

    the.annotated.turing

    3. **编程语言的基础**:Petzold将图灵机的概念与现代编程语言相联系,解释了高级编程语言如何转化为机器指令,这有助于读者理解编译器和解释器的工作原理。 4. **C#、JavaScript、.NET和C++**:虽然书名没有直接...

    人脸数据库 Annotated Database

    在人脸识别领域,数据库的建立是第一步。这些图像通常包含各种人脸的不同角度、表情、光照条件、遮挡情况等,以模拟真实世界中的复杂场景。"Annotated Database"提供的详细标注使开发者能够训练机器学习模型来识别和...

    mysql3-annotated:mysql原始注解

    综上,"mysql3-annotated:mysql原始注解"的项目可能是一个对MySQL 3版本的注释解析或文档整理,旨在帮助开发者更好地理解和利用这个开源数据库系统,同时提供对SQL语句的注解示例,以提高代码可读性和维护性。

    annotated_nginx:Annotated Nginx Source(中文)

    annotated_nginx Annotated Nginx Source(中文) 简介 Nginx源码分析,注解代码,帮助学习Nginx。 1.10增加了动态模块、http2、reuseport。 1.11.x里的stream模块的变动较大,完善了阶段处理。 1.14增加了mirror...

    IMM Annotated Database 人脸数据库

    IMM Annotated Database是一个专为人脸识别研究而设计的数据库,包含240幅精心标注的人脸图像。这个数据库在人脸识别领域具有重要的价值,因为它提供了一组标准化、有标记的图像,可供研究人员进行算法开发、测试和...

    python-2.5-annotated:python-2.5-注释

    python-2.5-annotated 记录阅读代码时的评注. bugfix: 修复svnversion产生的版本信息中包含空格导致无法编译的bug. commit 《Python源码剖析》附书代码: code-reading/pythonympx.rar code-reading/pythonympx.tar....

    The Annotated Turing 图灵的秘密(英文扫描版)

    副标题:他的生平、思想及论文解读原作名: The Annotated Turing作者: Charles Petzold图灵机是英国数学家阿兰·麦席森·图灵提出的一种抽象计算模型,本书深入剖析了图灵这篇描述图灵机和可计算性的原始论文《论可...

    The Annotated C++ Reference Manual

    理解互斥量的工作原理对于避免死锁和竞态条件至关重要。 #### 2.9 调度 调度是μC++中管理任务执行顺序的核心机制,分为隐式调度和外部调度两种方式,每种方式都有其适用场景和优缺点。 ##### 2.9.1 隐式调度 ...

    Annotated Lucene 中文版 Lucene源码剖析

    《Annotated Lucene 中文版 Lucene源码剖析》是一本深入探讨Apache Lucene的书籍,专注于源码解析,帮助读者理解这个强大的全文搜索引擎库的工作原理。Lucene是一款开源的Java库,它提供了高效的文本搜索功能,被...

    Thinking in c++ Annotated Solution Guide 答案

    《Thinking in C++ Annotated Solution Guide》是一本关于C++编程语言的重要参考资料,它提供了对Bruce Eckel的畅销书《Thinking in C++》的详细解答。这本书深入浅出地介绍了C++的基础概念、语法和高级特性,是学习...

    rcpr-annotated:RCPR 代码注解

    通过深入研究"vars.m"中的注释,开发者和研究人员可以更好地理解RCPR算法的工作原理,从而能够更有效地应用它到自己的数据分析项目中。这不仅有助于直接使用RCPR,也对于那些想要进一步改进或扩展算法的人提供了宝贵...

    C# Annotated Standard C#标准注解

    《C# Annotated Standard》是C#编程领域的一本权威参考书籍,由C#语言的设计者之一撰写。这本书深入解析了C#语言的标准,通过详尽的注解和解释,帮助开发者更深入地理解C#的语法、特性以及设计理念。 在C#语言中,...

    The Annotated C++ Reference Manual part3

    The Annotated C++ Reference Manual 一共四个压缩包

    The Thinking in Java Annotated Solution Guide

    《Thinking in Java Annotated Solution Guide》是一本针对Bruce Eckel的畅销书《Thinking in Java》的解答指南,主要针对第四版的内容。这本书是Java编程学习者的宝贵资源,它提供了书中练习题的详尽解答,帮助读者...

    redis-3.0-annotated-unstable.zip

    此压缩包"redis-3.0-annotated-unstable.zip"包含的是 Redis 3.0 版本的一个注释版或不稳定版本的源代码,对于学习和理解 Redis 的内部工作原理非常有帮助。 Redis 的核心特性包括: 1. **键值存储**:Redis 支持...

    Thinking in Java 4th Edition + Annotated Solution Guide (代码)英文文字版 带书签 有答案

    "Thinking in Java 4th Edition + Annotated Solution Guide (代码)英文文字版 带书签 有答案" 指的是该资源包含了《Thinking in Java》第四版的英文文本,同时附带有注解的解决方案指南,这将有助于读者在遇到...

    Thinking in Java 4th Edition Annotated Solutions Guide

    首先,文件标题《Thinking in Java 4th Edition Annotated Solutions Guide》指出了这是一本关于《Thinking in Java》第四版的附有注解的解决方案指南。《Thinking in Java》是由Bruce Eckel编写的Java编程书籍,...

Global site tag (gtag.js) - Google Analytics