分布式并行计算MapReduce

1.阐明Hadoop平台上HDFS和MapReduce的功能、工作原理和工作过程。

HDFS功能:是Hadoop项目的核心子项目。是分布式计算中数据存储管理的基础,是基于流数据模式访问和处理超大文件的需求而开发的,可以运行于廉价的商用服务器上 pc server。

具有以下的功能:
(1)高容错性 :自动保存多个副本来增加容错性 ,如果某一个副本丢失,HDFS机制会复制其他机器上的副本,透明实现。

(2)支持超大文件 :流式数据访问 批量处理不是用户交互式处理。

(3)HDFS使应用程序能够以流的形式访问数据 注重的是吞吐量而不是数据访问的速度。

(4)简化的一致性模型大部分为一次写入多次读取。

HDFS的工作机制和原理:

(1)HDFS集群分为两大角色:NameNode、DataNode  (Secondary Namenode)

(2)  NameNode负责管理整个文件系统的元数据

(3)DataNode 负责管理用户的文件数据块

(4)文件会按照固定的大小(blocksize)切成若干块后分布式存储在若干台datanode上

(5)每一个文件块可以有多个副本,并存放在不同的datanode上

(6)Datanode会定期向Namenode汇报自身所保存的文件block信息,而namenode则会负责保持文件的副本数量

(7)HDFS的内部工作机制对客户端保持透明,客户端请求访问HDFS都是通过向namenode申请来进行

二、MapReduce的功能、工作原理和工作过程。

MapReduce的功能:

1)数据划分和计算任务调度:

系统自动将一个作业(Job)待处理的大数据划分为很多个数据块,每个数据块对应于一个计算任务(Task),并自动 调度计算节点来处理相应的数据块。作业和任务调度功能主要负责分配和调度计算节点(Map节点或Reduce节点),同时负责监控这些节点的执行状态,并 负责Map节点执行的同步控制。

2)数据/代码互定位:

为了减少数据通信,一个基本原则是本地化数据处理,即一个计算节点尽可能处理其本地磁盘上所分布存储的数据,这实现了代码向 数据的迁移;当无法进行这种本地化数据处理时,再寻找其他可用节点并将数据从网络上传送给该节点(数据向代码迁移),但将尽可能从数据所在的本地机架上寻 找可用节点以减少通信延迟。

3)系统优化:

为了减少数据通信开销,中间结果数据进入Reduce节点前会进行一定的合并处理;一个Reduce节点所处理的数据可能会来自多个 Map节点,为了避免Reduce计算阶段发生数据相关性,Map节点输出的中间结果需使用一定的策略进行适当的划分处理,保证相关性数据发送到同一个 Reduce节点;此外,系统还进行一些计算性能优化处理,如对最慢的计算任务采用多备份执行、选最快完成者作为结果。

4)出错检测和恢复:

以低端商用服务器构成的大规模MapReduce计算集群中,节点硬件(主机、磁盘、内存等)出错和软件出错是常态,因此 MapReduce需要能检测并隔离出错节点,并调度分配新的节点接管出错节点的计算任务。同时,系统还将维护数据存储的可靠性,用多备份冗余存储机制提 高数据存储的可靠性,并能及时检测和恢复出错的数据。

MapReduce程序运行过程:

  1. 作业运行过程:首先向JobTracker请求一个新的作业ID;然后检查输出说明(如输出目录已存在)、输出划分(如输入路径不存在);JobTracker配置好所有需要的资源,然后把作业放入到一个内部的队列中,并对其进行初始化,初始化包括创建一个代表该正在运行的作业对象(封装任务和记录信息),以便跟踪任务的状态和进程;作业调度器获取分片信息,每个分片创建一个map任务。TaskTracker会执行一个简单的循环定期发送heartbeat给JobTracker,心跳间隔可自由设置,通过心跳JobTracker可以监控TaskTracker是否存活,同时也能获得TaskTracker处理的状态和问题,同时也能计算出整个Job的状态和进度。当JobTracker获得了最后一个完成指定任务的TaskTracker操作成功的通知时候,JobTracker会把整个Job状态置为成功,然后当客户端查询Job运行状态时候(注意:这个是异步操作),客户端会查到Job完成的通知的。

  2. 逻辑角度分析作业运行顺序:输入分片(input split)、map阶段、combiner阶段、shuffle阶段、reduce阶段。

  1. map阶段:即执行map函数。
  2. combiner阶段:这是一个可选择的函数,实质上是一种reduce操作。combiner是map的后续操作,主要是在map计算出中间文件前做一个简单的合并重复key值的操作。
  3. shuffle阶段:指从map输出开始,包括系统执行排序即传送map输出到reduce作为输入的过程。另外针对map输出的key进行排序又叫sort阶段。map端shuffle,简单来说就是利用combiner对数据进行预排序,利用内存缓冲区来完成。reduce端的shuffle包括复制数据和归并数据,最终产生一个reduce输入文件。shuffle过程有许多可调优的参数来提高MapReduce的性能,其总原则就是给shuffle过程尽量多的内存空间。
  4. reduce阶段:即执行reduce函数并存到hdfs文件系统中。

2.HDFS上运行MapReduce

1)准备文本文件,放在本地/home/hadoop/wc

2)编写map函数和reduce函数,在本地运行测试通过

本地运行二个程序:

下载文本文件或爬取网页内容存成的文本文件:

3)启动Hadoop:HDFS, JobTracker, TaskTracker

把文本文件上传到hdfs文件系统上 user/hadoop/input

