云计算中MapReduce分布式并行处理框架的研究与搭建 - 图文

更新时间:2023-10-04 06:13:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

XX大学本科毕业设计(论文)

云计算中MapReduce分布式并行处理框架的

研究与搭建

Research and Build of MapReduce Distributed Parallel Processing

Framework in Cloud Computing

学 院(系): 计算机科学与技术学院 专 业: 计算机科学与技术 学 生 姓 名: XXX 学 号: XXXXX 指 导 教 师: XXX 评 阅 教 师: 完 成 日 期: XXX年XX月

云计算中MapReduce分布式并行处理框架的研究与搭建

摘 要

大数据(Big Data),是随着计算机技术及互联网技术的高速发展而产生的独特数据现象。现代社会正以不可想象的速度产生大数据,幸运的是,计算机技术与互联网技术的发展,在产生大数据的同时,也给人们带来了全新的云计算技术。云计算技术带来的大数据处理能力,使得分析和掌握大数据中蕴藏的无尽信息、知识和智慧成为可能。

分布式计算(Distributed Computing)是将数量级大的工程数据划分成若干个小分块,由多个计算机即计算节点分别来计算后将运算结果进行上传,最终把结果进行合并从而得出统一的数据结论的计算过程。

并行计算(Parallel Computing)指的是将一个总的计算任务划分成多个子分块,在具备了并行处理能力的计算节点上,分配给不同的处理器,各处理器之间遵循调配机制并行地执行子分块任务,最终达到提升计算规模或者提高计算速度的目的。

在本设计中利用的是Hadoop分布式架构,其主要由3个子项目组成:MapReduce(编程模型和软件框架,用于在大规模计算机集群上编写对大数据进行快速处理的并行化程序)、HDFS(构建于廉价计算机集群之上的分布式文件系统)和Hadoop Common(为整体架构提供基础支撑功能)。着重研究MapReduce处理框架来建立了一个能够对数据进行可靠处理的分布式系统平台,使其以分布式并行工作方式加快处理速度,从而体现出其在云计算应用中处理大量数据时的优势。最终通过程序测试来分析MapReduce框架在数据处理中的流程及特点。

关键词:MapReduce;云计算;并行计算;Hadoop;分布式计算

- I -

云计算中MapReduce分布式并行处理框架的研究与搭建

The Subject of Undergraduate Graduation Project (Thesis) of DUT

Abstract

Big Data is the unique phenomenon with the rapid development of computer technology and Internet technology. Modern society is generating big data with unimaginable speed.Fortunately, with the development of computer technology and Internet technology, not only generate large data, but also to bring a new Cloud Computing technologies.Cloud Computing technology brings big data processing capabilities, making analysis and master endless information hidden in large data, knowledge and wisdom as possible.

Distributed Computing is to divide the large magnitude of engineering data into several small sub-blocks, by a plurality of computers that compute nodes were calculated result of the operation will be uploaded eventually merge the results to arrive at a unified data calculation conclusions .

Parallel Computing is divided a general computing tasks into sub-blocks, with the compute nodes in the parallel processing capabilities allocated to different processors, the deployment mechanism to follow the sub-block are performed in parallel between the processor task, and ultimately achieve the purpose of enhancing or increasing computing scale computing speed.

In this design use the Hadoop project, its core is composed of three sub project: Hadoop Common (provide the foundation for the overall architecture supporting functions), HDFS (built on cheap computer cluster based distributed file system) and MapReduce (programming models and software framework for writing on large-scale computer cluster rapid processing of large data parallel programs). Focuses on MapReduce processing framework to set up a reliable data processing platform for distributed systems, make its work in distributed parallel way to speed up the processing speed, and reflects the advantages of its application in cloud computing. Finally by running the programs to analyze MapReduce framework in the data processing flow, and characteristics.

Key Words:MapReduce; Cloud Computing; Parallel Computing; Hadoop; Distributed Computing

- II -

云计算中MapReduce分布式并行处理框架的研究与搭建

目 录

摘 要 ..................................................................................................................................... I Abstract ...................................................................................................................................... II 引 言 .................................................................................................................................... 1 1 背景知识 .............................................................................................................................. 3

1.1 云计算 ....................................................................................................................... 3

1.1.1 云计算定义 .................................................................................................... 3 1.1.2 云计算的三种服务模式 ................................................................................ 4 1.1.3 云计算的四种部署方式 ................................................................................ 4 1.2 并行计算 ................................................................................................................... 5

1.2.1 并行计算定义 ................................................................................................ 5 1.2.2 传统并行开发环境 ........................................................................................ 5 1.3 分布式计算 ............................................................................................................... 6

1.3.1 分布式计算定义 ............................................................................................ 6 1.3.2 分布式计算研究现状 .................................................................................... 6 1.4 MapReduce概述 ....................................................................................................... 6 1.5 国内外关于MapReduce计算框架研究 .................................................................. 7

1.5.1 国外研究 ........................................................................................................ 7 1.5.2 国内研究 ........................................................................................................ 8

