大数据平台简介讲课稿

上传人:痛*** 文档编号:231403858 上传时间:2023-09-03 格式:PPTX 页数:178 大小:5MB
收藏 版权申诉 举报 下载
大数据平台简介讲课稿_第1页
第1页 / 共178页
大数据平台简介讲课稿_第2页
第2页 / 共178页
大数据平台简介讲课稿_第3页
第3页 / 共178页
资源描述:

《大数据平台简介讲课稿》由会员分享,可在线阅读,更多相关《大数据平台简介讲课稿(178页珍藏版)》请在装配图网上搜索。

1、大数据平台(pngti)简介第一页,共178页。2目录目录(ml)(ml)1Hadoop生态系统2Hadoop主流(zhli)厂商3HDFS4MapReduce5Hive6Spark第二页,共178页。3Hadoop生态系统(shntixtn)第三页,共178页。4Hadoop1.0V2.0第四页,共178页。5Hadoop生态系统(shntixtn)Ambari(安装部署工具)Zookeeper(分布式协调服务)HBase(分布式协数据库)Oozie(作业流调度系统)HDFS(分布式存储系统)YARN(分布式计算框架)MapReduce(离线计算)Tez(DAG计算)Spark(内存计算)H

2、ivePigMahoutSqoop(数据库TEL工具)Flume(日志收集)第五页,共178页。6HDFSHadoopDistributedFileSystem第六页,共178页。7Yarn资源管理器第七页,共178页。8MapReduce分布式并行计算框架(kunji)“你数一号书架,我数二号书架。我们人数多,数书就更快。这就是(jish)map;最后我们到一起,把所有人的统计数加在一起,就是(jish)reduce。”第八页,共178页。9Spark新一代大数据处理计算(jsun)引擎You can run Spark using its standalone cluster mode,o

3、n EC2,on Hadoop YARN,or on Apache Mesos.Access data in HDFS,Cassandra,HBase,Hive,Tachyon,and any Hadoop data source.第九页,共178页。10HBaseNoSQL数据库第十页,共178页。11Hivehadoop的数据仓库第十一页,共178页。12Pig大规模数据分析平台(pngti)Pig是一个基于Hadoop的大规模数据分析平台,它提供(tgng)的SQL-LIKE语言叫PigLatin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。

4、Pig为复杂的海量数据并行计算提供(tgng)了一个简单的操作和编程接口。Apachepig是用来处理大规模数据的高级查询语言,配合Hadoop使用,可以在处理海量数据时达到事半功倍的效果,比使用Java,C+等语言编写大规模数据处理程序的难度要小N倍,实现同样(tngyng)的效果的代码量也小N倍。A=LOADa.txtAS(col1:chararray,col2:int,col3:int,col4:int,col5:double,col6:double);B=GROUPABY(col2,col3,col4);C=FOREACHBGENERATEgroup,AVG(A.col5),AVG(A

5、.col6);DUMPC;第十二页,共178页。13Mahout机器学习(xux)算法库Mahout是ApacheSoftwareFoundation(ASF)旗下的一个开源项目(xingm),提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用ApacheHadoop库,Mahout可以有效地扩展到云中。第十三页,共178页。14Zookeeper分布式协调(xitio)服务第十四页,共178页。15SqoopHadoop与关系数据库间的数据同步(tngb)工具第十五页,共

6、178页。16Flume分布式日志(rzh)采集工具第十六页,共178页。17AmariHadoop集群安装部署监控(jinkn)工具第十七页,共178页。18Hadoop主流(zhli)厂商第十八页,共178页。19大数据(shj)领域的三驾马车ClouderaHortonworksMapR第十九页,共178页。20ClouderaDistributionHadoop(CDH)第二十页,共178页。21HortonworksDataPlatform(HDP)第二十一页,共178页。22MapRConvergedDataPlatform第二十二页,共178页。23Hadoop主流厂商(chng

7、shng)比较开源(kiyun)开源(kiyun)管理开源管理架构创新完全开源收取服务费工具不开源收取License费用重构了底层内核收取License费用第二十三页,共178页。24云服云服务(fw)(fw)集集团软件件(runjin)(runjin)集集团浪潮大数据平台(pngti)产品HDP云海InsightHDIndataHD第二十四页,共178页。25HDFS第二十五页,共178页。26相关背景(bijng)资料Hadoop:一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序(chngx)。充分利用集群的威力高速运算和存储。Dis