建立一个shell脚本文件:streaming接口运行的脚本,名称为run.sh

运行结果

原文地址:https://www.cnblogs.com/manjin666/p/10966183.html

时间: 2024-11-15 14:16:10

分布式并行计算MapReduce的相关文章

【开源专访】Fourinone创始人彭渊:打造多合一的分布式并行计算框架

摘要:Fourinone是一个分布式并行计算框架,以轻量的方式提供了一个四合一的分布式框架功能以及简单易用的API,通过实现对多台计算机资源的统一利用,来获得强大的计算能力.本期我们采访了项目创始人彭渊. Fourinone(即Four-in-one,中文名字“四不像”)是一个分布式计算框架,提供了一个4合1的分布式框架功能(即整合了Hadoop.Zookeeper.MQ.分布式缓存的主要功能)和简单易用的编程API,实现对多台计算机CPU.内存.硬盘的统一利用,从而获取到强大计算能力去解决复杂

LMT NEW PBS作业排队管理系统分布式并行计算

LMT NEW PBS作业排队管理系统分布式并行计算 LMT NEW PBS作业排队管理系统,利用集群系统来构建分布式并行环境,将一个海量的计算请求看作一个作业,提交给集群系统,管理节点将这个作业分解为多个子任务,再根据收集的节点负载信息将这些任务分别映射到各个节点上进行计算. 一个作业在集群系统中的完整调度过程分为6个部分,分别为:提交作业,调度作业,分发作业,运行作业,返回输出和返回结果到提交节点. 基于集群系统的分布式并行计算结构如下图所示: (分布式并行计算结构图) 分布式并行计算结构包

基于hadoop (map/reduce)的大规模分布式并行计算生产排程系统的设计

map/reduce是大数据处理的技术,它的思路是把大规模数据分成一个个小数据块,每个数据块由一个map任务来处理,处理的中间结果汇总到reduce,最后生成最终的处理结果,这个处理和汇总的过程是可以反复多次的,也就是map-reduce-map-reduce 基于map/reduce的思路,我们可以设计基于hadoop(map/reduce)的大规模分布式并行计算生产排程系统,怎么样把大数据处理变成大规模分布式并行计算呢,就是我们不切分数据,每个map任务的数据都是相同的,每个map任务对排程

分布式并行计算方案:parallel computing by kafka-storm 发布了

HighAvailabilityToolkit1.3 发布了 version 1.3,如何在分布式集群中,充分利用多节点,对大数据进行拆分,实现并行计算,"parallel computing by kafka-storm " 提供了一种很好的思路. 源码 : https://github.com/yfwangpeng/HighAvailabilityToolkit 微博:http://weibo.com/58wp58

Hadoop2.2.0伪分布式之MapReduce简介

一概念. mapReduce是分布式计算模型.注:在hadoop2.x中MapReduce运行在yarn上,yarn支持多种运算模型.storm.spark等等,任何运行在JVM上的程序都可以运行在yarn上. MR有两个阶段组成,Map和Reduce,用户只需要实现Map()和reduce()两个函数(且这两个函数的输入和输出均是key -value的形式)即可实现分布式计算.代码示例略. MapReduce设计框架: 在1.0中:,管理者:Job Tracker:被管理者:Task Trac

(3)Google云计算原理与应用之分布式数据处理MapReduce

MapReduce这种并行编程模式思想最早是在1995年提出的. MapReduce的特点: 与传统的分布式程序设计相比,MapReduce封装了并行处理.容错处理.本地化计算.负载均衡等细节,还提供了一个简单而强大的接口. MapReduce把对数据集的大规模操作,分发给一个主节点管理下的各分节点共同完成,通过这种方式实现任务的可靠执行与容错机制. MapReduce的编程模型: MapReduce的实现机制: (1)MapReduce函数首先把输入文件分成M块 (2)分派的执行程序中有一个主

《并行计算》期末总结

<并行计算>总结 标签: 并行计算 一.并行介绍 域分解 针对的分解对象:数据 首先确定数据如何划分到各处理器 然后确定各处理器要做的事情 示例:求最大值 任务(功能)分解 针对的分解对象:任务(功能) 首先将任务划分到各处理器 然后确定各处理器要处理的数据 二.并行硬件性能 Flynn弗林分类 SISD: Single Instruction stream Single Data stream SIMD MISD MIMD 并行计算机结构模型 PVP(Parellel Vector Proc

我们为什么需要Map-Reduce?

在讨论我们是否真的需要Map-Reduce这一分布式计算技术之前,我们先面对一个问题,这可以为我们讨论这个问题提供一个直观的背景. 问题 我们先从最直接和直观的方式出发,来尝试解决这个问题: 先伪一下这个问题: SELECT COUNT(DISTINCT surname) FROM big_name_file 我们用一个指针来关联这个文件. 接着考察每一行的数据,解析出里面的姓氏,这里我们可能需要一个姓氏字典或者对照表,然后我们可以利用最长前缀匹配来解析出姓氏.这很像命名实体识别所干的事. 拿到

Google分布式系统三驾马车: GFS,mapreduce,Bigtable

谈到分布式系统,就不得不提Google的三驾马车:Google fs[1],Mapreduce[2],Bigtable[3]. 虽然Google没有公布这三个产品的源码,但是他发布了这三个产品的详细设计论文.而且,Yahoo资助的Hadoop也有按照这三篇论文的开源Java实现:Hadoop对应Mapreduce, Hadoop Distributed File System (HDFS)对应Google fs,Hbase对应Bigtable.不过在性能上Hadoop比Google要差很多,参见