2 Hadoop与MapReduce ........................................................................................................ 9

2.1 Hadoop分布式计算框架产生背景 ......................................................................... 9 2.2 Hadoop的主要特点 ................................................................................................. 9 2.3 Hadoop子项目 ....................................................................................................... 10 2.4 MapReduce模型基本原理 ..................................................................................... 10 2.5 Google的MapReduce框架 ................................................................................... 11 2.6 在Hadoop上MapReduce的工作机制 ................................................................. 12

2.6.1 MapReduce的运行框架组件 ...................................................................... 13 2.6.2 MapReduce作业运行流程 .......................................................................... 14 2.6.3 进程和状态的更新 ...................................................................................... 15 2.6.4 Hadoop提供的3种作业调度 .................................................................... 16

- III -

云计算中MapReduce分布式并行处理框架的研究与搭建

2.6.5 MapReduce容错机制 .................................................................................. 18

3 Hadoop平台搭建 .............................................................................................................. 19

3.1 ubuntu12.04 ............................................................................................................. 19 3.2 VMware Workstation10 .......................................................................................... 19 3.3 HDFS ....................................................................................................................... 19 3.4 详细搭建过程 ......................................................................................................... 20

3.4.1 单机模式搭建过程 ...................................................................................... 20 3.4.2 伪分布模式搭建 .......................................................................................... 23

4 测试运行及分析 ................................................................................................................ 28

4.1 wordcount算例运行过程 ....................................................................................... 28 4.2 算例详细分析 ......................................................................................................... 30

4.2.1 并行计算方面 .............................................................................................. 30 4.2.2 分布式处理方面 .......................................................................................... 33 4.2.3 源码分析方面 .............................................................................................. 34 4.3 grep程序运行及分析 ............................................................................................. 35 4.4 Monte Carlo方法估算Pi(π)值 ......................................................................... 37

4.4.1 Monte Carlo方法定义及原理 ..................................................................... 37 4.4.2 对比测试分析及部分代码 .......................................................................... 37 4.5 关于完全分布式并行框架的研究分析 ................................................................. 42 结 论 .................................................................................................................................. 44 参 考 文 献 ............................................................................................................................ 45 致 谢 .................................................................................................................................. 46

- IV -

云计算中MapReduce分布式并行处理框架的研究与搭建

图2.1 MapReduce模型基本原理

MapReduce框架模型的重点是map和reduce两个函数,它们可以由用户自己根据需求来定义,最终目标在于只要符合用户自主定义的规则把输入的键/值对转换成输出的键/值对。由此可以看出,MapReduce的思想简单而又直接,map即对输入的一个数据列表中的每个元素进行一个指定的操作,而Reduce即将map输出的新数据列表以某种方式进行合并操作,最终将操作的值输出。

下面就根据MapReduce的设计者Google公司的模型架构来具体分析其运行机制。

2.5 Google的MapReduce框架

早在2004年Google公司就完成了MapReduce处理框架的研究和设计。Google的MapReduce不仅是一个简单而强大的函数接口,而且还包含了一系列并行处理、容错处理、本地化运行和负载均衡等技术的软件实现,提供了一个完整的大尺度并行运算编程环境。图2.2为Google的MapReduce框架。

在Google框架的实现机制中,有两个工作节点比较特殊:一个是工作机(Worker),用于自行Map()或Reduce()任务,另一个是主控程序(Master),用于将Map()和Reduce()分配到的合适的工作机上。图2.2正是清楚地呈现了主控程序、工作机制和用户程序完成整个MapReduce工作的流程。

(1) 用户程序(User Program)中,MapReduce库将输入的数据分为M个、每个片段的大小为16-64MB的片段,然后在集群上启动多个程序副本。

- 11 -

云计算中MapReduce分布式并行处理框架的研究与搭建

(2) 其中一个程序副本被指定为主控程序(Master),其余的为工作机(Worker)。主控程序将M个空闲的工作机指定运行Map()任务,将R个空闲的工作机指定运行Reduce()任务。

(3) 被指定的Map()工作机从对应的输入文件片段中读取需要处理的数据集,并进行处理获得中间结果。

(4) Map()工作机产生的中间结果先被缓存在内存里,并定期写入每个Map()工作机本地硬盘。在本地硬盘中写入的中间结果在分区函数的运行下被分为R个分区,而后将中间结果在本地硬盘的位置信息发送到主控程序,此时由主控程序通知Reduce()工作机。

图2.2 Google的MapReduce框架

(5) 当主控程序将中间结果位置发送到Reduce()后,Reduce()工作机通过远程处理请求将Map()工作机在本地硬盘中的数据读入,准备进行相应处理。 (6) 当Reduce()在把所需要的中间结果全部读取完成后,会对数据进行排序,而后按照指定的Reduce()函数进行处理,进而将最终结果输出到一个最终文件夹中。 (7) 当Map()和Reduce()任务全部执行完成后,主动程序激活用户程序使其执行回到MapReduce请求的发生点。