8、tributed:分布式计算是利用互联网上的计算机的CPU的共同(gngtng)处理能力来解决大型计算问题的一种计算科学。Filesystem:文件系统是操作系统用于明确磁盘或分区上的文件的方法和数据结构;即在磁盘上组织文件的方法。也指用于存储文件的磁盘或分区,或文件系统种类。第二十六页,共178页。27Hadoop和HDFS的关系(gunx)Hadoop是一个以一种可靠、高效(oxio)、可伸缩的方式进行处理的,能够对大量数据进行分布式处理的系统框架。HDFS是Hadoop兼容最好的标准级文件系统,因为Hadoop是一个综合性的文件系统抽象,所以HDFS不是Hadoop必需的。所以可以理解为

9、hadoop是一个框架,HDFS是hadoop中的一个部件。第二十七页,共178页。28HDFS背景(bijng)介绍随着数据量越来越大,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护(wih),迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。分布式文件系统:一种允许文件通过网络在多台主机上分享的文件系统,可以让多个机器上的多个用户分享文件和存储空间。第二十八页,共178页。29集群通透性:DFS让实际上是通过网络来访问文件的动作,由用户和程序看来(knli),就像访问本地的磁盘一般。分布式文件系统特点(tdin)Rootspl

10、itBlockBlock目录(ml)1目录2File节点节点节点第二十九页,共178页。30HDFS是什么(shnme)HDFS是HadoopDistributeFileSystem的简称,也就是Hadoop的一个分布式文件系统。HDFS被设计成适合运行在通用硬件(commodityhardware)上的分布式文件系统。HDFS是一个高度容错性的系统,适合部署在廉价的机器(jq)上HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用HDFS可以实现流的形式访问(streamingaccess)文件系统中的数据对外部客户机而言,HDFS就像一个传统的分级文件系统。可以创建、删除、移动或

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

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

13、统有个无法回避的问题,因为文件不在一个磁盘导致读取访问操作的延时,这个(zhge)是HDFS现在遇到的主要问题HDFS 调优是使用时最调优是使用时最应该注意的。应该注意的。现阶段,HDFS的配置是按照高数据吞吐量优化的,可能会以高时间延时为代价。但万幸(wnxng)的是,HDFS是具有很高弹性,可以针对具体应用再优化。第三十三页,共178页。34总体(zngt)架构图HDFS采用master/slave架构。一个(y)HDFS集群是由一个(y)Namenode和一定数目的Datanode组成,他们以管理者-工作者模式工作。第三十四页,共178页。35总体(zngt)架构图-Client切分文件

14、;访问或通过命令行管理HDFS;与NameNode交互,获取文件位置(wizhi)信息;与DataNode交互,读取和写入数据。第三十五页,共178页。36HDFS的基本(jbn)结构之NameNodeNamenode是一个中心服务器,负责管理文件系统的命名空间协调客户端对文件的访问Namenode执行文件系统的命名空间操作,例如打开、关闭、重命名文件和目录(ml)记录每个文件数据块在各个Datanode上的位置和副本信息第三十六页,共178页。37HDFS元数据(shj)持久化NameNode存有HDFS的元数据:主要由FSImage和EditLog组成。FSImage是元数据镜像文件保存整

15、个文件系统的目录树数据块映射关系:文件与数据块映射关系,DataNode与数据块映射关系EditLog是元数据操作日志(rzh),记录每次保存fsimage之后到下次保存之间的所有hdfs操作NameNodeFileSystemImageEditLog命名空间操作记录,如打开、关闭(gunb)、创建、删除、重命名文件和目录第三十七页,共178页。38HDFS元数据(shj)持久化checkpoint:NameNode启动后,它会从磁盘中读取FsImage及EditLog,应用EditLog中所有的事务到存在于内存中的FsImage文件对象,然后将版本较新的这个FsImage文件写入磁盘,之后E

16、ditLog就可以被删除了。一个checkpoint只发生在NameNode启动的时候。Blockreport:当一个DataNode启动时,它会扫描本地文件系统,生成(shnchn)所有HDFS数据块的一个列表,然后向NameNode发送一个报告。第三十八页,共178页。39HDFS的基本(jbn)结构之DataNodeDatanode一般是一个节点一个,负责所在物理节点的存储管理,是文件系统中真正存储数据的地方一个文件被分成一个或多个数据块,这些(zhxi)块存储在一组Datanode上Datanode负责处理文件系统客户端的读写请求。在Namenode的指挥下进行block的创建、删除和

