ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:5.95MB ,
资源ID:8730997      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-8730997.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(大数据处理技术ppt讲课稿.docx)为本站会员(b****5)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

大数据处理技术ppt讲课稿.docx

1、大数据处理技术ppt讲课稿大数据处理技术ppt讲课稿科信办 刘伟第一节 Mapreduce编程模型:1.技术背景:分布式并行计算是大数据(pb)处理的有效方法,编写正确高效的大规模并行分布式程序是计算机工程领域的难题:分布式并行计算是大数据(pb)处理的有效方法,编写正确高效的大规模并行分布式程序是计算机工程领域的难题。 并行计算的模型、计算任务分发、计算机结果合并、计算节点的通讯、计算节点的负载均衡、计算机节点容错处理、节点文件的管理等方面都要考虑。 谷歌的关于mapreduce论文里这么形容他们遇到的难题:由 于输入的数据量巨大,因此要想在可接受的时间内完成运算,只有将这些计算分布在成百上

2、千的主机上。如何处理并行计算、如何分发数据、如何处理错误?所有这 些问题综合在一起,需要大量的代码处理,因此也使得原本简单的运算变得难以处理,普通程序员无法进行大数据处理。为了解决上述复杂的问题,谷歌设计一个新的抽象模型,使用这个抽象模型,普通程序员只要表述他们想要执行的简单运算即可,而不必关心并行计算、容错、 数据分布、负载均衡等复杂的细节,这些问题都被封装了,交个了后台程序来处理。这个模型就是mapreduce。谷歌2004年公布的mapreduce编程模型,在工业、学术界产生巨大影响,以至于谈大数据必谈mapreduce。学术界和工业界就此开始了漫漫的追赶之路。这期间,工业界试图做的事情

3、就是要实现一个能够媲美或者比Google mapreduce更好的系统,多年的努力下来,Hadoop(开源)脱颖而出,成为外界实现MapReduce计算模型事实上的标准,围绕着Hadoop,已经形成了一个庞大的生态系统2. mapreduce的概念:MapReduce是一个编程模型,一个处理和生成超大数据集的算法模型的相关实现。简单的一句话解释MapReduce就是“任务的分解与结果的汇总”。MapReduce从它名字上来看就大致可以看出个缘由,两个动词Map和Reduce,“Map(展开)”就是将一个任务分解成为多个任 务,“Reduce”就是将分解后多任务处理的结果汇总起来,得出最后的分析

4、结果。mapreduce成功的最大因素是它简单的编程模型。程序员只要按照这个框架的要求,设计map和reduce函数,剩下的工作,如分布式存储、节点调度、负载均衡、节点通讯、容错处理和故障恢复都由mapreduce框架(比如hadoop)自动完成,设计的程序有很高的扩展性。所以,站在计算的两端来看,与我们通常熟悉的串行计算没有任何差别,所有的复杂性都在中间隐藏了。它让那些没有多少并行计算和分布式处理经验的开发人员也可以开发并行应用,开发人员只需要实现map和reduce两个接口函数,即可完成TB级数据的计算,这也就是MapReduce的价值所在,通过简化编程模型,降低了开发并行应用的入门门槛,

