分布式并行计算mapreduce

manjin666 manjin666     2022-12-16     601

关键词:

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

技术图片

运行结果

技术图片

技术图片

分布式计算框架综述

...于MapReduce的并行化处理,老师给出修改意见中提到了关于分布式计算框架的的国内外研究现状,一开始并没有搞懂分布式计算机框架,以为是MapReduce。MapReduce只是一种并行编程模式,也可以是一种并行框架,并不是分布式计算框... 查看详情

mapreduce分布式计算系统

...编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(归约 查看详情

mapreduce并行编程模型

...3.安装maven并配置环境变量二、课堂主题1. 围绕MapReduce分布式计算讲解三、课堂目标1.理解MapReduce编程模型2.独立完成一个MapReduce程序并运行成功3.了解MapReduce工程流程4.掌握并描述出shuffle全过程(面试)5.理解并解决数据倾斜... 查看详情

google云计算原理与应用之分布式数据处理mapreduce

...模式思想最早是在1995年提出的。MapReduce的特点:与传统的分布式程序设计相比,MapReduce封装了并行处理、容错处理、本地化计算、负载均衡等细节,还提供了一个简单而强大的接口。MapReduce把对数据集的大规模操作,分发给一个... 查看详情

mapreduce编程模型

MapReduce编程模型一种分布式计算模型框架,解决海量数据的计算问题MapReduce将整个并行计算过程抽象到两个函数  map(映射):对一些独立元素组成的列表的每一个元素进行指定的操作,可以高度并行  reduce:对一个列表的元素... 查看详情

mapreduce与hbase的关系?

...编程语言里借来的特性。它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。HBase:HBase是一个分布式的、面向列的开源数据库,该技术来源于FayChang所撰写的Google论文“Bigtable:一个结... 查看详情

mapreduce初识(代码片段)

MapReduce概述MapReduce是一种分布式并行计算框架MapReduce和传统的并行编程模型框架的区别传统并行计算框架MapReduce集群架构/容错性共享式(共享内存/共享存储),容错性差,拓展性较差硬件/价格/扩展性刀片服务器、高速网... 查看详情

处理海量数据的模式mapreduce,大规模数据集的并行运算

...的搜索、挖掘、分析与机器智能学习等。MapReduce计算模型分布式计算的瓶颈是网络带宽。“本地计算”是最有效的一种节约网络带宽的手段。MapReduce的特点1、输入的 查看详情

分布式计算平台:dryad

微软正在研究开发的允许编程人员利用计算机集群(Cluster)或者数据中心运行数据并行处理程序的一个体系架构Dryad,Dryad是微软对应于Google的MapReduce技术。微软正在研究开发的允许编程人员利用计算机集群(Cluster)或者数据中... 查看详情

hadoop中的mapreduce——分布式离线计算框架(代码片段)

...Java写,用python、scala也可以运行三个实例进程:分布式计算程序的时候先分map后合reduce *      MapTask----将计算程序分布的运行在多台电脑上 并且是并行运行  查看详情

java解决分布式存储计算

...数组,如何将这个数组分段在不同的服务器上申请?然后分布式计算?不用sparkredis参考技术A一、高性能计算Hadoop:Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算... 查看详情

4mapreduce思想运行机制

...ce离线计算框架分而治之input>map>shuffle>reduce>output分布式并行的计算框架将计算过程分为两个阶段,Map和ReduceMap阶段并行处理输入数据Reduce阶段对Map结果进行汇总Shuffle链接Map和Reduce两个阶段MapTask将数据写入到本地磁盘Redu... 查看详情

mapreduce工作原理

...的分解与结果的汇总”,它极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。概念"Map(映射)"和"Reduce(... 查看详情

mapreduce分布式计算(代码片段)

...算模型、框架和平台,主要解决海量数据的计算,是目前分布式计算模型中应用较为广泛的一种。练习:计算a.txt文件中每个单词出现的次数helloworldhellohadoophello51doithadoopmapreducemapreducesparkpublicclassWordCountpublicstaticvoidmain(String[]args)... 查看详情

mapreduce的理解

...发任务,也就意味这它就是老大,它来维护任务或者资源mapreduce在hadoop1.x版本上是jobtracker,hadoop2.x版本是通过yarn来管理的,它是ResourceManager,来管理其他节点以及如何分布任务的。小弟在Had 查看详情

系统设计分布式处理之mapreduce

方法介绍MapReduce是一种计算模型,简单的说就是将大批量的工作(数据)分解(MAP)执行,然后再将结果合并成最终结果(REDUCE)。这样做的好处是可以在任务被分解后,可以通过大量机器进行并行计算,减少整个操作的时间。... 查看详情

初识mapreduce(代码片段)

 MapReduce是Google的一项重要技术,它首先是一个编程模型,用以进行大数据量的计算。对于大数据量的计算,通常采用的处理手法就是并行计算。但对许多开发者来说,自己完完全全实现一个并行计算程序难度太大,而MapReduce就... 查看详情

mapreduce概述和wordcount程序

一、Mapreduce概述  Mapreduce是分布式程序编程框架,也是分布式计算框架,它简化了开发!  Mapreduce将用户编写的业务逻辑代码和自带默认组合整合成一个完整的分布式运算程序,并发的运行在hadoop集群上。 二、Mapreduce优... 查看详情