17、复制周期性的向Namenode汇报其存储的数据块信息第三十九页,共178页。40数据组织数据块(block):大文件会被分割成多个block进行存储,block大小默认为128MB。比磁盘块大很多,目的是减少寻址开销。并不是设置块越大越好。每一个block会在多个datanode上存储多份副本(fbn),默认是3份。与其他文件系统不一样,HDFS中每个小于块大小的文件不会占据整个块的空间。HDFS128MB128MB128MB128MB第四十页,共178页。41数据(shj)复制大文件在集群中跨机器存储每个文件存储成一系列的数据块,除了最后一个,所有的数据块都是同样大小的为了容错,文件的所有数

18、据块都会有副本。每个文件的数据块大小和副本系数(xsh)都是可配置的Namenode全权(qunqun)管理数据块的复制,它周期性地从集群中的每个Datanode接收心跳信号和块状态报告第四十一页,共178页。42副本(fbn)策略HDFS采用机架感知(rackawareness)的副本存放(cnfng)策略来提高数据的可靠性、可用性和网络带宽的利用率。将第一个副本放在本地节点,将第二个副本放到本地机架上的另外一个节点,而将第三个副本放到不同机架上的节点。文件的副本不是均匀地分布在机架当中,这种方式提高了写的性能,并且不影响数据的可靠性和读性能(选择读取最近的副本)Node大数据集群Rack1

19、Rack2第四十二页,共178页。43DataNodeDataNodeHDFS稳健性故障的类型(lixng):NameNode故障,DataNode故障和网络中断数据磁盘故障,心跳及重新复制pDataNode因为故障而不可用p拷贝过程失败pDataNode上的磁盘坏掉p副本数量会被增加NameNode启动block重新复制:NameNodeDataNodeDeadDataNodeDataNodeHeartBeats第四十三页,共178页。44HDFS稳健性数据完整性HDFS客户端应用实现了对文件内容的校验和。HDFS写入的时候计算出校验和,然后每次读的时候再计算校验和。元数据磁盘(cpn)故障

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

21、。任何时刻,只有一个Namenode处于Active状态,另一个处于standby状态(passive,备份);ActiveNamenode用于接收Client端请求,Standy节点(jidin)作为slave保持集群的状态数据以备快速failover.第四十五页,共178页。46HA架构图写入读出DataNodeDataNodeDataNode.NameNodeactiveNameNodestandbyQJM/NFSZookeeperFCZookeeperFC监控NN状态管理HA状态监控NN状态管理HA状态ZookeeperHeartbeatHeartbeat第四十六页,共178页。47H

22、A架构(jiu)-快速failoverDatanodes上需要同时配置这两个Namenode的地址,同时和它们都建立(jinl)心跳链接,并把block位置发送给它们,这样Standbynode持有集群中blocks的最新位置当ActiveNN失效时,StandbyNN切换成ActiveNNNameNodeactiveDataNodeDataNodeDataNodeDataNodeNameNodestandbyHeartBeats共享数据第四十七页,共178页。48两种HA方案(fngn)对比QJMvsNFS共同点都是热备方案都是一个activeNamenode(NN)和一个standbyNN

23、使用(shyng)Zookeeper(ZK)quorum和ZKFC来实现自动失效恢复。在失效恢复时都需要配置fencing方法来fenceactiveNN二者共享数据方式不同参与HA的不同角色HDFSwithNFSHDFSwithQJMNamenodeNamenodeHANFS(共享数据变更存储)JournalNodeZookeeperZookeeperZKFailoverControllerprocessZKFailoverControllerprocess第四十八页,共178页。49HA方案(fngn)-NFS实现机制activeNN和standbyNN需要共享一个存储目录。activeN

24、N会把数据变更日志保存在该目录内,standbyNN则监视更新,并保持数据同步。为了快速切换NN,DataNode(DN)需要知道两个NN的地址,并把块信息和心跳包发送给active和standby这两个NN。此外,为了保证activeNN挂了以后不再有新数据写入,Fencing逻辑在确认(qurn)activeNN挂了以后会切断所有与原activeNN的连接。HAwithNFS局限性目前只支持一个数据变更共享目录,导致HA能力受限于该目录为了防止共享目录的单点失效,对共享目录有额外的要求,比如冗余的硬盘、网络和电源等。NFS共享目录所在的设备要求是高可靠性。NFS方式部署更为复杂。第四十九页

25、,共178页。50HA方案(fngn)-QJMStandbyNode与ActiveNode保持同步这两个Node都与一组称为JNS的互相独立的进程保持通信(JournalNodes)。当ActiveNode上更新了namespace,它将记录修改日志发送给JNS的多数派。Standbynoes将会从JNS中读取这些edits,并持续关注它们(tmen)对日志的变更。StandbyNode将日志变更应用在自己的namespace中,即在failover发生之前,Standy持有namespace应该与Active保持完全同步。JournalNodeJournalNodeJournalNodeJo

