大数据平台简介.ppt

上传人:豆**** 文档编号:66719312 上传时间:2022-12-19 格式:PPT 页数:178 大小:7.28MB
返回 下载 相关 举报
大数据平台简介.ppt_第1页
第1页 / 共178页
大数据平台简介.ppt_第2页
第2页 / 共178页
点击查看更多>>
资源描述

《大数据平台简介.ppt》由会员分享,可在线阅读,更多相关《大数据平台简介.ppt(178页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、大数据平台简介2目录目录1Hadoop生态系统2Hadoop主流厂商3HDFS4MapReduce5Hive6Spark3Hadoop生态系统4Hadoop1.0V2.05Hadoop生态系统Ambari(安装部署工具)Zookeeper(分布式协调服务)HBase(分布式协数据库)Oozie(作业流调度系统)HDFS(分布式存储系统)YARN(分布式计算框架)MapReduce(离线计算)Tez(DAG计算)Spark(内存计算)HivePigMahoutSqoop(数据库TEL工具)Flume(日志收集)6HDFSHadoopDistributedFileSystem7Yarn资源管理器8

2、MapReduce分布式并行计算框架“你数一号书架,我数二号书架。我们人数多,数书就更快。这就是map;最后我们到一起,把所有人的统计数加在一起,就是reduce。”9Spark新一代大数据处理计算引擎You can run Spark using its standalone cluster mode,on EC2,on Hadoop YARN,or on Apache Mesos.Access data in HDFS,Cassandra,HBase,Hive,Tachyon,and any Hadoop data source.10HBaseNoSQL数据库11Hivehadoop的数据

3、仓库12Pig大规模数据分析平台Pig是一个基于Hadoop的大规模数据分析平台,它提供的SQL-LIKE语言叫PigLatin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。Pig为复杂的海量数据并行计算提供了一个简单的操作和编程接口。Apachepig是用来处理大规模数据的高级查询语言,配合Hadoop使用,可以在处理海量数据时达到事半功倍的效果,比使用Java,C+等语言编写大规模数据处理程序的难度要小N倍,实现同样的效果的代码量也小N倍。A=LOADa.txtAS(col1:chararray,col2:int,col3:int,col4:i

4、nt,col5:double,col6:double);B=GROUPABY(col2,col3,col4);C=FOREACHBGENERATEgroup,AVG(A.col5),AVG(A.col6);DUMPC;13Mahout机器学习算法库Mahout是ApacheSoftwareFoundation(ASF)旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用ApacheHadoop库,Mahout可以有效地扩展到云中。14Zookeeper分布

5、式协调服务15SqoopHadoop与关系数据库间的数据同步工具16Flume分布式日志采集工具17AmariHadoop集群安装部署监控工具18Hadoop主流厂商19大数据领域的三驾马车ClouderaHortonworksMapR20ClouderaDistributionHadoop(CDH)21HortonworksDataPlatform(HDP)22MapRConvergedDataPlatform23Hadoop主流厂商比较开源开源管理开源管理架构创新完全开源收取服务费工具不开源收取License费用重构了底层内核收取License费用24云服云服务集集团软件件集集团浪潮大数据

6、平台产品HDP云海InsightHDIndataHD25HDFS26相关背景资料Hadoop:一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Distributed:分布式计算是利用互联网上的计算机的CPU的共同处理能力来解决大型计算问题的一种计算科学。Filesystem:文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区,或文件系统种类。27Hadoop和HDFS的关系Hadoop是一个以一种可靠、高效、可伸缩的方式进行处理的,能够对

7、大量数据进行分布式处理的系统框架。HDFS是Hadoop兼容最好的标准级文件系统,因为Hadoop是一个综合性的文件系统抽象,所以HDFS不是Hadoop必需的。所以可以理解为hadoop是一个框架,HDFS是hadoop中的一个部件。28HDFS背景介绍随着数据量越来越大,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。分布式文件系统:一种允许文件通过网络在多台主机上分享的文件系统,可以让多个机器上的多个用户分享文件和存储空间。29集群通透性:DFS让实际上是通过网络来访问文件的

8、动作,由用户和程序看来,就像访问本地的磁盘一般。分布式文件系统特点RootsplitBlockBlock目录1目录2File节点节点节点30HDFS是什么HDFS是HadoopDistributeFileSystem的简称,也就是Hadoop的一个分布式文件系统。HDFS被设计成适合运行在通用硬件(commodityhardware)上的分布式文件系统。HDFS是一个高度容错性的系统,适合部署在廉价的机器上HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用HDFS可以实现流的形式访问(streamingaccess)文件系统中的数据对外部客户机而言,HDFS就像一个传统的分级文件系

9、统。可以创建、删除、移动或重命名文件,等等。对于用户来说,可以直接看成是一个巨大的硬盘。31HDFS特点GB、TB、甚至PB级数据;百万规模以上的文件数量;10K+节点规模适合大数据处理HDFS使应用程序流式地访问它们的数据集。所以它重视数据吞吐量,而不是数据访问的反应速度。流式文件访问HDFS被设计成适合进行批量处理,而不是用户交互式处理;移动计算而非数据;数据位置暴露给计算框架适合批处理通过多副本提高可靠性;提供了容错和恢复机制可构建廉价机器上数据自动保存多个副本;副本丢失后,自动恢复高容错性一次性写入,多次读取;保证数据一致性简化一致性模型HDFS在设计的时候就考虑到平台的可移植性。这种

10、特性方便了HDFS作为大规模数据应用平台的推广可移植性32HDFS的局限性不支持多用户对同一文件进行操作,而且写操作只能在文件末尾完成,即追加操作。并发写入、文件随机修改由于HDFS是为高数据吞吐量应用而设计的,必然以高延迟为代价。不适合低延迟与高吞吐率的数据访问,比如毫秒级不适合低延迟数据访问HDFS中元数据(文件的基本信息)存储在namenode的内存中,而namenode为单点,小文件数量大到一定程度,namenode内存就吃不消了;寻道时间超过读取时间无法高效存储大量小文件33HDFS现在遇到的主要问题分布后的文件系统有个无法回避的问题,因为文件不在一个磁盘导致读取访问操作的延时,这个

11、是HDFS现在遇到的主要问题HDFS 调优是使用时最调优是使用时最应该注意的。应该注意的。现阶段,HDFS的配置是按照高数据吞吐量优化的,可能会以高时间延时为代价。但万幸的是,HDFS是具有很高弹性,可以针对具体应用再优化。34总体架构图HDFS采用master/slave架构。一个HDFS集群是由一个Namenode和一定数目的Datanode组成,他们以管理者-工作者模式工作。35总体架构图-Client切分文件;访问或通过命令行管理HDFS;与NameNode交互,获取文件位置信息;与DataNode交互,读取和写入数据。36HDFS的基本结构之NameNodeNamenode是一个中心

12、服务器,负责管理文件系统的命名空间协调客户端对文件的访问Namenode执行文件系统的命名空间操作,例如打开、关闭、重命名文件和目录记录每个文件数据块在各个Datanode上的位置和副本信息37HDFS元数据持久化NameNode存有HDFS的元数据:主要由FSImage和EditLog组成。FSImage是元数据镜像文件保存整个文件系统的目录树数据块映射关系:文件与数据块映射关系,DataNode与数据块映射关系EditLog是元数据操作日志,记录每次保存fsimage之后到下次保存之间的所有hdfs操作NameNodeFileSystemImageEditLog命名空间操作记录,如打开、关

13、闭、创建、删除、重命名文件和目录38HDFS元数据持久化checkpoint:NameNode启动后,它会从磁盘中读取FsImage及EditLog,应用EditLog中所有的事务到存在于内存中的FsImage文件对象,然后将版本较新的这个FsImage文件写入磁盘,之后EditLog就可以被删除了。一个checkpoint只发生在NameNode启动的时候。Blockreport:当一个DataNode启动时,它会扫描本地文件系统,生成所有HDFS数据块的一个列表,然后向NameNode发送一个报告。39HDFS的基本结构之DataNodeDatanode一般是一个节点一个,负责所在物理节点

14、的存储管理,是文件系统中真正存储数据的地方一个文件被分成一个或多个数据块,这些块存储在一组Datanode上Datanode负责处理文件系统客户端的读写请求。在Namenode的指挥下进行block的创建、删除和复制周期性的向Namenode汇报其存储的数据块信息40数据组织数据块(block):大文件会被分割成多个block进行存储,block大小默认为128MB。比磁盘块大很多,目的是减少寻址开销。并不是设置块越大越好。每一个block会在多个datanode上存储多份副本,默认是3份。与其他文件系统不一样,HDFS中每个小于块大小的文件不会占据整个块的空间。HDFS128MB128MB1

15、28MB128MB41数据复制大文件在集群中跨机器存储每个文件存储成一系列的数据块,除了最后一个,所有的数据块都是同样大小的为了容错,文件的所有数据块都会有副本。每个文件的数据块大小和副本系数都是可配置的Namenode全权管理数据块的复制,它周期性地从集群中的每个Datanode接收心跳信号和块状态报告42副本策略HDFS采用机架感知(rackawareness)的副本存放策略来提高数据的可靠性、可用性和网络带宽的利用率。将第一个副本放在本地节点,将第二个副本放到本地机架上的另外一个节点,而将第三个副本放到不同机架上的节点。文件的副本不是均匀地分布在机架当中,这种方式提高了写的性能,并且不影

16、响数据的可靠性和读性能(选择读取最近的副本)Node大数据集群Rack1Rack243DataNodeDataNodeHDFS稳健性故障的类型:NameNode故障,DataNode故障和网络中断数据磁盘故障,心跳及重新复制pDataNode因为故障而不可用p拷贝过程失败pDataNode上的磁盘坏掉p副本数量会被增加NameNode启动block重新复制:NameNodeDataNodeDeadDataNodeDataNodeHeartBeats44HDFS稳健性数据完整性HDFS客户端应用实现了对文件内容的校验和。HDFS写入的时候计算出校验和,然后每次读的时候再计算校验和。元数据磁盘故障

17、NameNode在HDFS集群中属于单点故障。没有namenode,文件系统会崩溃,文件系统上的所有文件将丢失(无法读出,因为无法定位元数据块的位置)HA高可用架构:NameNode热备45HA架构解决的问题NameNode单点故障HDFS只有一个NameNode节点,当NameNode崩溃后,整个HDFS集群随之崩溃,直到Namenode重启或者其他Namenode接入HDFSHA:为了解决NameNode的单点故障,为NameNode保存一个热备,两个独立的机器作为NameNode:ActiveNamenode、StandbyNamenode。任何时刻,只有一个Namenode处于Acti

18、ve状态,另一个处于standby状态(passive,备份);ActiveNamenode用于接收Client端请求,Standy节点作为slave保持集群的状态数据以备快速failover.46HA架构图写入读出DataNodeDataNodeDataNode.NameNodeactiveNameNodestandbyQJM/NFSZookeeperFCZookeeperFC监控NN状态管理HA状态监控NN状态管理HA状态ZookeeperHeartbeatHeartbeat47HA架构-快速failoverDatanodes上需要同时配置这两个Namenode的地址,同时和它们都建立心跳

19、链接,并把block位置发送给它们,这样Standbynode持有集群中blocks的最新位置当ActiveNN失效时,StandbyNN切换成ActiveNNNameNodeactiveDataNodeDataNodeDataNodeDataNodeNameNodestandbyHeartBeats共享数据48两种HA方案对比QJMvsNFS共同点都是热备方案都是一个activeNamenode(NN)和一个standbyNN使用Zookeeper(ZK)quorum和ZKFC来实现自动失效恢复。在失效恢复时都需要配置fencing方法来fenceactiveNN二者共享数据方式不同参与HA

20、的不同角色HDFSwithNFSHDFSwithQJMNamenodeNamenodeHANFS(共享数据变更存储)JournalNodeZookeeperZookeeperZKFailoverControllerprocessZKFailoverControllerprocess49HA方案-NFS实现机制activeNN和standbyNN需要共享一个存储目录。activeNN会把数据变更日志保存在该目录内,standbyNN则监视更新,并保持数据同步。为了快速切换NN,DataNode(DN)需要知道两个NN的地址,并把块信息和心跳包发送给active和standby这两个NN。此外,为

21、了保证activeNN挂了以后不再有新数据写入,Fencing逻辑在确认activeNN挂了以后会切断所有与原activeNN的连接。HAwithNFS局限性目前只支持一个数据变更共享目录,导致HA能力受限于该目录为了防止共享目录的单点失效,对共享目录有额外的要求,比如冗余的硬盘、网络和电源等。NFS共享目录所在的设备要求是高可靠性。NFS方式部署更为复杂。50HA方案-QJMStandbyNode与ActiveNode保持同步这两个Node都与一组称为JNS的互相独立的进程保持通信(JournalNodes)。当ActiveNode上更新了namespace,它将记录修改日志发送给JNS的多

22、数派。Standbynoes将会从JNS中读取这些edits,并持续关注它们对日志的变更。StandbyNode将日志变更应用在自己的namespace中,即在failover发生之前,Standy持有namespace应该与Active保持完全同步。JournalNodeJournalNodeJournalNodeJournalNodeNameNodeactiveNameNodestandby向JournalNodes写数据从JournalNodes读数据51HA方案-QJM硬件资源Namenode机器:两台配置对等的机器,它们分别运行Active和StandbyNodeJouralNode

23、机器:运行JouralNodes的机器。JouralNode守护进程相当的轻量级,它们可以和hadoop的其他进程部署在一起,比如Namenodes、jobTracker、ResourceManager等。不过为了形成多数派(majority),至少需要3个JouralNodes,因为edits操作必须在多数派上写入成功。当然JNS的个数可以3,且通常为奇数(3,5,7),这样可以更好的容错和形成多数派。如果你运行了N个JNS,那么它可以允许(N-1)/2个JNS进程失效并且不影响工作。52HDFS可访问性HDFS支持以文件和目录的形式组织用户数据。它提供了一个命令行接口(FSShell)让用

24、户与HDFS中的数据进行交互通过原生的FileSystemJavaAPI接口来访问浏览器的方式访问HDFS中的实例文件http:/nn_host:port/默认的http端口是5007053读文件ClientJVMDataNodeDataNodeDataNodeNameNodeHDFSClientDistributedFileSystemFSDataInputStream1:open2:获取文件数据块所在的DataNode节点位置3:read7:complete6:close4:read5:read54写文件ClientJVMDataNodeDataNodeDataNodeNameNodeHD

25、FSClientDistributedFileSystemFSDataInputStream1:creat3:write7:complete6:close5:ackpacket2:creat4:writepacket454555回收存储空间文件的删除与恢复HDFS会为每一个用户创建一个回收站目录:/user/用户名/.Trash/,每一个被用户通过Shell删除的文件/目录,它会先被重命名到目录/trash下的一个文件.只要被删除的文件还在/trash目录中,用户就可以还原它。目前默认策略是删除/trash中保留时间超过6小时的文件该功能只限于用户在客户端的脚本操作,当用户写程序调用HDFS的

26、API时,NameNode并不会把删除的文件或目录放入回收站Trash中减少副本系数当副本系数被降低时,NameNode会选择删除多余的副本56HDFS常用shellHDFS支持以文件和目录的形式组织用户数据。它在客户端提供了一个命令行接口(FSShell)让用户与HDFS中的数据进行交互调用文件系统(FS)Shell命令应使用bin/hadoopfs的形式。所有的的FSshell命令使用URI路径作为参数。URI格式是scheme:/authority/path。对HDFS文件系统,scheme是hdfs。其中scheme和authority参数都是可选的,如果未加指定,就会使用配置中指定的

27、默认scheme。一个HDFS文件或目录比如/parent/child可以表示成hdfs:/namenode:namenodeport/parent/child,或者更简单的/parent/child57ls使用方法:hadoopfs-ls查看目录下文件lsr使用方法:hadoopfs-lsr递归查看文件mkdir使用方法:hadoopfs-mkdir-p创建目录,-p参数是创建各级父目录touchz使用方法:hadoopfs-touchzURIURI创建一个0字节的空文件。HDFS常用shell58HDFS常用shellput使用方法:hadoopfs-put.上传一个或多个本地文件到文件系

28、统。如果HDFS中已经存在该文件,那么直接上传会报错。如果第二个路径是个文件夹,那么会上传到文件夹中,如果文件不存在,那么会生成一个文件而非新建一个文件夹。copyFromLocal使用方法:hadoopfs-copyFromLocalURI上传一个或多个本地文件到文件系统。命令类似-putget使用方法:hadoopfs-get下载文件到本地文件系统。copyToLocal使用方法:hadoopfs-copyToLocalURI下载文件到本地文件系统。命令类似-get59HDFS常用shellappendToFile使用方法:hadoopfs-appendToFile.将本地文件追加到hdf

29、s文件末尾mv使用方法:hadoopfs-mvURIURI将文件从源路径移动到目标路径。这个命令允许有多个源路径,此时目标路径必须是一个目录。不允许在不同的文件系统间移动文件。text使用方法:hadoopfs-text将源文件输出为文本格式cat使用方法:hadoopfs-catURIURI将路径指定文件的内容输出到stdout60HDFS常用shellrm使用方法:hadoopfs-rmURIURI删除文件rmdir使用方法:hadoopfs-rmdirURIURI.删除空白文件夹rmr(不建议使用)使用方法:hadoopfs-rmrURIURI.递归删除。建议使用rmr替代该命令cp使用

30、方法:hadoopfs-cpURIURI.将文件从源路径复制到目标路径。这个命令允许有多个源路径,此时目标路径必须是一个目录。61HDFS常用shellchmod使用方法:hadoopfs-chmod-RURIURI改变文件的权限。使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者超级用户。chown使用方法:hadoopfs-chown-ROWNER:GROUPURIURI改变文件的拥有者。使用-R将使改变在目录结构下递归进行。命令的使用者必须是超级用户。chgrp使用方法:hadoopfs-chgrp-RGROUPURIURI改变文件所属的组。使用-R将使改变在目录结

31、构下递归进行。命令的使用者必须是文件的所有者或者超级用户。62HDFS常用shellexpunge使用方法:hadoopfs-expunge清空回收站setrep使用方法:hadoopfs-setrep-R改变一个文件的副本系数。-R选项用于递归改变目录下所有文件的副本系数。其他命令,通过hadoopfs-help可以获取所有的命令的详细帮助文件63hdfsfsck命令HDFS支持fsck命令用以检查各种不一致。fsck用以报告各种文件问题,如block丢失或缺少block等。查看文件的块的组成等信息。使用方法:hdfsfsck-files-blocks-locations64MapReduc

32、e65来源2004.10Google发布了最初的MapReduce论文MapReduce:大型集群中简化的数据处理66MapReduce是什么MapReduce是一个编程模型,也是一个处理和生成超大数据集的算法模型的相关实现(计算框架),用于简化分布式集群下的大数据计算。67MapReduce计算框架这个框架在运行时只关心:如何分割输入数据在大量计算机组成的集群上的调度集群中计算机的错误处理管理集群中计算机之间必要的通信。采用MapReduce架构可以使那些没有并行计算和分布式处理系统开发经验的程序员有效利用分布式系统的丰富资源。68MapReduce编程模型编程模型:用户首先创建一个Map函

33、数处理一个基于key/valuepair的数据集合,输出中间的基于key/valuepair的数据集合;然后,再创建一个Reduce函数用来合并所有的具有相同中间key值的中间value值。69MapReduce-纸牌游戏MapReduce方法则是:给在座的所有玩家中分配这摞牌让每个玩家数自己手中的牌有几张是黑桃,然后把这个数目汇报给你你把所有玩家告诉你的数字加起来,得到最后的结论你想数出一摞牌中有多少张黑桃。直观方式是一张一张检查并且数出有多少张是黑桃?MapReduce合并了两种经典函数:映射(Mapping)对集合里的每个目标应用同一个操作。即:分开计算,输出各自结果。化简(Reduci

34、ng)遍历集合中的元素来返回一个综合的结果。即:合并分开计算的各个结果,得到最终结果。70MapReduce-基本思想如何对付大数据处理:分而治之对相互间不具有计算依赖关系的大数据,实现并行最自然的办法就是采取分而治之的策略71MapReduce-基本思想上升到抽象模型:Mapper与ReducerMapReduce借鉴了Lisp函数式语言中的思想,用Map和Reduce两个函数提供了高层的并行编程抽象模型上升到构架:统一计算框架,为程序员隐藏系统层细节为MapReduce设计并提供了统一的计算框架,为程序员隐藏了绝大多数系统层面的处理细节(存储、划分、分发、结果收集、错误恢复)72MapRe

35、duce-工作原理73MapReduce-工作原理1.整个系统主要有三部分构成:userprogram(客户端)、master(主控程序)、worker(工作单元,部署在各个数据/计算节点上)2.客户端(userprogram)与master通信,提交mapreduce程序到master,3.Master监控集群中的空闲资源(每个worker向其汇报),收到客户端请求后,为该mapreduce程序分配多个map任务和reduce任务4.一个被分配了map任务的worker读取相关输入文件分片的内容。它从输入数据中分析出key/value对,然后把key/value对传递给用户自定义的map函数

36、。由map函数产生的中间key/value对被缓存在内存中,缓存在内存中的key/value对被周期性的写入到本地磁盘上。5.reduceworker使用远程调用来从mapworker的磁盘上读取缓存的数据,然后通过排序使具有相同key的内容聚合在一起,它把key和聚合得value集传递给用户自定义的reduce函数。reduce函数的输出被添加到这个reduce分割的最终的输出文件中。6.当所有的map和reduce任务都完成了,管理者唤醒用户程序。在这个时候,在用户程序里的MapReduce调用返回到用户代码。74MapReduce-适用场景MapReduce主要面向对大规模数据的处理,适

37、用于离线批处理场景由于每次操作需要遍历所有数据,MapReduce并不适用于需要实时响应的系统。75MapReduce程序wordcount76wordcount概述输入:执行程序:输出:$bin/hadoopfs-cat/user/joe/wordcount/input/file01HelloWorldByeWorld$bin/hadoopfs-cat/user/joe/wordcount/input/file02HelloHadoopGoodbyeHadoop$bin/hadoopjarwc.jarWordCount/user/joe/wordcount/input/user/joe/wo

38、rdcount/output$bin/hadoopfs-cat/user/joe/wordcount/output/part-r-00000Bye1Goodbye1Hadoop2Hello2World277MapReduce工作过程78InputMapper1、读取输入文件,并分片2、按block分片,每片一个map。Wordcount输入文件是2个小文件,默认block大小为64M或128M,所以每个文件就一片,两个文件共2片,2个map任务。3、每个map读取对应分片的文件内容,按行提取文件内容,转换成(key,value)。key是数据分片中字节偏移量,value值是行内容FileInp

39、utFormat.addInputPath(job,newPath(args0);publicvoidmap(Objectkey,Textvalue,Contextcontext)79Mapper阶段Map-1:Map-2:job.setMapperClass(TokenizerMapper.class);publicvoidmap(Objectkey,Textvalue,Contextcontext)throwsIOException,InterruptedExceptionStringTokenizeritr=newStringTokenizer(value.toString();whil

40、e(itr.hasMoreTokens()word.set(itr.nextToken();context.write(word,one);80Combine阶段Map-1:Map-2:publicvoidreduce(Textkey,Iterablevalues,Contextcontext)throwsIOException,InterruptedExceptionintsum=0;for(IntWritableval:values)sum+=val.get();result.set(sum);context.write(key,result);job.setCombinerClass(I

41、ntSumReducer.class);81Reducer阶段publicvoidreduce(Textkey,Iterablevalues,Contextcontext)throwsIOException,InterruptedExceptionintsum=0;for(IntWritableval:values)sum+=val.get();result.set(sum);context.write(key,result);job.setReducerClass(IntSumReducer.class);82HadoopMapReduce工作过程83Yarn84HadoopMapReduc

42、eV1架构85HadoopMapReduceV1组成1)Client客户端程序,与客户端程序,与JobTracker通信,提交通信,提交mapredce程序包程序包2)JobTrackerJobTracke相当于GoogleMapReduce中的master,负责统一的资源监控和作业调度。3)TaskTrackerTaskTracker相当于GoogleMapReduce中的worker,部署在各个数据/计算节点上,向JobTracker发送本节点的资源情况,接收JobTracker的作业调度指令,创建任务或杀死任务4)TaskTask分为MapTask和ReduceTask两种,均由Task

43、Tracker启动。86HadoopMapReduceV1问题1.JobTracker是Map-reduce的集中处理点,存在单点故障。2.JobTracker完成了太多的任务,造成了过多的资源消耗,当map-reducejob非常多的时候,会造成很大的内存开销,增加了JobTrackerfail的风险。3.在TaskTracker端,以map/reducetask的数目作为资源的表示过于简单,没有考虑到cpu/内存的占用情况,如果两个大内存消耗的task被调度到了一块,很容易出现OOM。4.在TaskTracker端,把资源强制划分为maptaskslot和reducetaskslot,如果

44、当系统中只有maptask或者只有reducetask的时候,会造成资源的浪费。5.源代码层面分析的时候,会发现代码非常的难读,常常因为一个class做了太多的事情,代码量达3000多行,造成class的任务不清晰,增加bug修复和版本维护的难度。87Yarn架构原理88Yarn架构原理Yarn框架有两类进程构成:uResourceManager:负责全局资源的管理和调度分配uNodeManager:是每台机器资源管理的代理端,负责本机资源使用的监控以及为yarn应用分配运行容器(Container)和创建任务Container是YARN中资源的抽象,它封装了某个节点上一定量的资源(CPU和内

45、存两类资源)。每个map或reduce任务需要拥有一定的Container资源以运行。89Yarn架构原理ResourceManager有两种主要组件:SchedulerandApplicationsManager.uScheduler:负责纯资源调度,为各个应用分配资源。资源调度策略包括CapacityScheduler、FaireScheduler等。uApplicationsManager:负责接收应用程序提交请求(通过yarnjar或hadoopjar执行程序),创建应用对应的ApplicationMaster以及当ApplicationMaster失败时对其重启。AppMstr:Ap

46、plicationMaster,每个应用(如提交一个WordCount程序,就是个应用)运行时,ResourceManager都要为该应用先分配container,运行该ApplicationMaster。ApplicationMaster负责与ResourceManager通信,申请该应用实际运行时所需的容器资源,申请到资源后,负责与资源所在的各NodeManager通信,要求它在申请到的资源(container)中启动任务。90Yarn工作流程91Yarn工作流程步骤1用户向YARN中提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令

47、、用户程序等。步骤2ResourceManager为该应用程序分配第一个Container,并与对应的Node-Manager通信,要求它在这个Container中启动应用程序的ApplicationMaster。步骤3ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManage查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤47。步骤4ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源。步骤5一旦ApplicationMas

48、ter申请到资源后,便与对应的NodeManager通信,要求它启动任务。步骤6NodeManager为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。步骤7各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。在应用程序运行过程中,用户可随时通过RPC向ApplicationMaster查询应用程序的当前运行状态。步骤8应用程序运行完成后,ApplicationMaster向ResourceMa

49、nager注销并关闭自己。92Hive93Hive简介-Hive是什么?Hive是构建在Hadoop之上的数据仓库平台Hive是一个SQL解析引擎,它将SQL语句转译成MapReduce作业并在Hadoop上执行。Hive表是HDFS的一个文件目录,一个表名对应一个目录名,如果有分区表的话,则分区值对应子目录名。94Hive简介-Hive的历史由来Hive是Facebook开发的,构建于Hadoop集群之上的数据仓库应用。2008年Facebook将Hive项目贡献给Apache,成为开源项目。95Hive简介-Hive的历史由来Hadoop和Hive组建成为Facebook数据仓库的发展史随

50、着数据量增加某些查询需要几个小时甚至几天才能完成。当数据达到1T时,MySql进程跨掉。可以支撑几个T的数据,但每天收集用户点击流数据(每天约400G)时,Oracle开始撑不住。有效解决了大规模数据的存储与统计分析的问题,但是MapReduce程序对于普通分析人员的使用过于复杂和繁琐。对外提供了类似于SQL语法的HQL语句数据接口,自动将HQL语句编译转化为MR作业后在Hadoop上执行。降低了分析人员使用Hadoop进行数据分析的难度。96Hive体系结构-Hive设计特征 Hive做为Hadoop的数据仓库处理工具,它所有的数据都存储在Hadoop兼容的文件系统中。Hive在加载数据过程

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 家庭教育

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com