资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2,*,Hadoop,体系架构概述,补充上比较完美的参考资料,1,2,Hadoop,体系架构,HDFS,简介,Map/Reduce,模型,分布式列式数据库,Hbase,2,2025/4/29 周二,Hadoop,概述,基于,Apache,基金会下的一个开源项目,致力于开发一个可靠的、大规模的分布式计算框架,用户可采用简单的计算模型在计算机集群下对大规模的数据进行分布式处理,设计理念之一是扩展单一的服务器为成千上万机器的集群,且集群中每一个机器同时提供本地计算力和存储力,Hadoop,框架是在应用层检测和处理硬件失效问题,而不是依赖于硬件自身来维持高可用性。,在,Hadoop,框架集群中硬件失效被认为是一种常态,集群的高可用性服务是建立在整个集群之上的,3,2025/4/29 周二,分布式文件系统(,Hadoop Distributed File System,,,HDFS,),并行计算模型(,Map/Reduce,),列式数据库(,HBase,),数据仓库(,Hive,),数据分析语言(,Pig,),数据格式转化工具(,Sqoop,),协同工作系统(,Zookeeper,),数据序列化系统(,Avro,),HDFS,(Hadoop Distributed File System),Map/Reduce,(Job Scheduling/Execution System),Hbase,(Column Database),Pig,(Data Flow),Hive,(SQL),Sqoop,ETL Tools,BI Reporting,RDBMS,AvroSerialization),Zookeeper(Coordination),Hadoop,整体框架,4,2025/4/29 周二,Hadoop,整体框架下特点,Hadoop,主要在多节点集群环境下,以数据存储为基础,最大限度兼容结构化数据格式,以数据处理为目的,且其数据操作技术多样化,5,2025/4/29 周二,Hadoop,体系架构,HDFS,简介,Map/Reduce,模型,分布式列式数据库,Hbase,6,2025/4/29 周二,HDFS,概述,-,基本特征,基于商用硬件环境,HDFS,具有高容错性,并且被部署在廉价的硬件之上,HDFS,向应用程序提供高的数据吞吐访问,适合于需要处理大规模海量数据集的应用,HDFS,遵循部分,POSIX,协议要求,可以确保应用程序以流的方式访问文件系统数据,7,2025/4/29 周二,HDFS,的对现实应用环境的假设及其目标,硬件失效,流式数据访问,海量数据集,追加写入及文件同步,“移动计算比移动数据的代价小”,跨异构硬件和软件平台的可移植性,8,2025/4/29 周二,HDFS,架构,主从(,Master/Slave,)体系结构,只含有一个,NameNode,主服务节点这个节点管理文件系统中的命名空间和调度客服端对文件的访问,通常一个机器就是一个,DataNode,数据节点,,DataNode,管理本节点上数据的存储,在,HDFS,内部,一个文件被分割为一个或多个数据块,并且这些数据块被存储在一批,DataNode,中。,NameNode,执行文件系统中命名空间的操作,(,打开、关闭、重命名文件和目录,),,,NameNode,需要执行数据块到,DataNode,映射的决策,DataNode,负责响应来自客户端的文件读写要求,也要负责执行来自,NameNode,的关于数据块创建、删除和冗余存储的指令,Client,MetaData ops,Write,NameNode,MetaData(Name,replicas,),Client,DataNodes,DataNodes,Block ops,Read,Blockss,Replication,NameNode,同,DataNode,都是可以架设在普通商品机上,一个典型的,HDFS,集群中部署一个专用机做为,NameNode,,其余的机器部署为,DataNode,。虽然,这个体系结构并不排除把一个机器做为多个,DataNode,节点,但是这样的情况在实际部署中很少发生。单,NameNode,结构极大的简化了集群的系统结构,,NameNode,主管并且存储所有的,HDFS,的元数据(,MetaData,),系统中用户数据绝不会流过,NameNode,节点。,9,2025/4/29 周二,Hadoop,体系架构,HDFS,简介,Map/Reduce,模型,分布式列式数据库,Hbase,10,2025/4/29 周二,Map/Reduce,简介,一种用于在大型商用硬件集群中(成千上万的节点)对海量数据(多个兆兆字节数据集)实施可靠的、高容错的并行计算的软件系统,一个最先由,Google,提出的分布式计算软件构架,基本原理,将一个复杂的问题,分成若干个简单的子问题进行解决。然后,对子问题的结果进行合并,得到原有问题的解,11,2025/4/29 周二,Map/Reduce,概念,Map,和,Reduce,是编程语言中的概念,都是处理数据集合的函数,Map,在处理数据序列的过程中只处理当前的数据信息,不需要跟之前处理的状态信息交互,主结点读入输入数据,把它分成可以用相同方法解决的小数据块,然后把这些小数据块分发到不同的工作节点上,每一个工作节点循环做同样的事,这就形成了一个树行结构,而每一个叶子节点来处理每一个具体的小数据块,再把这些处理结果返回给父节点,Reduce,在处理过程中却依赖之前处理的结果,同时生成的结果也被后续的处理使用。结点得到所有子节点的处理结果,然后把所有结果组合并且返回到输出,一个,Map/Reduce,任务会把一个输入数据集分割为独立的数据块,然后,Map,任务会以完全并行的方式处理这些数据块。,Map/Reduce,系统自动对,Map,任务的输出分类,再把这些分类结果做为,Reduce,任务的输入。无论是任务的输入还是输出都会被存储在文件系统中。,Map/Reduce,系统关注任务调度、任务监测和重新执行失败的任务,12,2025/4/29 周二,Map/Reduce,模型,计算节点和存储节点的一致性。允许,Hadoop,框架有效的调度任务在那些数据已经准备好了的节点上,好处是整个集群中总带宽非常的高,特点是可以用,Map,和,Reduce,方法来处理分布式计算问题时,尽可能的实现数据处理的本地化,降低由数据移动而产生的代价。每一个,Map,操作都是相对独立的,所有的,Maps,都是并行运行的,虽然实践中会受到数据源和,CPU,个数的影响。同样的,用一个,Reduce,集合来执行,Reduce,操作,所有带有相同,key,的,Map,输出会聚集到同一个,Reduce,。能够处理一般服务器所不能处理的大数据量处理问题,Map/Reduce,系统由单一的,JobTracker,主节点和若干个,TaskTracker,从节点组成,其中每一个集群节点对应一个,TaskTracker,节点。主节点负责调度任务的各个组成任务到从节点上,监控并且重新执行失败的组成任务;从节点执行主节点安排的组成任务,Map/Reduce,的,Map,和,Reduce,过程都定义了键值对(,)的数据结构,即系统视任务的输入数据为键值对集合,并且产生键值对结合做为任务的输出。一次任务的输入输出格式:,(input)-map-combine-reduce-(output),13,2025/4/29 周二,一次,Map/Reduce,任务过程。用户提交任务给,JobTracer,,,JobTracer,把对应的用户程序中的,Map,操作和,Reduce,操作映射至,TaskTracer,节点中;输入模块负责把输入数据分成小数据块,然后把它们传给,Map,节点;,Map,节点得到每一个,key/value,对,处理后产生一个或多个,key/value,对,然后写入文件;,Reduce,节点获取临时文件中的数据,对带有相同,key,的数据进行迭代计算,然后把终结果写入文件。,6 write,5,remote,write,4,local,write,3 read,User,Program,TaskTracer,TaskTracer,TaskTracer,TaskTracer,TaskTracer,Chunk1,Chunk2,Chunkn,1 fork,1 fork,2,assign,map,Output,Output,Input,files,1 fork,2,assign,reduce,JobTracer,Map,phase,Intermediate files,(on local disk),Reduce,phase,Output,files,Map/Reduce,处理过程,14,2025/4/29 周二,Map/Reduce,优缺点,Map/Reduce,通过工作状态的返回有效处理了单点失效的问题,Map/Reduce,是隶属于大粒度的并行计算模式,并行节点间在,Map,阶段中和,Reduce,阶段中无法通信,也并非是一种万能的数据处理模型,15,2025/4/29 周二,Hadoop,体系架构,HDFS,简介,Map/Reduce,模型,分布式列式数据库,Hbase,16,2025/4/29 周二,Hbase,简介,可提供随机的、实时的大数据读写访问,目标是在商用硬件上存储非常大的表,数十亿的行数百万的列,开源的、分布式的、版本化的、面向列的存储模型,对,Google,公司,Bigtable,系统的开源模仿,建立在,Hadoop,和,HDFS,之上提供类,Bigtable,的存储力,17,2025/4/29 周二,Hbase,数据模型,按预先定义好的列族(,Column family,)结构来存储数据,即每一条数据有一个,key,以及若干个列属性值组成,每列的数据都有自己的版本信息,数据是按列进行有序存储的,不同于关系型数据库中按行存储,两种方式的数据操作,通过对有序,key,值进行扫描查询,获取,value,值,或者借助强大的,Hadoop,来进行,Map/Reduce,查询,采用了强一致性的读写保证,数据会在多个不同的域(,region,)中进行保存。列族可以包含无限多个数据版本,每个版本可以有自己的,TTL,(,Time to Live,,生命周期),通过行级锁来保证写操作的原子性,但是不支持多行写操作的事务性。数据扫描操作不保证一致性,18,2025/4/29 周二,HBase,下表的逻辑视图,行键(,Row key,),时间戳(,Time stamp,),列族,(Column family),列(,Column,),Row key,Time stamp,Column family,A,Column,a,key,tn,t1,value1,在创建一张表时,必须定义行键名及所需列族的列族名,理论上一张表在创建时可以无限制地定义列族个数,而时间戳会由系统自动生成。列无需在创建表时定义,可以在使用时随意定义使用,一个列族下同样可以无限制的定义列的个数。虽然,,HBase,中可以任意的定义列族个数及附属列的个数,但是只需能够保证任意一列不为空时,该行即为有效行。,19,2025/4/29 周二,HBase,下表的物理视图,在,HBase,中采用的稀疏存储,物理存储过程中细化到一个单元(,Cell,)。在逻辑视图中,任意一行不会空的每一列都被称作为一个单元。单元联同行键、时间戳、列族名、列名做为完整的一行存储到文件系统中,并且这个存储过程中会自动排序,先在各行键间以字母升序排列,再在同行键间以时间戳降序排列。,Row key,Time stamp,Column family,Column,Value,key,tn,Column family A,key,t1,Column family A,Column a,value1,20,2025/4/29 周二,表创建的初始阶段其中只含有一个,Region,,随着表中数据的量的不断增多,一个,Region,会分裂为两个,Region,,然后不断重复上述过程,并且,Region,会被存储到,HDFS,中不同的,DataNode,上。,Region,包含有一个或多个的,Store,,其数量增长过程同表中的,Region,数量增长过程一致,Store,中分为两个部分:第一个部分是,Memstore,,一个,Store,中只包含一个,Memstore,,并且,Memstore,存储在内存空间中;第二个部分是,Storefile,,此部分由,Memstore,写入硬盘而得。随着,Memstore,写入硬盘的次数增多,,Storefile,的数量也会增加,当文件个数增加到一定量时,系统会自动对,Storefile,文件进行合并。,合并过程中主要完成以下几个工作:,1.,具有相同行键的行存放在一个文件中;,2.,扔掉被标志为删除的行;,3.,扔掉时间戳过期的行,完成更新操作。随着合并操作的频繁执行,Storefile,会变得很大,达到一定文件大小时自动分裂文件,贴合,HDFS,中对一个块数据大小的定义,HBase,的一张表中的多个列族(,Column Family,),在物理存储上一个列族对应一个文件夹,一个文件夹中可包含若干个,Hfile,文件。,Hfile,是,Storefile,的底层文件格式,,StoreFile,就是对,Hfile,做了轻量级包装,Memstore,Storefile,Storefile,单一键值,Table,Region,Store,包含零个,或多个,包含一个或多个,包含一个或多个,包含一个,达到一定阈值时写入硬盘,文件个数达到一定阈值时合并,文件大小达到一定阈值时分裂,Hbase,物理存储过程,21,2025/4/29 周二,记录(,Record,)数据块中以键值对形式存放的用户数据,一条记录保存一个键值对或者说保存一个单元的数据,元数据块其主要作用是判断一个键值是都在当前,Hfile,文件中,文件信息(,FileInfo,)中保存了与该,HFile,相关的一些信息,其中有系统保留的一些固定的值,也可以保存用户自定义的一些值,数据块索引(,Data Block Index,)保存的是每一个数据块在,HFile,文件中的位置、大小信息以及每个块的第一个单元的键值,元数据索引(,Meta Block Index,)的格式与数据库索引相同,元数据块索引保存的是每一个元数据在,HFile,文件中的位置、大小信息以及每个元数据的键值,文件尾(,Fixed file trailer,)主要保存了该,Hfile,的一些基本信息,其大小固定,主要是可以根据它查找到,Fileinfo,,,Block Index,的起始位置,Hfile,的文件结构,Data Block 1,Data Block N,Meta Block 1,Meta Block N,Fileinfo,Data Block Index,Meta Block Index,Fixed file trailer,数据块(,Data block,),元数据块(,Meta block,),文件组成,22,2025/4/29 周二,
展开阅读全文