26、urnalNodeNameNodeactiveNameNodestandby向JournalNodes写数据从JournalNodes读数据第五十页,共178页。51HA方案(fngn)-QJM硬件资源Namenode机器:两台配置对等的机器,它们分别运行Active和StandbyNodeJouralNode机器:运行JouralNodes的机器。JouralNode守护进程相当的轻量级,它们可以(ky)和hadoop的其他进程部署在一起,比如Namenodes、jobTracker、ResourceManager等。不过为了形成多数派(majority),至少需要3个JouralNodes

27、,因为edits操作必须在多数派上写入成功。当然JNS的个数可以(ky)3,且通常为奇数(3,5,7),这样可以(ky)更好的容错和形成多数派。如果你运行了N个JNS,那么它可以(ky)允许(N-1)/2个JNS进程失效并且不影响工作。第五十一页,共178页。52HDFS可访问(fngwn)性HDFS支持以文件和目录的形式组织用户数据。它提供了一个命令行接口(FSShell)让用户与HDFS中的数据进行交互(jioh)通过原生的FileSystemJavaAPI接口来访问浏览器的方式访问HDFS中的实例文件http:/nn_host:port/默认的http端口是50070第五十二页,共178

28、页。53读文件(wnjin)ClientJVMDataNodeDataNodeDataNodeNameNodeHDFSClientDistributedFileSystemFSDataInputStream1:open2:获取文件数据块所在的DataNode节点位置3:read7:complete6:close4:read5:read第五十三页,共178页。54写文件(wnjin)ClientJVMDataNodeDataNodeDataNodeNameNodeHDFSClientDistributedFileSystemFSDataInputStream1:creat3:write7:com

29、plete6:close5:ackpacket2:creat4:writepacket4545第五十四页,共178页。55回收(hushu)存储空间文件的删除与恢复HDFS会为每一个用户创建一个回收站目录:/user/用户名/.Trash/,每一个被用户通过Shell删除的文件/目录,它会先被重命名到目录/trash下的一个文件.只要被删除的文件还在/trash目录中,用户就可以还原它。目前默认策略是删除/trash中保留时间超过6小时的文件该功能只限于用户在客户端的脚本操作(cozu),当用户写程序调用HDFS的API时,NameNode并不会把删除的文件或目录放入回收站Trash中减少副本

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

31、HDFS文件或目录比如/parent/child可以表示成hdfs:/namenode:namenodeport/parent/child,或者更简单的/parent/child第五十六页,共178页。57ls使用方法:hadoopfs-ls查看目录下文件(wnjin)lsr使用方法:hadoopfs-lsr递归查看文件(wnjin)mkdir使用方法:hadoopfs-mkdir-p创建目录,-p参数是创建各级父目录touchz使用方法:hadoopfs-touchzURIURI创建一个0字节的空文件(wnjin)。HDFS常用(chnyn)shell第五十七页,共178页。58HDFS常用

32、(chnyn)shellput使用方法:hadoopfs-put.上传一个或多个本地文件到文件系统。如果HDFS中已经(yjing)存在该文件,那么直接上传会报错。如果第二个路径是个文件夹,那么会上传到文件夹中,如果文件不存在,那么会生成一个文件而非新建一个文件夹。copyFromLocal使用方法:hadoopfs-copyFromLocalURI上传一个或多个本地文件到文件系统。命令类似-putget使用方法:hadoopfs-get下载文件到本地文件系统。copyToLocal使用方法:hadoopfs-copyToLocalURI下载文件到本地文件系统。命令类似-get第五十八页,共1

33、78页。59HDFS常用(chnyn)shellappendToFile使用方法:hadoopfs-appendToFile.将本地(bnd)文件追加到hdfs文件末尾mv使用方法:hadoopfs-mvURIURI将文件从源路径移动到目标路径。这个命令允许有多个源路径,此时目标路径必须是一个目录。不允许在不同的文件系统间移动文件。text使用方法:hadoopfs-text将源文件输出为文本格式cat使用方法:hadoopfs-catURIURI将路径指定文件的内容输出到stdout第五十九页,共178页。60HDFS常用(chnyn)shellrm使用方法:hadoopfs-rmURIUR