5、并行计算就可以得到更广泛的应用。3.mapreduce的编程模型原理开发人员用两个函数表达这个计算:Map和Reduce,首先创建一个Map函数处理一个基于 key/value pair的数据集合,输出中间的基于key/value pair的数据集合,然后再创建一个Reduce函数用来合并所有的具有相同中间key值的中间value值,就完成了大数据的处理,剩下的工作由计算机集群自动完成。即:(input) = map(k1,v1) -list(k2,v2) =combine- =reduce(k2,list(v2) -list(v2)(output)一共分为map(分解) shuffle(洗牌

6、) reduce(归并)三个阶段。map阶段,每个节点调用程序员编写的map函数,作用于每一个在此节点存放的键值对,map函数的输出同样是一些键值对,中间结果进入shuffle阶段,shuffle系统自动完成,程序员无须也无法控制,shuffle阶段会把所有中间结果里的键相同的所有键-值对通过网络传递给同一个目标节点。在最后的reduce阶段,每个节点会对所有键相同的键值对调用程序员编写的reduce函数,输出最终结果。reduce函数也可以选择再次输出一些键值对,从而可以启动新一轮的mapreduce过程,如此往复。示例1:WordCount 计算一个大的文档集合中每个单词出现的次数,下面是

7、伪代码段:map(String key, String value): / key: document name / value: document contents for each word w in value: EmitIntermediate(w, “1);reduce(String key, Iterator values): / key: a word / values: a list of counts int result = 0; for each v in values: result += ParseInt(v); Emit(AsString(result);Map函数

8、输出文档中的每个词、以及这个词的出现次数(在这个简单的例子里就是1)。Reduce函数把Map函数产生的每一个特定的词的计数累加起来。4mapreduce工作流程 红线中间部分是shuffle部分,计算机自动完成,但是我们必须理解shuffle做了什么,我们才能正确的理解map的结果和reduce的输入之间的关系。Map阶段:数据经过分片化成M个数据集,每个数据集由一个maper节点经过map函数处理成key-value对形式的数据集。Shuffle阶段:map输出的结果放在maper节点本地内存缓存区,缓存区先按照key进行分区(如果有R个reducer,hash(key) mod R分成R

9、个分区,初步划分,分区是排序的,分区内对key排序(排序后可附加combiner合并操作,减少写磁盘数据量),缓冲区快要溢出时,溢写文件,多个溢写文件合并,合并过程再次排序(排序后可附加combiner合并操作),最后形成一个已经分区的、已经排序(对key的排序)的文件。Reduce端会把属于本区的数据取(fetch)到内存,进行合并,合并过程再次排序,缓冲区快要溢出时,溢写文件,多个溢写文件合并,合并过程再次排序,合并为更大的排序文件,最终实现reduce输入数据是经过排序(对key的排序)的数据。其实不管在map端还是reduce端,MapReduce都是反复地执行排序,合并操作,所以说:

10、排序是mapreduce的灵魂。Reduce阶段:最后一次合并的数据总是直接送到Reduce 函数那里,Reduce 函数会作用在排序输入的每一个key-list(value)上,最后的输出key-value对被直接写到HDFS上(分布式文件系统)。有R个reduce任务,就会有R个最终结果,很多情况下这R个最终结果并不需要合并成一个最终结果,因为这R个最终结果可以作为另一个计算任务的输入,开始另一个并行计算任务。这就形成了上面图中多个输出数据片段(HDFS副本)。5.mapreduce的局限实验人员发现,一个mapreduce任务的瓶颈往往在中间的shuffle阶段,特别是系统中节点数量多,

11、并发任务多的时候,原因在于:map和reduce阶段的各节点都是独立工作,有很高的并行性;shuffle阶段各节点需要交互,共享网络带宽。故而大数据算法的瓶颈在于数据的移动。为此,在设计mapreduce算法的时候,需要尽可能减少中间结果,在map和reduce阶段每个节点多做一些工作。但是编程模型的简单,也大大限制了程序员的自由度,很多较复杂的任务难以完成,这是mapreduce的最大的弱点。此外,还存在如下问题:1启动开销大,简单任务也要尽力map-shuffle-redcuce三个阶段,无法实时响应,2只能处理静态数据,对于变化快的数据无能为力,3mapreduce的系统实现是谷歌的机密

12、,据说2007年谷歌mapreduce版本比2012年hadoop快一个数量级。所以突破上述的的三个方面的限制,成为学术界和工业界研究热点,比如有人尝试把rmdb与mapreduce结合起来,解决编程模式简单的局限,谷歌自己有dremel系统可以用于大规模数据分析和查询的实事化,但技术细节没有公布。Hadoop的mapreduce框架在2013年升级mapreduceV2,yarn。第二节 hdfs经典漫画讲解HDFS原理分布式文件系统比较出名的有HDFS 和 GFS,其中HDFS比较简单一点。HDFS和GFS都是专门为对应的MapReduce框架设计的DFS,因此设计上的一些特点也是为了适应

13、MapReduce计算环境的需要。HDFS设计:)运行于商用硬件集群上:硬件错误是常态而不是异常。错误检测并快速自动恢复是HDFS的最核心设计目标。)流式数据访问。运行在HDFS上的应用主要是以流式读为主,做批量处理;更注重数据访问的高吞吐量。)超大规模数据集。HDFS的一般企业级的文件大小可能都在TB级别或者PB级别,支持大文件存储,而且提供整体上高的数据传输带宽,一个单一的HDFS实例应该能支撑数以千万计的文件,并且能在一个集群里扩展到数百个节点。)简单一致性模型。HDFS的应用程序一般对文件实行一次写、多次读的访问模式。)移动计算比移动数据更简单。对于大文件来说,移动数据比移动计算的代价

