首页 理论教育 MapReduce接口详解

MapReduce接口详解

时间:2023-06-28 理论教育 版权反馈
【摘要】:图7-12MapReduce接口体系结构第一层是最基本的编程接口层,主要有5个可编程组件,分别是InputFormat,Map,Partitioner,Reduce和OutputFormat。实现Map和Reduce方法有4个参数,分别为Key,Value,OuputCollector和Reporter。允许使用任何编程语言实现的程序在MapReduce中使用,方便用户采用非Java语言编写作业。MapReduce是Hadoop最重要的组成模块之一。通过本章的学习,读者将会了解并掌握MapReduce的理论知识,为大数据方向的深入学习打下初步的基础。

MapReduce接口详解

MapReduce提供了一个简单强大的接口,通过这个接口,可以实现海量数据的并发和分布式计算

MapReduce接口模型位于应用程序层和MapReduce执行器之间,可以将其分为编程接口层和工具层两层,如图7-12所示。

图7-12 MapReduce接口体系结构

第一层是最基本的编程接口层,主要有5个可编程组件,分别是InputFormat,Map,Partitioner,Reduce和OutputFormat。Hadoop自带了很多直接可用的InputFormat,Partitioner和OutputFormat,通常用户只需编写Map和Reduce即可。

实现Map和Reduce方法有4个参数,分别为Key,Value,OuputCollector和Reporter。其中Key控制输入;Value是输入的迭代器,可以遍历所有的Value,相当于一个列表;OuputCollector用于收集输出,每次收集都是Key-Value的形式;Reporter用来报告运行状态及调试时使用。

第二层是工具层,位于编程接口层之上,主要是为了方便用户编写复杂的MapReduce程序。在该层中,主要提供了4个编程工具包,分别为JobControl,Chain-Map/Reduce,Hadoop Streaming和Hadoop Pipes。

(1)JobControl。MapReduce中经常需要用到多个Job,而且多个Job之间需要设置一些依赖关系,多个Job除了用于维护子任务的配置信息,还维护子任务的依赖关系,JobControl能方便用户编写有依赖关系的作业,把所有的子任务作业加入JobControl中,控制整个作业流程。

(2)ChainMap/Reduce。能将具有复杂依赖关系的多个MapReduce Job串联起来,方便用户编写链式作业。有许多的数据处理工作包括针对一条记录的预处理和后处理,如进行医学关键词检索的时候,首先要去除掉a,the等定冠词,然后再转换成单词格式(Vaginitis,the Vaginitis,Vagina's等不同格式统一转换为Vaginitis),最后进行检索处理。

(3)Hadoop Streaming。允许使用任何编程语言实现的程序在MapReduce中使用,方便用户采用非Java语言编写作业。其开发效率高,方便已有程序向Hadoop平台移植,但Hadoop Streaming默认只能处理文本数据,Streaming中的Map和Reduce默认也只能向标准输出写数据,不能方便地处理多路输出。

(4)Hadoop Pipes。不同于使用标准输入和输出来实现Map代码和Reduce代码之间的Hadoop Streaming,Hadoop Pipes是专门为C/C++程序员编写MapReduce程序提供的工具包。

MapReduce是Hadoop最重要的组成模块之一。MapReduce由Map和Reduce两部分用户程序组成,利用框架在计算机集群上根据需求运行多个程序实例来处理各个子任务,然后再对结果进行归并输出。在实际的工作环境中,MapReduce的分布式处理框架常用于分布式Grep、分布式排序、Web访问日志分析、反向索引构建、文档聚类、机器学习、数据分析、基于统计的机器翻译和生成整个搜索引擎的索引等大规模数据处理工作,并且已经在很多国内知名的互联网公司得到广泛的应用。

本章重点讲解了MapReduce的功能、技术特征、原理、架构和工作流程等方面的知识。通过本章的学习,读者将会了解并掌握MapReduce的理论知识,为大数据方向的深入学习打下初步的基础。(www.xing528.com)

【注释】

1.集群。一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。

2.节点。在网络拓扑学中,节点是网络任何支路的终端或网络中两个或更多支路的互联公共点。

3.进程。计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。

4.线程。线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程

5.心跳机制。定时发送一个自定义的结构体(心跳包),让对方知道自己“在线”,以确保连接的有效性的机制。

6.JVM。即Java虚拟机,一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能。

7.容错。在故障存在的情况下计算机系统不失效,仍然能够正常工作的特性。

8.停词。在信息检索中,为节省存储空间和提高搜索效率,在处理自然语言数据(或文本)之前或之后会自动过滤掉某些字或词,这些字或词即被称为Stop Words(停词)。与其他词相比,停词没有什么实际含义,如a,the,is,at,which,on等。

9.迭代器。是程序设计的软件设计模式,可在容器(如链表或阵列等)上遍访的接口,设计人员无须关心容器的内容。

10.HTTP。是一个客户端和服务器端请求和应答的标准,所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。

11.内存溢出。是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