34、I删除文件rmdir使用方法:hadoopfs-rmdirURIURI.删除空白文件夹rmr(不建议使用)使用方法:hadoopfs-rmrURIURI.递归删除。建议使用rmr替代该命令cp使用方法:hadoopfs-cpURIURI.将文件从源路径复制到目标(mbio)路径。这个命令允许有多个源路径,此时目标(mbio)路径必须是一个目录。第六十页,共178页。61HDFS常用(chnyn)shellchmod使用方法:hadoopfs-chmod-RURIURI改变文件的权限(qunxin)。使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者超级用户。chown使用

35、方法:hadoopfs-chown-ROWNER:GROUPURIURI改变文件的拥有者。使用-R将使改变在目录结构下递归进行。命令的使用者必须是超级用户。chgrp使用方法:hadoopfs-chgrp-RGROUPURIURI改变文件所属的组。使用-R将使改变在目录结构下递归进行。命令的使用者必须是文件的所有者或者超级用户。第六十一页,共178页。62HDFS常用(chnyn)shellexpunge使用方法(fngf):hadoopfs-expunge清空回收站setrep使用方法(fngf):hadoopfs-setrep-R改变一个文件的副本系数。-R选项用于递归改变目录下所有文件的

36、副本系数。其他命令,通过hadoopfs-help可以获取所有的命令的详细帮助文件第六十二页,共178页。63hdfsfsck命令(mnglng)HDFS支持fsck命令(mnglng)用以检查各种不一致。fsck用以报告各种文件问题,如block丢失或缺少block等。查看文件的块的组成等信息。使用方法:hdfsfsck-files-blocks-locations第六十三页,共178页。64MapReduce第六十四页,共178页。65来源(liyun)2004.10Google发布(fb)了最初的MapReduce论文MapReduce:大型集群中简化的数据处理第六十五页,共178页。6

37、6MapReduce是什么(shnme)MapReduce是一个编程模型,也是一个处理和生成(shnchn)超大数据集的算法模型的相关实现(计算框架),用于简化分布式集群下的大数据计算。第六十六页,共178页。67MapReduce计算(jsun)框架这个框架在运行时只关心:如何分割输入数据在大量计算机组成的集群上的调度集群中计算机的错误处理管理(gunl)集群中计算机之间必要的通信。采用MapReduce架构可以使那些没有并行计算和分布式处理系统开发经验的程序员有效利用分布式系统的丰富资源。第六十七页,共178页。68MapReduce编程模型(mxng)编程模型:用户首先创建(chungj

38、in)一个Map函数处理一个基于key/valuepair的数据集合,输出中间的基于key/valuepair的数据集合;然后,再创建(chungjin)一个Reduce函数用来合并所有的具有相同中间key值的中间value值。第六十八页,共178页。69MapReduce-纸牌(zhpi)游戏MapReduce方法则是:给在座的所有玩家中分配这摞牌让每个玩家数自己手中的牌有几张是黑桃,然后把这个数目汇报给你你把所有玩家告诉你的数字加起来,得到最后(zuhu)的结论你想数出一摞牌中有多少张黑桃。直观方式是一张一张检查(jinch)并且数出有多少张是黑桃?MapReduce合并了两种经典函数:映

39、射(Mapping)对集合里的每个目标应用同一个操作。即:分开计算,输出各自结果。化简(Reducing)遍历集合中的元素来返回一个综合的结果。即:合并分开计算的各个结果,得到最终结果。第六十九页,共178页。70MapReduce-基本(jbn)思想如何对付大数据(shj)处理:分而治之对相互间不具有计算依赖关系的大数据(shj),实现并行最自然的办法就是采取分而治之的策略第七十页,共178页。71MapReduce-基本(jbn)思想上升(shngshng)到抽象模型:Mapper与ReducerMapReduce借鉴了Lisp函数式语言中的思想,用Map和Reduce两个函数提供了高层的

40、并行编程抽象模型上升到构架:统一计算框架,为程序员隐藏系统层细节为MapReduce设计并提供了统一的计算框架,为程序员隐藏了绝大多数系统层面的处理(chl)细节(存储、划分、分发、结果收集、错误恢复)第七十一页,共178页。72MapReduce-工作(gngzu)原理第七十二页,共178页。73MapReduce-工作(gngzu)原理1.整个系统主要有三部分(bfen)构成:userprogram(客户端)、master(主控程序)、worker(工作单元,部署在各个数据/计算节点上)2.客户端(userprogram)与master通信,提交mapreduce程序到master,3.M

41、aster监控集群中的空闲资源(每个worker向其汇报),收到客户端请求后,为该mapreduce程序分配多个map任务和reduce任务4.一个被分配了map任务的worker读取相关输入文件分片的内容。它从输入数据中分析出key/value对,然后把key/value对传递给用户自定义的map函数。由map函数产生的中间key/value对被缓存在内存中,缓存在内存中的key/value对被周期性的写入到本地磁盘上。5.reduceworker使用远程调用来从mapworker的磁盘上读取缓存的数据,然后通过排序使具有相同key的内容聚合在一起,它把key和聚合得value集传递给用户自