14、要高。操作海量数据时效果越加明显,这样可以提高系统的吞吐量和减少网络的拥塞。)异构软硬平台间的可移植性。这种特性便于HDFS作为大规模数据应用平台的推广。1、三个部分: 客户端、nameserver(可理解为主控和文件索引,类似linux的inode)、datanode(存放实际数据)HDFS集群有两类节点,并以管理者-工作者模式运行,即:一个namenode(管理者)和多个datanode(工作者)。namenode管理文件系统的命名空间(管理元数据),他维护着文件系统树以及整棵树内所有的文件和目录,这些信息以两个文件形式永久保存在本地磁盘上:命名空间镜像文件fsimage和编辑日志文件ed

15、itlog。namenode也记录着每个文件中各个块所在的数据节点信息,但他并不永久保存块的位置信息,因为这些信息会在系统启动的时候由数据节点重新建立。datanode是文件系统的工作节点(存储实际数据),他们根据需要存储并检索数据块,并定期向namenode发送他们所存储的块的列表。客户端联系NameNode以获取文件的元数据,而真正的文件I/O操作是直接和DataNode进行交互的。2、如何写数据过程HDFS系统write操作一个人对client说:请帮我写入200M数据好吗?Client speak:我很荣幸,但你没有忘记什么嘛?一个人说:a划分块大小128M(用于存放数据) b复制一个

16、块到三个地方Client speak:一个合格的client要知道2件事(1)块大小:一个大文件存储在若干个块中,每个块通常64M or 128 M(2)多路复用:一个块要保存到多个地方,通常为3Client ask Namenode第一步 client划分一个大文件的块大小,用于存储文件内容第二步 client对Namenode说请帮助我分配一个128M的块(datanode上)并多路复用到3个地方namenode分配datanode第一步 Namenode需要找到3个datanode第二步 Namenode整理一下3个datanode地址,发送给clientClient开始写数据第一步Cl

17、ient发送数据只到第一个datanode节点,当第一个datanode节点接收到数据的同时会同步到第二个datanode节点,第二个也会同步到第三个节点,以此类推直到最后一个节点为止第二步一旦所有的数据都写入磁盘后,所有的datanode就向Namenode发送完成信号第三步Namenode就会显示块已保存,并且已经复用第四步Client会用同样的步骤完成后续数据写入当写完所有块后第一步当写完所有块后,Client就会关闭文件,并告之Namenode停止传输第二步Namenode此时就会知道所有的数据信息都保存在磁盘中(Meta 是数据块的元信息,保存在namenode的硬盘上。)Recap

18、重述Client 用于划分保存文件的块Namenode 用于提供保存块的datanode节点信息,包括所有的多路复用节点Datanode用于保存数据HDFS的块(64m or 128m)比磁盘块大,其目的是为了最小化寻址开销。太大也不好,MapReduce中的任务通常一次只处理一个block的数据,如果块过大,导致任务数太小,那作业就会分配不均,作业的运行速度就会比较慢。那对HDFS文件分块有哪些好处呢? 1)一个文件的大小可以大于集群网络中任意一个机器中的磁盘的容量,因为将文件分块,不需要所有的块都分布在一个磁盘上,而是将其打散,尽量均匀的分布在每个机器的磁盘上。 2)使用块抽象而非整个文件