2.6 在Hadoop上MapReduce的工作机制

相比较于Google的MapReduce框架,Hadoop项目编写了大量的代码以实现计算任务的分发、调度、运行、容错等机制。以下就通过MapReduce运行框架的结构图2.3来

- 12 -

云计算中MapReduce分布式并行处理框架的研究与搭建

对其整个工作机制进行一个了解。

图2.3 Hadoop上MapReduce的工作机制

2.6.1 MapReduce的运行框架组件

MapReduce运行机制中主要包含了以下几个独立的大类组件。 (1) Client

此节点上运行了MapReduce程序和JobClient,主要是将MapReduce作业进行提交并为用户显示处理结果。 (2) JobTracker

JobTracker主要进行MapReduce作业的执行的协调工作,是MapReduce运行机制中进行主控的节点。JobTracker的功能包括完成MapReduce作业计划的制定、分配任务的Map()和Reduce()执行节点、监控任务的执行、重新分配失败的任务等。JobTracker在Hadoop集群中是十分重要的节点,并且每个集群只能有一个JobTracker。

(3) Map TaskTracker

Map TaskTracker负责执行由JobTracker分配的Map任务,系统中可以由多个Map TaskTracker。

- 13 -

云计算中MapReduce分布式并行处理框架的研究与搭建

(4) Reduce TaskTracker

Reduce TaskTracker负责执行由JobTracker分配的Reduce任务,系统中可以有多个Reduce TaskTracker。

(5) 分布式文件存储系统,例如HDFS(Hadoop Distributed File System) 在此文件存储系统中存储了应用程序运行所需要的数据文件及其他相关的配置文件。

(6) Job(作业)

一个作业在执行过程中可以被拆分成多个Map()和Reduce()任务来完成,是MapReduce程序指定的一个完整计算过程。

(7) Task(任务)

任务分为Map()和Reduce()任务,一个作业通常会包含多个任务,它是MapReduce框架中并行计算的基本单元。 2.6.2 MapReduce作业运行流程

如图2.4所示,来分析MapReduce作业的运行流程。 (1) 作业提交

当使用者编写完成MapReduce程序后会新建一个JobClient的实例,新建完成后JobClient会想主控节点(JobTracker)申请一个新的作业号(JobId),用来标记此次作业。在主控节点检查此次作业输入数据和输出目录没有问题后,变开始调度本次作业需要使用的相关资源和配置,诸如作业的相关配置和分片的次数等,当以上工作全部完成后,JobClient就向主控节点发出作业的提交申请。 (2) 作业初始化

因为主控节点在一个集群中只有一个,所以它会收到一系列由JobClient发出的作业请求,因而主控节点在其内部建立了一个处理队列的机制。将放入内部队列的请求经过作业调度器进行调度,而后主控节点为作业进行初始化调度。

(3) 任务分配

在MapReduce处理框架中的任务分配机制可以形象地成为“pull(拉)”,在任务开始执行分配之前,主要负责mao和reduce任务的TaskTracker节点已经启动,它会向主控节点不断发送心跳消息来询问是否有任务可以执行,如果TaskTracker的作业队列非空,则其会收到主控节点发来的任务。在通常情况下,优先将map任务槽填满,而后再执行reduce任务槽的分配。 (5) Map任务执行

当Map TaskTracker节点主控节点分配的map任务后,会经历一系列的操作。其中

- 14 -

云计算中MapReduce分布式并行处理框架的研究与搭建

重点的是在完成准备工作后,TaskTracker会新建一个TaskRunner实例来执行此Map任务,同时TaskRunner为了避免MapTask的运行异常影响TaskTracker正常运行而单独启动一个java虚拟机(JVM),而后在其中运行指定的map任务。最终直到任务执行完成所有的计算结果将会被存入本地磁盘中。 (6) Reduce任务执行

和Map任务执行的过程相类似,Reduce在执行时同样也会生成单独的java虚拟机来执行任务,但是不同的是只有当所有的map任务全部执行完成后,主控节点才会通知Reduce TaskTracker节点开始执行Reduce任务。

图2.4 MapReduce作业运行流程

(7) 作业完成

随着Reduce任务地执行,ReduceTask将计算结果不断地输出存放到分布式文件系统的临时文件中,而后当全部的ReduceTask任务完成后,将这些临时文件合并为一个最终的输出文件,主控文件会将此作业的状态设置为完成,进而JobClient会通知用户作业的完成情况并显示需要的信息。 2.6.3 进程和状态的更新

因为MapReduce框架要处理的数据是面向集群的批处理作业,所以时长从几秒到几小时不等,对于用户来说,这是一个很长的过程,因而及时获知作业的进展状况是非常重要的。每个作业和任务都有其自身的状态,例如完成、失败、运行等,还有map

- 15 -

本文来源:https://www.bwwdw.com/article/e8bd.html

微信扫码分享

下载全文
范文搜索
下载文档
Top