42、定义的reduce函数。reduce函数的输出被添加到这个reduce分割的最终的输出文件中。6.当所有的map和reduce任务都完成了,管理者唤醒用户程序。在这个时候,在用户程序里的MapReduce调用返回到用户代码。第七十三页,共178页。74MapReduce-适用(shyng)场景MapReduce主要(zhyo)面向对大规模数据的处理,适用于离线批处理场景由于每次操作需要遍历所有(suyu)数据,MapReduce并不适用于需要实时响应的系统。第七十四页,共178页。75MapReduce程序(chngx)wordcount第七十五页,共178页。76wordcount概述(is

43、h)输入(shr):执行程序:输出(shch):$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/wordcount/output$bin/hadoopfs-cat/user/joe/wordcount/output/part-r-00000

44、Bye1Goodbye1Hadoop2Hello2World2第七十六页,共178页。77MapReduce工作(gngzu)过程第七十七页,共178页。78InputMapper1、读取输入(shr)文件,并分片2、按block分片,每片一个map。Wordcount输入(shr)文件是2个小文件,默认block大小为64M或128M,所以每个文件就一片,两个文件共2片,2个map任务。3、每个map读取对应分片的文件内容,按行提取文件内容,转换成(key,value)。key是数据分片中字节偏移量,value值是行内容FileInputFormat.addInputPath(job,new

45、Path(args0);publicvoidmap(Objectkey,Textvalue,Contextcontext)第七十八页,共178页。79Mapper阶段(jidun)Map-1:Map-2:job.setMapperClass(TokenizerMapper.class);publicvoidmap(Objectkey,Textvalue,Contextcontext)throwsIOException,InterruptedExceptionStringTokenizeritr=newStringTokenizer(value.toString();while(itr.hasM

46、oreTokens()word.set(itr.nextToken();context.write(word,one);第七十九页,共178页。80Combine阶段(jidun)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.setCombin

47、erClass(IntSumReducer.class);第八十页,共178页。81Reducer阶段(jidun)publicvoidreduce(Textkey,Iterablevalues,Contextcontext)throwsIOException,InterruptedExceptionintsum=0;for(IntWritableval:values)sum+=val.get();result.set(sum);context.write(key,result);job.setReducerClass(IntSumReducer.class);第八十一页,共178页。82Ha

48、doopMapReduce工作(gngzu)过程第八十二页,共178页。83Yarn第八十三页,共178页。84HadoopMapReduceV1架构(jiu)第八十四页,共178页。85HadoopMapReduceV1组成(zchn)1)Client客户端程序,与客户端程序,与JobTracker通信,提交通信,提交mapredce程序包程序包2)JobTrackerJobTracke相当于相当于Google MapReduce中的中的master,负责统一的资源监控和作业调度。,负责统一的资源监控和作业调度。3)TaskTrackerTaskTracker相当于相当于Google Map

49、Reduce中的中的worker,部署,部署(b sh)在各个数据在各个数据/计算节点上,计算节点上,向向JobTracker发送本节点的资源情况,接收发送本节点的资源情况,接收JobTracker的作业调度指令,创建任务或杀死任的作业调度指令,创建任务或杀死任务务4)TaskTask 分为分为Map Task 和和Reduce Task 两种,均由两种,均由TaskTracker 启动。启动。第八十五页,共178页。86HadoopMapReduceV1问题(wnt)1.JobTracker是Map-reduce的集中处理点,存在单点故障。2.JobTracker完成了太多的任务,造成了过多

50、的资源消耗,当map-reducejob非常多的时候,会造成很大的内存开销,增加了JobTrackerfail的风险。3.在TaskTracker端,以map/reducetask的数目作为资源的表示过于简单,没有考虑到cpu/内存的占用情况,如果两个大内存消耗的task被调度到了一块,很容易(rngy)出现OOM。4.在TaskTracker端,把资源强制划分为maptaskslot和reducetaskslot,如果当系统中只有maptask或者只有reducetask的时候,会造成资源的浪费。5.源代码层面分析的时候,会发现代码非常的难读,常常因为一个class做了太多的事情,代码量达3