19、作为存储单元,简化了存储子系统的设计。 3)块非常适合用于数据备份进而提供数据容错能力的可用性。将每个块复制到少数几个独立的机器上(dfs.replication 默认是3),可以确保在发生块、磁盘或机器故障后数据不丢失。如果一个块不可用,系统会从其他地方读取另外的副本,而这个过程对用户来说是透明的,用户也不需要了解这其中的策略。系统也会及时的将副本不足的块进行slave之间进行复制,从而达到dfs.replication 设定的值。保证副本数恢复到正常的水平。应用程序可以为常用的文件块设置更多的副本数,分散集群的负载压力。给出的三个datanode是按与客户端的距离排序的,最近的排前面。本地

20、当然是最近的,相同机架的其次,其后是不同机架的,距离最远的是分属不同数据中心的server 3、读取数据过程HDFS集群read操作一个人对client说:请帮我读取相关文件Client speak:Roger好的知道了!交互NamenodeClient - Namenode:请给我关于这个文件的信息(传输filename到Namenode)Namenode Client:回复存储这个文件所有的块信息给Client,按datanode到Client的距离进行排序,实际上就是知道块存储在哪个datanode上,先从最近的节点读取数据,(Nanenode向client返回每个数据块所在的datan

21、odes 列表, client选择最近的服务器下载该数据块,block1blockn)例 Block1:at DN x1 y1 z1 Block2:at DN x2 y2 z2 Block3:at DN x3 y3 z3Client:a.知道有多少个块(关于这个文件)需要下载 b.还知道每个块保存在哪些datanode上因此Client会依次下载这些块到本地数据下载流程Client:先从最近的datanode节点下载数据,它要跟datanode作一个交互,申请获取相关块信息,datanode返回块数据可能你会问到,如果datanode硬件损坏啦,没有相关数据啦,数据本身造破坏不能恢复啦,这些不

22、幸的事情时我们有没有好的办法呢,呵呵木要担心下面我们就会讲到故障容错的理念4、容错:节点故障,通讯故障,数据损坏。三种典型故障1)node failure节点故障(namenode服务器datanode数据节点)节点硬件故障2)communication failure通信故障不能发送和接收数据,有可能datanode脱离了网络,找不到大家了3)datacorruption数据损坏,两种可能当数据传输到网络中时损坏当在磁盘存储时数据损坏Namenode的单点故障:所有的文件访问都要通过NameNode来进行,所以NameNode至关重要。一旦NameNode发生毁坏,则整个系统都不可用。每个d

23、atanode周期性发送心跳信息给namenode。网络中断可能会导致一批datanode连不上namenode。namenode检测到一段时间没有上报心跳后(datanode活着,但有网络问题),NN把这个datanode标识为dead,不再分配新的io请求给它。在这个datanode上的所有数据都不能访问了,这就会导致一些block的备份数量会少于指定的值。namenode会经常检查block备份数量,发起重新备份。Secondary NameNode(次级副手nn)处理流程 (1) 、 namenode 响应 Secondary namenode 请求,将 edit log 推送给 Se

24、condary namenode , 开始重新写一个新的 edit log 。 (2) 、 Secondary namenode 收到来自 namenode 的 fsimage 文件和 edit log 。 (3) 、 Secondary namenode 将 fsimage 加载到内存,应用 edit log , 并生成一 个新的 fsimage 文件。 (4) 、 Secondary namenode 将新的 fsimage 推送给 Namenode 。 (5) 、 Namenode 用新的 fsimage 取代旧的 fsimage , 在 fstime 文件中记下检查 点发生的时HDFS

