版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大数据导论第四章PART01大数据技术概述PART02Google大数据处理系统CONTENTS目录PART03Hadoop大数据处理系统PART04习题本节从以下三个部分概括讲解,分别是:分布式计算(DistributedComputing)服务器集群(ServerCluster)大数据的技术基础PART01大数据技术概述分布式计算对于如何处理大数据,计算机科学界有两大方向。第一个方向是集中式计算,第二个方向是分布式计算。集中式计算:通过不断增加处理器的数量来增强单个计算机的计算能力,从而提高处理数据的速度。分布式计算:就是把一组计算机通过网络相互连接组成分散系统,然后将需要处理的大量数据分散成多个部分,交由分散系统内的计算机组同时计算,最后将这些计算结果合并得到最终的结果。对于当时的互联网公司来说,IBM的大型机的价格过于昂贵。因此,互联网公司的把研究方向放在了可以使用在廉价计算机上的分布式计算上
。服务器集群服务器集群是由互相连接在一起的服务器群所组成的一个并行式或分布式系统。目的在于提升服务器整体计算能力服务器集群中的服务器运行同一个计算任务。因此,从外部看,这群服务器表现为一台虚拟的服务器,对外提供统一的服务。尽管单台服务器的运算能力有限,但是将成百上千的服务器组成服务器集群后,整个系统就具备了强大的运算能力,可以支持大数据分析的运算负荷。比如:Google,Amazon,阿里巴巴的计算中心里的服务器集群都达到了5000台服务器的规模。大数据的计算基础2003~2004年,Google发表了MapReduce、GFS(GoogleFileSystem)和BigTable三篇技术论文,提出了一套全新的分布式计算理论。以下三大组件组成了Google的分布式计算模型:MapReduce是分布式计算框架。GFS(GoogleFileSystem)是分布式文件系统。BigTable是基于GoogleFileSystem的数据存储系统。Google的分布式计算模型相比于传统的分布式计算模型有三大优势:首先,简化了传统的分布式计算理论,降低了技术实现的难度。其次,可以应用在廉价的计算设备上。最后,被Google应用,取得了很好的效果,有实际应用的证明。大数据的计算基础随后,各家互联网公司开始利用Google的分布式计算模型搭建自己的分布式计算系统,Google的成功使人们开始效仿,因此而产生了开源系统ApacheHadoop。Hadoop体系和Google体系各方面的对应关系表大数据系统体系计算模式文件系统数据库系统Hadoop体系HadoopMapReduceHDFSHBaseGoogle体系MapReduceGFSBigTableGoogle提出了一整套基于分布式并行集群方式的基础架构技术,利用软件的能力来处理集群中经常发生的节点失效问题。Google使用的大数据平台主要包括三个相互独立又紧密结合在一起的系统:Google文件系统(GoogleFileSystem,GFS),针对Google应用程序的特点提出的MapReduce编程模式,和大规模分布式数据库BigTable。PART02Google大数据处理系统
GFS系统架构GFS是一个大型的分布式文件系统,为Google大数据处理系统提供海量存储,主要由一个Master(主服务器)和很多ChunkServer(数据块服务器)组成。Client是应用程序的访问GFS的接口。ChunkServer负责具体的存储工作。数据以文件的形式存储在ChunkServer上。Master主要是负责维护系统中的名字空间、访问控制信息、从文件到块的映射以及块的当前位置等元素据,并与ChunkServer通信。GFS的系统架构GFS的特点GFS系统有如下好处:文件操作大部分是流式读写,不存在大量重复的读写,因此即使使用缓存对系统性能的提高也不大;ChunkServer上的数据存储在本地文件系统上,若真的出现频繁存取,那么本地文件系统的缓存也可以支持;若建立系统缓存,那么缓存中的数据与ChunkServer中的数据的一致性很难保证。1采用中心服务器模式,有如下优势:没有系统缓存具有如下优势:2可以方便的增加ChunkServer;Master可以掌握系统内所有ChunkServer的情况,方便进行负载均衡;不存在元数据的一致性问题。GFS的容错机制GFS采用中心服务器的模式,该模式的最大优点是便于管理,因为中心服务器可以获知所有子服务器的状态,但该模式也有一个比较致命的缺点,那就是单点故障。其实,GFS的中心服务器只是逻辑上是一个,实际上GFS的Manster是有后备机制的。当Master宕机时,后备Master会接替工作。Chunk服务器在硬盘上存储实际数据。Google把每个chunk数据块的大小设计成64M,每个chunk被复制成3个副本放到不同的ChunkServer中,以创建冗余来避免服务器崩溃。GFS的读取流程(1)客户端向Master发送请求,请求信息为(文件名,chunk索引);(2)Master使用心跳信息监控块服务器的状态,并向其发送指令;(3)ChunkServer需要周期性的返回自己的状态给Master,以确保能够接收Master的请求;(4)Master将(Chunk句柄,Chunk位置)这一信息返回给客户端;(5)客户端使用文件名和块索引作为Key进行缓存信息。然后,客户端发送请求到其中的一个副本中(通常为最近的),该请求包括(Chunk句柄,字节范围)。对这个块的后续操作,客户端无需再和Master进行通信,除非缓存信息过期或者文件被重新打开。(6)块服务器将所需的chunk数据发送给客户端。MapReduce执行流程MapReduce执行流程MapReduce执行流程用户程序首先调用MapReduce库操作将输入文件分成M个数据片段;然后将用户程序拷贝到集群内其它机器上,创建大量的程序副本。这些程序副本中的有一个Master程序,其它的都是worker程序。Master程序负责分配任务。有M个map任务和R个reduce任务将被分配,Master将一个map任务或reduce任务分配给一个空闲的worker。
被分配了map任务的worker程序读取相关的输入数据片段,从输入的数据片段中解析出key/value对,然后把key/value对传递给用户自定义的Map函数,由Map函数生成并输出的中间key/value对,并缓存在内存中。
缓存中的key/value对通过分区函数分成R个区域,之后周期性的写入到本地磁盘上。缓存的key/value对在本地磁盘上的存储位置将被回传给master,由master负责把这些存储位置再传送给Reduceworker。1234MapReduce执行流程当Reduceworker程序接收到master程序发来的数据存储位置信息后,使用RPC从Mapworker所在主机的磁盘上读取这些缓存数据。当Reduceworker读取了所有的中间数据后,通过对key进行排序后使得具有相同key值的数据聚合在一起。Reduceworker程序遍历排序后的中间数据,对于每一个唯一的中间key值,Reduceworker程序将这个key值和它相关的中间value值的集合传递给用户自定义的Reduce函数。Reduce函数的输出被追加到所属分区的输出文件。当所有的Map和Reduce任务都完成之后,master唤醒用户程序。在这个时候,在用户程序里的对MapReduce调用才返回。567BigTable分布式数据存储系统简介BigTable是Google设计的分布式数据存储系统,用来处理海量的数据的一种非关系型的数据库。设计BigTable的动机主要有:需要存储的数据种类繁多。海量的服务请求。商用数据库无法满足Google的需求。设计BigTable所需的基本目标:广泛的适用性。很强的可扩展性。高可用性。简单性。BigTable数据模型BigTable是一个分布式多维映射表,表中的数据是通过一个行关键字(RowKey)、一个列关键字(ColumnKey)及一个时间戳(TimeStamp)进行索引的。行关键字(RowKey)BigTable的行关键字可以是任意的字符串,但是大小不能够超过64KB。并且表中数据都是根据行关键字进行排序的,排序使用的是词典序。列关键字(ColumnKey)BigTable并不是简单地存储所有的列关键字,而是将其组织成所谓的列族(ColumnFamily),每个族中的数据都属于同一个类型,BigTable数据模型列关键字语法规则:族名:限定词(family:qualifier)其中,族名必须有意义,限定词则可以任意选定。时间戳(TimeStamp)部分需要保存不同时间的数据,这些不同的数据版本必须通过时间戳来区分。BigTable中的时间戳是64位整型数。为了简化不同版本的数据管理,BigTable目前提供了两种设置:一种是保留最近的N个不同版本另一种就是保留限定时间内的所有不同版本BigTable数据模型BigTable对存储在其中的数据不做任何解析,一律看做字符串。BigTable的存储逻辑可以表示为:(row:string,
column:string,
time:int64)→string
BigTable数据模型BigTable系统架构BigTable是在Google的三个大数据系统组件基础之上构建的,包括WorkQueue、GFS和Chubby,BigTable主要由三部分组成:客户端程序库(ClientLibrary)、一个主服务器(MasterServer)和多个子表服务器(TabletServer)WorkQueue是一个分布式的任务调度器,它主要被用来处理分布式系统队列分组和任务调度。GFS是Google的分布式文件系统,在BigTable中GFS主要用来存储子表数据及一些日志文件。BigTable还需要一个锁服务的支持,BigTable选用了Google自己开发的分布式锁服务Chubby。BigTable系统架构主服务主要进行一些元数据的操作及子表服务器之间的负载调度问题。实际的数据是存储在子表服务器上的。首先要利用其库函数执行Open()操作来打开一个锁(实际上就是获取了文件目录),客户端主要与子表服务器通信。Hadoop是一个处理、存储和分析海量的分布式、非结构化数据的开源框架。最初由Yahoo的工程师DougCutting和MikeCafarella在2005年合作开发,后来,Hadoop被贡献给了Apache基金会,成为了Apache基金会的开源项目。PART03Hadoop大数据处理系统Hadoop简介Hadoop是一种分析和处理大数据的软件平台,是Appach的一个用Java语言所实现的开源软件的框架,在大量计算机组成的集群当中实现对于海量的数据进行的分布式计算。Hadoop采用MapReduce分布式计算框架,并根据GFS开发了HDFS分布式文件系统,根据BigTable开发了HBase数据存储系统。低成本、高可靠、高扩展、高有效、高容错等特性让Hadoop成为最流行的大数据分析系统。HDFS分布式文件系统HDFS是Hadoop中的大规模分布式文件系统,在整个架构上与GFS大致相同,但是更简化,比如同一时刻只允许一个客户端对文件进行追加写操作。HDFS的整体架构包括:NameNode,DataNode,SecondaryNameNode以及客户端组成。NameNode(名称节点):NameNode负责管理整个分布式文件系统的元数据。元数据保存在内存中还负责DataNode的状态监控,通过心跳来传递管理信息和数据信息。HDFS分布式文件系统SecondaryNameNode(辅助名称节点)定期从NameNode备份内存命名空间元数据到文件系统,以便当NameNode出现故障的时候,可以从SecondaNameNode上获取HDFS命名空间元数据,从而重启NameNode。DataNode(数据节点)负责数据块的实际存储和读写。每个数据块以3份冗余镜像的方式分布在不同的DataNodes。这样,如果一个节点失效,另一个节点包含失效节点数据的副本。客户端HDFS客户端和NameNode联系获取所需读/写文件的元数据,实际的数据读写都是和DataNode直接通信完成的。HDFS分布式文件系统HDFS具有以下几个特点:适合存储非常大的文件;适合流式数据读取,即适合“只写一次,读多次”的数据处理模式;适合部署在廉价的机器上。HDFS不适合以下场景:不适合存储大量的小文件,因为受NameNode内存大小限制;不适合实时数据读取,高吞吐量和实时性是相悖的,HDFS选择前者;不适合需要经常修改数据的场景。HDFS整体架构如下图:HadoopMapReduce计算模型HadoopMapReduce计算模型:HadoopMapReduce为每一个inputsplit创建一个task调用Map计算,在此task中依次处理此split中的一个个记录,map会将结果以key/value的形式输出。Hadoop负责按key值将map的输出整理后作为Reduce的输入,ReduceTask的输出为整个job的输出,保存在HDFS上。单词计数程序案例实例描述.计算出文件中每个单词的频数。要求输出结果按照单词的字母顺序进行排序。每个单词和其频数占一行,单词和频数之间有间隔。比如,输入两个文件,其内容分别如下:对应上面的输入,其输出样例为:HelloWorldByeWorldHelloHadoopByeWorldBye:2Hadoop:2Hello:2World:2单词计数程序设计思路解决方案将文件内容切分成单词,然后将所有相同的单词聚集在一起,最后计算单词出现的次数并输出。Map阶段:完成单词切分任务内容切分和数据不相关,可以并行处理,每个节点只要将输入数据切分成单词就可以了。Reduce阶段:完成单词频数计算任务不同单词之间的频数不相关,相同单词的频数计算也可以并行化处理,所以,可以将相同的单词交给一台机器来计算频数,然后输出最终结果。Shuffle阶段:完成相同单词的聚集和分发工作将中间结果根据不同单词分组分发给Reduce节点单词计数程序案例第一步:自动对文本进行分割对两个文本进行MapReduce操作把每个文本作为一个split将文本按行分割成<key1,value1>对,key1为单词在文本中的偏移量,其中偏移量包括了回车所占的字符这一步由MapReduce框架自动完成HelloWorldByeWorldHelloHadoopByeHadoop分割分割输入数据分割结果<0,“HelloWorld”><12,“ByeWorld”><0,“HelloHadoop”><13,“ByeHadoop”>单词计数程序案例第二步:执行map()函数将分割好的<key1,value1>对交给用户定义的map方法进行处理,生成新的<key2,value2>对在新的<key2,value2>对中,Key2为单词,value2均为1map分割结果Map输出map<0,“HelloWorld”><12,“ByeWorld”><0,“HelloHadoop”><13,“ByeHadoop”><Hello,1><Hadoop,1><Bye,1><Hadoop,1><Hello,1><World,1><Bye,1><World,1>单词计数程序案例第三步:内部组合得到map方法输出的<key,value>对后,Mapper会将它们按照key值进行排序并进行内部组合,将key值相同value值组合成list,得到Mapper的最终输出结果Map输出排序结果组合结果<Hello,1><World,1><Bye,1><World,1><Hello,1><Hadoop,1><Bye,1><Hadoop,1>排序排序组合组合<Bye,1><Hello,1><World,1><World,1><Bye,1><Hadoop,1><Hadoop,1><Hello,1><Bye,1><Hello,1><World,list(1,1)><Bye,1><Hadoop,list(1,1)><Hello,1>单词计数程序案例第四步:执行reduce()函数Reducer先对从Mapper接收的数据进行排序合并再交由用户自定义的reduce方法进行处理,得到新的<key3,value3>对并作为WordCount的输出结果组合结果排序合并结果Reduce结果<Bye,1><Hello,1><World,list(1,1)><Bye,1><Hadoop,list(1,1)><Hello,1>排序reduce<Bye,list(1,1)><Hadoop,list(1,1)><Hello,list(1,1)><World,list(1,1)>Bye:2Hadoop:2Hello:2World:2HadoopMapReduce架构HadoopMapReduce运行架构图:在HadoopMapReduce分布式计算模型主要有两个角色,第一个角色是JobTracker;另一个角色是TaskTracker。JobTracker的主要任务是负责协调Mapreduce作业的执行,具体是任务的调度、分发。JobTracker是Mapreduce计算架构中的主控节点。TaskTracker用来执行JobTracker分配的任务,具体包括Map任务和Reduce任务。Hadoop生态圈Hadoop生态系统:Hadoop生态圈包括如下主要组件:ZookeeperHBaseHadoopYARN:HDFSPigHiveMapReduceHadoop版本演进当前Hadoop有两大版本:Hadoop1.0和Hadoop2.0。Hadoop版本演进Hadoop1.0由分布式文件系统HDFS和分布式计算框架MapReduce组成HDFS由一个NameNode和多个DataNode组成MapReduce由一个JobTracker和多个TaskTracker组成Hadoop1.0局限性NameNode单点故障问题资源利用率低无法支持多种计算框架扩展性差Hadoop版本演进Hadoop2.0为克服Hadoop1.0中HDFS和MapReduce存在的不足而提出第二代Hadoop针对Hadoop1.0的单NameNode制约HDFS扩展性问题,提出HDFSFederation。针对Hadoop1.0中MapReduce在扩展性和多框架支持等方面不足的问题,将JobTracker中资源管理和作业控制功能分开,分别由组件ResourceManager和ApplicationMaster实现。引入了资源管理框架Yarn通用的资源管理模块,为各类应用程序进行资源管理和调度Hadoop2.0改进Hadoop发行版本ClouderaHortonworks2008年成立的Cloudera是最早将Hadoop商用的公司,Cloudera产品主要为:CDH:是Cloudera的Hadoop发行版,并且完全开源。ClouderaManager:是集群的软件分发及管理监控平台。ClouderaSupport:是对Hadoop的技术支持。2011年成立的Hortonworks,是Y
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肾脏疾病的营养管理
- 2026五法普法知识竞赛题库及参考答案【2026】
- 2026年主管护师(内科护理)考试(相关专业知识)真题及答案
- 2026年天津继续教育公需科目答题及答案
- 2025年法律职业资格考试客观题模拟试题及答案
- 护理风险预警模型验证与优化
- 商法入学模拟试题及答案大全
- 《小学语文三年级上册语文园地八》课件
- 第六单元 区域经济一体化
- 矿石学单元试题与标准答
- 2025年河北省邢台市威县部分学校小升初数学试卷含答案
- 2026苏州工业园区邻里中心发展有限公司劳务派遣制员工招聘1人笔试备考题库及答案解析
- 2026年幼儿园保健医能力检测试卷【夺冠】附答案详解
- (2026年)医务人员职业安全防护课件
- 2026年高等职业教育知识综合提升测试卷及答案详解(易错题)
- 北京市2024中国环境科学研究院引进高层次专业技术人才(北京)笔试历年参考题库典型考点附带答案详解
- 2026年全面从严重治党测试题及答案
- 九机门店运营管理制度
- 研究生心理调适指南
- 反贪污培训课件
- 连续梁箱室有限空间作业专项施工方案
评论
0/150
提交评论