51、000多行,造成class的任务不清晰,增加bug修复和版本维护的难度。第八十六页,共178页。87Yarn架构(jiu)原理第八十七页,共178页。88Yarn架构(jiu)原理Yarn框架有两类进程构成:ResourceManager:负责全局资源的管理和调度分配NodeManager:是每台机器资源管理的代理端,负责本机资源使用的监控以及为yarn应用分配运行容器(rngq)(Container)和创建任务Container是YARN中资源的抽象,它封装了某个节点上一定量的资源(CPU和内存两类资源)。每个map或reduce任务需要拥有一定的Container资源以运行。第八十八页,共

52、178页。89Yarn架构(jiu)原理ResourceManager有两种主要组件:SchedulerandApplicationsManager.Scheduler:负责纯资源调度,为各个应用分配资源。资源调度策略(cl)包括CapacityScheduler、FaireScheduler等。ApplicationsManager:负责接收应用程序提交请求(通过yarnjar或hadoopjar执行程序),创建应用对应的ApplicationMaster以及当ApplicationMaster失败时对其重启。AppMstr:ApplicationMaster,每个应用(如提交一个WordC

53、ount程序,就是个应用)运行时,ResourceManager都要为该应用先分配container,运行该ApplicationMaster。ApplicationMaster负责与ResourceManager通信,申请该应用实际运行时所需的容器资源,申请到资源后,负责与资源所在的各NodeManager通信,要求它在申请到的资源(container)中启动任务。第八十九页,共178页。90Yarn工作(gngzu)流程第九十页,共178页。91Yarn工作(gngzu)流程步骤1用户向YARN中提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMas

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

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

56、er向ResourceManager注销并关闭自己。第九十一页,共178页。92Hive第九十二页,共178页。93Hive简介(jinji)-Hive是什么?Hive是构建在Hadoop之上的数据仓库平台Hive是一个SQL解析引擎,它将SQL语句转译成MapReduce作业(zuy)并在Hadoop上执行。Hive表是HDFS的一个文件目录,一个表名对应一个目录名,如果有分区表的话,则分区值对应子目录名。第九十三页,共178页。94Hive简介(jinji)-Hive的历史由来Hive是Facebook开发的,构建于Hadoop集群之上的数据仓库应用。2008年Facebook将Hive项

57、目(xingm)贡献给Apache,成为开源项目(xingm)。第九十四页,共178页。95Hive简介(jinji)-Hive的历史由来Hadoop和Hive组建(zjin)成为Facebook数据仓库的发展史随着数据量增加某些查询需要几个小时甚至几天才能完成(wnchng)。当数据达到1T时,MySql进程跨掉。可以支撑几个T的数据,但每天收集用户点击流数据(每天约400G)时,Oracle开始撑不住。有效解决了大规模数据的存储与统计分析的问题,但是MapReduce程序对于普通分析人员的使用过于复杂和繁琐。对外提供了类似于SQL语法的HQL语句数据接口,自动将HQL语句编译转化为MR作业

58、后在Hadoop上执行。降低了分析人员使用Hadoop进行数据分析的难度。第九十五页,共178页。96Hive体系结构-Hive设计(shj)特征 Hive 做为Hadoop 的数据仓库处理工具,它所有的数据都存储在Hadoop 兼容的文件(wnjin)系统中。Hive 在加载数据过程中不会对数据进行任何的修改,只是将数据移动到HDFS 中Hive 设定的目录下,因此,Hive 不支持对数据的改写和添加,所有的数据都是在加载的时候确定的。Hive 的设计特点如下。支持索引,加快数据查询。不同的存储类型,例如,纯文本文件(wnjin)、HBase 中的文件(wnjin)。将元数据保存在关系数据库

59、中,减少了在查询中执行语义检查时间。可以直接使用存储在Hadoop 文件(wnjin)系统中的数据。内置大量用户函数UDF 来操作时间、字符串和其他的数据挖掘工具,支持用户扩展UDF 函数来完成内置函数无法实现的操作。类SQL 的查询方式,将SQL 查询转换为MapReduce 的job 在Hadoop集群上执行。编码跟Hadoop同样使用UTF-8字符集。第九十六页,共178页。97Hive体系结构用户接口CLI:Cli启动(qdng)的时候,会同时启动(qdng)一个Hive副本。JDBC客户端:封装了Thrift,java应用程序,可以在指定的主机和端口连接到在另一个进程中运行的hive

60、服务器。ODBC客户端:ODBC驱动允许支持ODBC协议的应用程序连接到Hive。WUI接口:是通过浏览器访问HiveThrift服务器基于socket通讯,支持跨语言。HiveThrift服务简化了在多编程语言中运行Hive的命令。绑定支持C+,Java,PHP,Python和Ruby语言。HiveHadoopThrift服务器解析器编译器优化器执行器元数据库MapReduceHDFS数据仓库用户接口CLI接口JDBC/ODBC客户端WEB接口第九十七页,共178页。98Hive体系结构解析器编译器:完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。优化器是一个演化组件,