25、通信协议HighAvailabilityfortheHDFSNamenode:ActiveNNNNthatisactivelyservingthereadandwriteoperationsfromtheclients. Standby(备份)NNthisNNwaitsandbecomesactivewhentheActivediesorisunhealthy.Hot,Warm,Coldfailover故障切换。A standby NNstoresa state that isa subsetof the runtimestate of ActiveNN.ColdStandby:Standby

26、NNhaszerostate(e.g.itisstartedaftertheActiveisdeclareddead. 是当Active NN已经挂掉后才起来的,它本身没有保存任何数据,这时候并不会减少恢复时间WarmStandby:Standbyhaspartialstate: 是在Active NN挂掉前起来的,其中保存了一部分数据,所以在恢复时只需要恢复没有的数据,减少了恢复时间。FsImage和EditLog是HDFS的核心数据结构。这些文件损坏会导致HDFS失效。namenode可以配置支持多份元数据拷贝。 ithas loaded fsImageand editLogsbut ha

27、snot received any blockreports ithasloaded fsImageand rolledlogs andallblockreports.HotStandby:StandbyhasallmostoftheActivesstateandstartimmediately它里面保存的数据和Active是完成一样的,可以直接热切换到它上面继续服检测网络故障1)Client每当向datanode写数据时,datanode都会给一个确认ACK信号,表示接收无误2)Client没有收到ACK信号,就假设datanode或网络故障检测数据损坏故障1)Client给datanode

28、传输信息时,信息包括2部分,checksum校验和、真实数据2)Datanode即存储数据也存储校验和由datanode定期发送块报告给namenode,这个块报告列出了所有的块信息。注释:Datanode先检查checksum校验和是ok的,才发送块报告,因为块报告不包括坏块信息举例:Datanode发送块报告时不包括坏块信息(假如发送4个块),Namenode在和原来“校验和”对比后认为原来应该有5个块,那么说明有一个块损坏了重述心跳信息和块报告1)Datanode每3秒钟向Namenode发送心跳信息,表示我还活着2)datanode在发送块报告的时候会自动跳过坏块信息,只发送好块信息3

29、)namenode在接收到块报告后与原来的校验和进行对比,总块数-好块数=坏块数5、容错第二部分:处理读写故障1.处理写错误1)事先声明:我们写入块的最小数据单位是包(通常64K),记住多路复用流水线此外datanode要给client端发送接收到包的ACK确认信息,以便确认datanode完全接收到了数据包。2)如果client端从一些datanode节点上不能获得ACK确认信息,就认为这些datanode已不可用,因此client需要调整多路复用流水线,以跳过这个损坏的datanode节点,但不会影响其他的正常的datanode。3)在调整多路复用之后,请注意到这个数据包仍将被“under

30、 replicated”(低于预设副本数复制),namenode稍后将会查看损坏的datanode2.处理读错误1)当client端询问一个块位置时,namenode将返回client端所有的datanode节点地址(三个副本所在节点的地址)。2)如果client发现一个datanode不可用了,将会从其他的datanode处获取数据6、容错第三部分:处理数据节点故障1.首先,Namenode保存了2个重要的表1)块信息表,包含块保存在哪些datanode节点上2)节点信息表,包含datanode节点保存哪些块2.再次,Namenode不间断更新这2个表1)如果namenode在datanod

31、e上发现一个坏块,就会更新块信息表,在表里标识坏块在哪个datanode上2)如果namenode发现datanode节点不可用了,就会更新2个表(块信息表,节点信息表),在2个表中同时标识不可用datanode节点信息3.under复制1)Namenode定期扫描第一张表(块表),看看哪些数据块,没有成功备份,这些块叫做“低于预设副本数的块”。4.块同步1)对于所有“低于预设副本数的块”,Namenode要求其他datanode从包含副本的datanode中拷贝一个副本。2)像这样,Namenode对某个Datanode说你能从那个datanode拷贝块吗?这个Datanode对那个Datanode说我需要从你这里拷贝块,那个说OK没问题给你!提出一个问题:所有这些

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2