2018年通信业务公司软件研究院Hadoop及其组件培训课件.pdf
下载文档
上传人:地**
编号:1266425
2024-12-16
71页
2.57MB
该文档所属资源包:
通信业务公司软件研究院大数据技术信息安全IT总体规划培训课件资料
1、H Hadoopadoop及其组件及其组件目 录五一Hadoop简介二HDFS三HBase四YarnZookeeper六Hive Hadoop是Apache基金会的一个项目总称,主要由HDFS、MapReduce和Hbase等组件 HDFS-Google GFS,MapReduce-Google MapReduce,Hbase-Google BigTable Hadoop来源于其创始人Doug Cutting的儿子给一头黄色大象取的名字 Hadoop最初只与网页索引有关,迅速发展成为分析大数据的领先平台Hadoop分布式资源调度框架Hadoop 特点 扩容能力强 成本低 高效率 可靠性 适合场2、景 大数据分析 离线分析 不适合场景 少量数据 复杂数据 在线分析目 录五一Hadoop简介二HDFS三HBase四YarnZookeeper六HiveHDFS起源 发表于2003年10月 HDFS是GFS的克隆版源自于源自于GoogleGoogle的的GFSGFS论文论文 易于扩展的分布式文件系统 运行在大量普通廉价机器上,提供容错机制 为大量用户提供性能不错的文件存取服务HDFSHDFS特点特点HDFS优点TB级、PB级数据百万规模以上的文件数量10K+节点规模处理超大文件处理超大文件通过多副本提高可靠性提供了容错和恢复机制运行于廉价机器上运行于廉价机器上0102HDFS缺点比如毫秒级不适3、合低延迟访问不适合低延迟访问占用namenode大量内存寻道时间超过读取时间不适合小文件存取不适合小文件存取一个文件只有一个写入者不支持多用户写入不支持多用户写入010203设计思想file100GB128MB128MB128MB128MB128MBblock1:node1,node2,node3block2:node2,node3,node4block3:node4,node5,node6block4:node5,node6,node7Sever1 Sever2 Sever3 Sever4 Sever5 Sever6Sever7 block1block2block1block1block2b4、lock2block3block3block4block3block4block4block1block2 block3副本策略 Block副本放置策略 副本1:同client的节点上 副本2:不同机架上中的节点 副本3:与第二个副本同一机架的另一个节点上 其他副本:随机挑选体系架构HDFS-体系架构HDFS Client HDFS Client DiskDiskDisk心跳,负载均衡,复制块等写文件到磁盘协助NN工作1.维护元数据信息2.维护HDFS的目录3.响应客户端的请求写文件到磁盘写文件到磁盘元数据助理file100GB128MB128MB128MB128MB128MBHDFS-设计思5、想Client APIClient API元数据bk1bk1bk1bk2bknbk2bk2Rack-ARack-BBlock副本放置策略副本放置策略副本1:同client的节点上;副本2:不同机架上中的节点;副本3:与第二个副本同一机架的另一个节点上;其他副本:随机挑选;12345HDFS-NN管理机制(元数据如何保证高实时性)Client APIClient API元数据是如何管理的元数据是如何管理的1.大量的客户请求访问,要快速返回请求block 块地址2.大量的客户请求存储,要快速记录新bk的地址。问题:怎么实现?1.用内存:断电丢失2.用磁盘:检索写入速度慢真实情况:1)使用内存(如果6、断电从fsimage+edits log 同步)2)磁盘小文件-edits log3)磁盘大文件-fsimage内存meta.dataedits logfsimage集群2.NN向edits log 里记录元数据客户端请求向HSFS 上传文件8.每当edits log 写满或时间阈值到达时,新的元数据信息刷新到fsimage里面HDFS-NN管理机制(edits log 与 fsimage 如何合并)合并合并:edits log 是日志 要和fsimage 合并要运算,这样如果在NN上合并负载太大,所以真实合并是在SN上合并进行的meta.dataeditsfsimageedits.new内存7、磁盘磁盘磁盘editsfsimage磁盘磁盘1.edits 写满时/时间阈值到达时NN通知SN进行checkpoint操作2.SN通知NN停止向edits里写操作4.SN下载NN的fsimage文件下载NN的edits文件fsimage.chkpoint磁盘5.合并fsimage 和edits6.SN上传新的fsimage.chkpoint文件7.NN将fsimage.chkpoint重命名fsimage8.NN将edits.new重命名为edits 由以上可知道,SN并不是NN的备份,它只是NN的一个助理,协助NN工作(SN完成对fsimage和edits文件进行合并,并推送给NN,防止因e8、dits文过大,导致NN重启变慢等工作)。一个典型的HA集群,两个单独的机器配置为NameNode,在任何时候NmaeNode处于活动状态,另一个出于待机状态,活动的NameNode负责处理集群客户端的操作,待机时仅仅作为一个Slave,保持足够的状态,如果有必要提供一个快速的故障转移。HDFS-NameNode HA(高可用)ZKZKZKFailoverControllerActiveFailoverControllerStandbyNNActiveNNStandbyDNDNDNDNHeartbeatHeartbeatShare NN State with single writer(fec9、nced)Block Reports to Active&Standby DN fencing:Update cmds from oneMonitor Health of NN.OS.HWMonitor Health of NN.OS.HWClient Side Mount TableName Service1/share/Name Service1/user/NN-1NN-2NN-3NN-4DN-1DN-2DN-3DN-4.DN-nStorage Pool 1Storage Pool 2FederationHAHAHDFS-HDFS Federation(联邦集群)HDFS Federati10、on的一些独特的优势的一些独特的优势第一点,命名空间的扩展.因为随着集群使用增长,HDFS上存放的数据也将会越来越多.这个时候如果还是将所有的数据都往一个NN上存放,将会出现瓶颈.这时候可以进行横向扩展,把一些大的目录分离出去.使得每个NN下的数据更加的精简.第二点,性能的提升.当NN所持有的数据量达到了一个非常大规模的量级的时候(比如超过10亿个文件),这个时候NN的处理效率可能就会有影响,它可能比较容易的会陷入一个繁忙的状态.而整个集群将会受限于一个单点NN的处理效率,从而影响集群整体的吞吐量.这个时候多NN机制显然可以减轻很多这部分的压力.第三点,资源的隔离.通过多个命名空间,可以将关键11、数据文件目录移到不同的NN上,以此不让这些关键数据的读写操作受到其他普通文件读写操作的影响.这些NN将会只处理特定的关键的任务所发来的请求,而屏蔽了其他普通任务的文件读写请求.文件系统命名空间映像文件及修改日志editsfsimageedits.neweditsFsimage.ckptfsimageeditsfsimageFaimage.ckptNamenodeSecondary Namenode生成新的edits将edits替换为新的edits.new将fsimage替换为fsimage.ckpt复制复制复制Fsimage合并edits中的操作HDFS节点目录结构元数据节点目录结构元数据节点12、目录结构从元数据节点目录结构从元数据节点目录结构数据节点目录结构数据节点目录结构namespaceID=1232737062storageID=DS-1640411682-127.0.1.1-50010-1254997319480cTime=0storageType=DATA_NODElayoutVersion=-18数据节点的VERSION文件格式如元数据节点的VERSION文件格式如namespaceID=1232737062cTime=0storageType=NAME_NODElayoutVersion=-18写操作读操作HDFS2.0特性NameNode HAZKZKZKFailov13、erControllerActiveFailoverControllerStandbyNNActiveNNStandbyDNDNDNDNHeartbeatHeartbeatShare NN State with single writer(fecnced)Block Reports to Active&Standby DN fencing:Update cmds from oneMonitor Health of NN.OS.HWMonitor Health of NN.OS.HWHDFS2.0特性HDFS FederationClient Side Mount TableName Servi14、ce1/xdataName Service1/hadoopNM-1NM-2NM-3NM-4DM-1DM-1DM-1DM-1DM-1DM-1Storage Pool 1Storage Pool 2FederationHAHA目 录五一Hadoop简介二HDFS三HBase四YarnZookeeper六Hive HBase简介-HBase是什么HBase Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。分布式的、多版本的、面向列的开源数据库利用Hadoop MapReduce来处理HB15、ase中的海量数据利用ZooKeeper作为协同服务利用Hadoop HDFS作为其文件存储系统可提供高可靠性、高性能、实时读写的数据库系统可以使用本地文件系统,也可以使用HDFS HBase简介-HBase发展Google发表论文BigTableHBase成为Hadoop的子项目HBase成为Apache的顶级项目HBase-1.0发布最新稳定版本为1.2.220062007200820152016 HBase简介-HBase特点支持海量数据实时检索NoSQL(key-value型存储)集群、数据可扩展,可支持按行的无限扩展、百万级的按列扩展严格的一致性读写按列族存储(高压缩比)按行键检索高16、效高可靠:基于HDFS、WAL机制高可用:基于ZooKeeper HBase简介-HBase应用场景并不是所有场景都适合HBase-与关系数据库比,HBase接口比较简单、有限存储大量的数据(100s TB级数据)-数据量太小无法发挥出HBase的作用瞬间写入量很大,数据库不好支撑或需要很高成本支撑的场景数据需要长久保存,且量会持久增长到比较大的场景在大规模数据集中进行很好性能的随机访问需要进行数据扩展,包括列的修改和增加业务场景比较简单,不需要复杂的关系数据库特性,例如交叉列、交叉表,事务,连接等等 HBase架构与原理-与Hadoop的关系HBase 可以直接使用本地文件系统,也可以构建在17、 Hadoop之上,使用HDFS文件系统,为了提高系统的可靠性和安全性,使用HDFS比较稳妥。两者都具有良好的容错性和扩展性,都可以扩展到成百上千个节点;HDFS适合批处理场景不支持数据随机查找不适合增量数据处理不支持数据更新 HBase架构与原理 数据模型1.HBase是建立在已有文件系统上的数据库,但HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库,另一个不同的是HBase基于列的而不是基于行的模式。2.Hbase的数据以表的形式存储,但与我们了解的关系数据库表不同。大:一个表可以有数十亿行,上百万列;无模式:每行都有一个可排序的主键和多个列,列可以根据需要动态增加18、,同一张表中不同的行可以有不同的列;面向列:面向列(族)的存储和权限控制,列(族)独立检索;稀疏:空(null)列并不占用存储空间,表可以设计的非常稀疏;多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;数据类型单一:Hbase中的数据都是字符串,没有类型。3.一张Hbase表由多行数据构成 每一行由rowkey 作为唯一标识符 任何类型的数据都可以作为rowkey:string,long 等4.每行包含多个列族(列簇),没个列族包含多个列。5.Hbase可根据rowkey,列族和列定位到cell,数据被存放到cell 中。HBase架构与原理-总体架构19、总体架构 HDFS ZooKeeper HMaster HRegionServerHbase写数据流程DFS ClientHDFSDataNodeClientZookeeper123HRegionServerHlogHRegionStoreStoreFileHFileStoreFileHFileMemStore45DataNodeDataNode1、Client访问zookeeper2、从meta表获取相应region信息,然后找到meta表的数据;3、Client向HRegionserver发送写请求。4、HRegionserver将数据写到Hlog(write ahead log),为了数20、据的持久化和恢复。5、HRegionserver将数据写到内存(memstore)6、反馈Client写成功。Hbase读数据流程1、Client先访问Zookeeper,从meta表读取region的位置,然后读取meta表中的数据。2、根据namespace、表名和rowkey在meta表中找到对应的region信息3、找到这个Rgion对应的RegionServer4、查找对应的Region5、先从MemStore找数据,如果没有,则66、再到StoreFile上读(为了读取的效率)。DFS ClientHDFSDataNodeClientZookeeper123HRegionServe21、rHlogHRegionStoreStoreFileHFileStoreFileHFileMemStore4DataNodeDataNode56 HBase架构与原理-总体架构HMaster 负责Table和Region的管理工作 管理用户对表信息的增删改查操作 管理HRegionServer的负载均衡,调整Region分布 HRegionServer宕机后,负责失效HRegionServer上Region迁移 HBase中可以启动多个HMaster,通过Zookeeper保证总有一个Master在运行HRegionServer HBase中最核心的模块 负责响应用户I/O请求、向HDFS读写22、数据 每个HRegion对应Table中一个Region 管理HRegion Region定位 HBase架构与原理-与关系数据库对比Hbase就是这样一个基于列模式的映射数据库,它只能表示很简单的Key-Value 映射关系,这大大简化了传统数据库,与传统书库库相比有以下特点:数据存储类型:Hbase 只有简单的字符串类型,所有的数据类型交由用户处理,只保存成字符串,而关系数据库有丰富的类型选择和存储方式。数据操作:Hbase 只支持简单的插入、查询、删除、清空等操作,表与表之间是分离的,没有复杂的关系,而传统数据库有各种函数和连接操作。存储模式:Hbase 基于列,每个列族都有几个文件保存23、,不同列族的文件是分离的。传统数据库是基于表结构和行模式的。数据维护:Hbase 的数据更新只是增加了一个新的版本,旧版本仍会保留,而传统数据库是替换旧的数据。可伸缩性:Hbase 扩展性强,关系数据库需要开发中间件形成并行数据库 数据类型:Hbase 可以存储非结构化和半结构化数据。目 录五一Hadoop简介二HDFS三HBase四YarnZookeeper六Hive Yarn简介 Hadoop 2.0新增系统 负责集群的资源管理和调度 使得多种计算框架可以运行在一个集群中YARNYARN是什么是什么 良好的扩展性、高可用性 对多种类型的应用程序进行统一管理和调度 自带了多种多用户调度器,适24、合共享集群环境YARNYARN的特点的特点 Yarn架构 ResouceManager调度器调度器 根据容量、队列等限制条件,将系统中的资源分配给多个队列和应用 可插拔的组件,自带三个资源调度器,FIFO、Capacity Scheduler、Fair Scheduler 纯调度器,不再负责监控、跟踪应用的执行状态 仅根据各个应用的资源需求进行调度,通过资源容器container完成应用管理器应用管理器 负责接收作业 协商获取第一个容器用于执行AM 提供重启失败的AM container的服务 NodeManager每个节点上的框架代理负责单个节点的资源管理和监控定期将资源使用情况汇报给Res25、ourceManager接收来自ApplicationMaster的命令以启动或回收Container ApplicationMaster负责管理单个应用程序向ResourceManager申请资源启动内部任务负责任务的运行监控和容错等 Yarn流程 Yarn流程1.申请一个job2.job相关的资源提交路径和jobIDHDFS:/tmp/xx/xx/yarn-staging/jobID3.提交资源4.汇报提交结果5.将Job加入任务队列Resource Manager任务队列6.领取任务Node ManagercontainerMRAppmaster10.启动Map任务9.向RM注册12.J26、ob完成后注销自己8.启动APPmasterMapReduceProgramJobRun JobClient JVMClient nodeNode ManagercontainerMap TaskyarnChild7.分配运行资源,包括从HDFS中获取资源包7.分配运行资源,包括从HDFS中获取资源包Node ManagercontainerMap TaskyarnChild7.分配运行资源,包括从HDFS中获取资源包Node ManagercontainerReduce TaskyarnChild7.分配运行资源,包括从HDFS中获取资源包11.启动Reduce任务6.领取任务6.领取任务627、.领取任务目 录五一Hadoop简介二HDFS三HBase四YarnZookeeper六Hive ZooKeeper简介|基本功能分布式应用的协调服务实现同步服务,配置维护和命名服务解决分布式集群中应用程序的一致性问题维护和监控存储数据状态的变化ZooKeeper是Google Chubby的一个开源实现,是开源Hadoop项目中的一个子项目 ZooKeeper简介|设计目标ZooKeeper设计目标简单化健壮性有序性速度快HDFS NameNode HAMapReduce JobTracker HAYARN ResouceManager HAHBase Hmaster ActiveHiveS28、erver2并发 ZooKeeper简介|基本功能 ZooKeeper架构与原理|总体架构FollowerFollowerFollowerFollower负责进行投票的发起和决议,更新系统状态用于接受客户端请求并向客户端返回结果,在选主过程中参与投票请求发起方 ZooKeeper架构与原理|数据模型层次化的目录结构,命名符合常规文件系统规范每个节点称为znode,并且有一个唯一的路径标识节点znode可以包含数据和子节点每个znode中存储的是同步相关的数据,例如状态信息、配置内容、位置信息等一个znode维护了一个状态结构,该结构包括:版本号、ACL变更、时间戳等。属性属性描述描述cZxid29、/mZxid节点被创建/修改的Zxid值ctime/mtime节点被创建/修改的时间cversion节点所拥有的子节点被修改的版本号dataVersion节点被修改的版本号aclVersion节点的ACL被修改的版本号ephemeralOwner节点拥有者的会话IDdataLength节点数据域的长度numChildren节点拥有的子节点个数 ZooKeeper架构与原理|znode短暂的(ephemeral)短暂znode不可以有子节点 在客户端会话结束时,ZooKeeper会将该短暂znode删除持久的(persistent)不依赖于客户端会话 只有当客户端明确要删除时才会被删除Znode30、主要有两种类型,在创建时确定,不能被修改 ZooKeeper架构与原理|watches客户端可以在一个znode上设置一个监视器(watch),如果该znode数据发生变更,ZooKeeper会通知客户端,从而触发监视器中实现的逻辑的执行。观察维护在服务器本地 数据观测 子节点观测 watch事件异步发送给客户端 一次性触发器单次触发异步发送本地维护两类观察 ZooKeeper架构与原理|ACLZooKeeper使用ACL来对znode进行访问控制。ACL的实现和UNIX文件访问权限非常相似:使用许可位来对一个节点的不同操作进行允许或禁止的权限控制。ACLACL权限权限描述描述CREATE(创31、建)创建子节点READ(读)从节点获取数据或列出节点的所以子节点WRITE(写)设置节点的数据DELETE(删除)删除子节点ADMIN(管理)可以设置权限注意:一条ACL仅针对于一个特定的节点,且不能被子节点继承,即父节点的ACL与子节点的ACL相互独立JavaJava API API 支持的支持的权限权限描述描述ZOO_OPEN_ACL_UNSAFE任何应用程序可以在节点上执行任何操作ZOO_READ_ACL_UNSAFE应用程序只有读权限ZOO_CREATOR_ALL_ACL授予节点创建者所有权限 ZooKeeper架构与原理|原子广播恢复模式恢复模式 当服务启动或者在领导者崩溃后,zab32、就进入了恢复模式,当领导者被选举出来,且大多数follower完成了和leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和follower具有相同的系统状态。广播模式广播模式 一旦leader已经和多数follower进行了状态同步后,就开始广播消息了,即进入广播模式。ZooKeeper服务一直维持广播模式,直到leader崩溃,或者leader失去了大部分follower的支持 ZooKeeper的核心是原子广播这个机制保障了各个Server之间的同步实现这个机制的协议叫做Zab协议,Zab协议的两种模式如下:来自同一个client的更新请求按其发送顺序依次执行更新请求33、顺序进行更新请求顺序进行 一次数据更新要么成功,要么失败数据更新原子性数据更新原子性 Client无论连接到哪个Server,数据视图都是一致的全局唯一数据视图全局唯一数据视图 一个更新一旦成功,其结果就会持久存在并且不会被撤销可靠性 在一定事件范围内,client能读到最新数据实时性实时性 ZooKeeper架构与原理|一致性保证目录五一Hadoop简介二HDFS三HBase四YarnZookeeper六Hive Hive简介-Hive由来Hive是一个开源的,建立在Hadoop上的数据仓库框架,提供类似SQL的HQL语言操作结构化数据,其基本原理是将HQL语言自动转换成MapReduce任34、务,从而完成对Hadoop集群中存储的海量数据进行查询和分析。FaceBook建立海量用户点击数据、日志数据仓库利用Hadoop高吞吐和批量处理海量数据的优势方便普通分析人员使用类SQL语句进行数据分析和建模 Hive简介-Hive特点使用HDFS作为底层存储使用MapReduce作为执行层使用HQL作为查询接口通过HQL语言非常容易的完成数据提取、转换和加载(ETL)。通过HQL完成海量结构化数据分析。灵活的数据存储格式,支持JSON,CSV,TEXTFILE,RCFILESEQUENCEFILE等存储格式,并支持自定义 扩展多种客户端连接方式,支持JDBC、Thrfit等接口 Hive简介35、-优缺点优点 海量结构化数据分析汇总 高可靠性,高容错性 将复杂的MapReduce编写任务简化为SQL语句。大大提升了开发效率 灵活的数据存储TextFile,RCFile,ORC,SequenceFile,CSV,Parquest,自定义格式 可扩充UDF/UDAF/UDTF缺点 延迟较高,性能有提升空间 不支持事务类操作Hive架构介绍编译器将一个编译器将一个Hive QL转换为操作符构成的图转换为操作符构成的图操作符是操作符是Hive最小的处理单元最小的处理单元每个操作符代表每个操作符代表HDFS的一个操作或者一道的一个操作或者一道MapReduce作业作业作业可以跑在几种计算引擎上面36、作业可以跑在几种计算引擎上面逻辑执行计划:一个逻辑执行计划:一个Operator图图物理执行计划:一个物理执行计划:一个Task图图逻辑计划优化:把逻辑执行计划切分成子图逻辑计划优化:把逻辑执行计划切分成子图物理计划优化:每个物理计划优化:每个Task结点内,是结点内,是Operator结点构成的子图结点构成的子图Hive实现原理实现原理Hive实现原理实现原理Hive实现原理实现原理Hive实现原理实现原理DFS 深度优先搜索算法Hive实现原理实现原理Hive实现原理实现原理Hive实现原理实现原理Hive实现原理实现原理Select*from a join b on a.id=b.id;Hive实现原理实现原理小结:小结:编译器将一个编译器将一个Hive QL转换为操作符构成的图转换为操作符构成的图操作符是操作符是Hive最小的处理单元最小的处理单元每个操作符代表每个操作符代表HDFS的一个操作或者一道的一个操作或者一道MapReduce作业作业作业可以跑在几种计算引擎上面作业可以跑在几种计算引擎上面SQL Tree DAGTHANKS