61、当前它的规则是:列修剪,谓词下压。执行器会顺序执行所有的Job。如果Task链不存在依赖关系,可以采用并发执行的方式进行Job的执行。元数据库Hive的数据由两部分组成:数据文件和元数据。元数据存储在关系数据库中,如mysql、derby。元数据包括:表的名字,表的列和分区及其属性,表的属性(是否(shfu)为外部表等),表的数据所在目录等。HadoopHive的数据文件存储在HDFS中,大部分的查询由MapReduce完成。(对于包含*的查询,比如select*fromtbl不会生成MapRedcue作业)HiveHadoopThrift服务器解析器编译器优化器执行器元数据库MapReduc

62、eHDFS数据仓库用户接口CLI接口JDBC/ODBC客户端WEB接口第九十八页,共178页。99HadoopHive的运行机制hive用户通过用户接口连接Hive,发布HiveSQLHive解析查询(chxn)并制定查询(chxn)计划Hive将查询(chxn)转换成MapReduce作业Hive在Hadoop上执行MapReduce作业sqlMap/Reducehdfstable1table2table3.用户用户(yngh)接口1234第九十九页,共178页。100Hive的应用(yngyng)场景-Hive的优势解决了传统关系数据库在大数据处理上的瓶颈。适合大数据的批量处理。充分利用集

63、群的CPU计算资源、存储资源,实现并行计算。Hive支持标准SQL语法,免去(minq)了编写MR程序的过程,减少了开发成本。具有良好的扩展性,拓展功能方便。第一百页,共178页。101Hive的优势-上百行MR程序(chngx)与一条HQL的对比第一百零一页,共178页。102Hive的应用场景(chngjng)-Hive的缺点Hive的HQL表达能力有限:有些复杂运算用HQL不易表达。Hive效率低:Hive自动生成MR作业,通常不够智能;HQL调优困难,粒度较粗;可控性差。针对Hive运行效率低下的问题,促使人们去寻找一种更快,更具交互性的分析框架(kunji)。SparkSQL的出现则

64、有效的提高了Sql在Hadoop上的分析运行效率。第一百零二页,共178页。103Hive的应用(yngyng)场景适用场景海量数据的存储(cnch)处理数据挖掘海量数据的离线分析不适用场景复杂的机器学习算法复杂的科学计算联机交互式实时查询第一百零三页,共178页。104Hive开发(kif)使用-Hive的连接HiveServer2目前Hive的Thrift服务端通常(tngchng)使用HiveServer2,它是HiveServer改进版本,它提供了新的ThriftAPI来处理JDBC或者ODBC客户端,可以进行Kerberos身份验证,支持多个客户端并发。BeeLineHiveServ

65、er2还提供了新的CLI:BeeLine,它是Hive0.11引入的新的交互式CLI,基于SQLLine,可以作为HiveJDBCClient端访问HievServer2。通过BeeLine连接hivehive安装目录/bin/./beeline-ujdbc:hive2:hiveServer2所在ip:端口号-n用户名例如:./beeline-ujdbc:hive2:/127.0.0.1:10000-nroot第一百零四页,共178页。105Hive开发(kif)使用-Hive的数据模型Hive数据库类似传统数据库的DataBase,在元数据库里实际是一张表。对应于HDFS上的数据仓库目录下是

66、一个文件夹。数据仓库目录路径,由hive-site.xml中$hive.metastore.warehouse.dir参数(cnsh)指定。创建数据库示例:createdatabase数据库名;元数据库中查询数据库列表:select*fromdbs;如下图:第一百零五页,共178页。106Hive开发(kif)使用-Hive的数据模型Hive数据库hive-site.xml中的数据仓库目录(ml)设置,如下图:HDFS下对应存储目录,数据库名后缀为.db的数据库列表(libio),如下图,第一百零六页,共178页。107Hive开发(kif)使用-Hive的数据模型内部表内部表与关系数据库中的Table在概念上类似。每一个Table在Hive中都有一个相应(xingyng)的目录存储数据。所有的Table数据(不包括ExternalTable)都保存在这个目录中。删除表时,元数据与数据都会被删除。元数据库中查询(chxn)数据表列表:HDFS下对应存储目录:第一百零七页,共178页。108Hive开发(kif)使用-Hive的数据模型外部表外部表指向已经在HDFS中存在(cnzi)的数

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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