HBase云存储(1).ppt

上传人:仙人指路1688 文档编号:2721934 上传时间:2023-02-23 格式:PPT 页数:37 大小:2.49MB
返回 下载 相关 举报
HBase云存储(1).ppt_第1页
第1页 / 共37页
HBase云存储(1).ppt_第2页
第2页 / 共37页
HBase云存储(1).ppt_第3页
第3页 / 共37页
HBase云存储(1).ppt_第4页
第4页 / 共37页
HBase云存储(1).ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《HBase云存储(1).ppt》由会员分享,可在线阅读,更多相关《HBase云存储(1).ppt(37页珍藏版)》请在三一办公上搜索。

1、HBase 云存储,计算机科学学院 刘莎,Content,什么是云存储?,Hadoop分布式系统架构,HBase分布式存储系统,Hive项目,云存储是在云计算(cloud computing)概念上延伸和发展出来的一个新的概念,是指通过集群应用、网格技术或分布式文件系统等技术,通过应用软件将网络中大量各种不同类型的存储设备集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。,当云计算系统运算和处理的核心是大量数据的存储和管理时,云计算系统中就需要配置大量的存储设备,因此,云计算系统也成为了一个巨大的存储系统,所以,云存储系统的定义可以简化为:一个以数据存储和管理为核心的云计算系统。

2、,什么是云存储?,由Apache基金会开发的一个开源项目;一个能够对大量数据进行分布式处理的软件架构;由HDFS、MapReduce、HBase、ZooKeeper 和Hive等成员组成;在众多企业都得到应用:Yahoo、Facebook、Tiwtter、Amazon、淘宝、网易、百度、中国移动、中科院计算所等。,Hadoop 集群架构,-1,Slave Node,Slave Node,Slave Node,Hadoop Ecosystem,HDFS是Google GFS的开源版本,它是一个高度容错的分布式文件系统,它能够提供高吞吐量的数据访问,适合存储海量(PB级)的大文件(通常超过64M,

3、因为HDFS中最小存储粒度为64M)。,HDFS,HDFS Architecture,NameNode 节点作为主控节点,维护集群内的元数据,对外提供创建、打开、删除以及重命名文件或目录的功能。DataNode 节点存储数据,并负责提出处理数据的读写请求。NameNode是唯一的,应用程序与之通信,然后往DataNode上存储文件或者从DataNode上读取文件。这些操作是透明的,与常规的普通文件系统API没有区别。整个集群具有单一的命名空间。集群中存储的文件被分割成多个文件块,每个文件块被分配到一个或多个数据节点上(通常是多个,存储冗余度可以根据需求设置,但不能超过DataNode的个数)。

4、,HDFS内部运行机制,MapReduce,MapReudce 是 Hadoop 中重要的分布式计算模型,用以进行大规模的数据计算。用户指定一个 map 函数,通过这个 map 函数处理 key/value 键值对,并产生一系列的中间 key/value对,再使用 reduce 函数合并所有的相同 Key 值对应的 value 集合。,Map-Reduce应用程序执行模型,MapReduce 的本质是:在 map 阶段分发数据,在 Reduce 阶段收集相同 key 对应的 value,因此在这个问题上,可以在 map 阶段,将两个表格数据根据“产品 ID”这个 key 分发出去,将“商品 I

5、D”及“支付 ID”封装一下,作为 map 阶段的 value,这样在 reduce 阶段就可 以根据“产品 ID”得到对应的“商品 ID”及“支付 ID”了。,HBase发展历史,2006年底由PowerSet 的Chad Walters和Jim Kellerman 发起2008年成为Apache Hadoop的一个子项目现已作为产品在多家企业被使用WorldLingoSOpenPlacesYahoo!Adobe淘宝FacebookTwitterTrend Micro,引入HBASE的原因,普通的数据库系统已无法适应大型分布式数据存储的需要改良的关系数据库(副本、分区等)难于安装与维护关系模

6、型对数据的操作使数据的存贮变得复杂HBase从设计理念上就为可扩展做好了充分准备存储空间的扩展只需要简单地加入存储结点HBase同样使用表的概念,它实质上是将一张极大的、非常稀疏的表,存储到分布式文件系统上,Hadoop权威指南,Tom White(美),HBase,HBase是Apache的Hadoop项目的子项目。利用Apache开源项目Hadoop HDFS作为其内部文件存储系统;利用Hadoop MapReduce来处理HBase中的海量数据,为HBase提供了高性能的计算能力;利用Zookeeper作为协同服务,为HBase提供了稳定服务和failover机制。,HBase即Hado

7、op Database,是Google BigTable的开源实现,构造在HDFS之上,提供一个高可靠性、高性能、面向列、可伸缩、可扩展、分布式的数据库系统。利用HBase技术可在廉价PC Server上搭建起大规模存储集群。,HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库,另一个不同就是Hbase具有基于列的而不是基于行的模式。,HBase系统架构,连接到ZooKeeper集群获取根区域数据和元数据的位置在元数据中查找需要访问行所在的区域并定位提供该区域服务的区域服务器直接与区域服务器交互以获取数据根区域数据、元数据以及用户区域信息都被客户端缓存以备下次访问使用,C

8、lient使用HBase的RPC机制与Master和RegionServer进行通信,对于管理类操作,Client与Master进行RPC;对于数据读写类操作,Client与RegionServer进行RPC。,Client,Client工作过程,Master没有单点问题,HBase中可以启动多个Master,通过Zookeeper的Master Election机制保证总有一个Master作为主master运行。,Master,Master在功能上主要负责Table和Region的管理工作:1.管理用户对Table的增、删、改、查操作;2.管理RegionServer的负载均衡,调整Regi

9、on分布;3.在Region Split后,负责新Region的分配;4.在RegionServer因故障宕机后,负责对失效的RegionServer上所有相关Regions进行迁移。,Zookeeper Quorum中除了存储了-ROOT-表的地址和Master的地址,RegionServer也会把自己以Ephemeral方式注册到Zookeeper中,使得Master可以随时感知到各个RegionServer的健康状态。,Zookeeper,RegionServer主要负责响应用户I/O请求,向HDFS文件系统中读写数据,是HBase中最核心的模块。RegionServer内部管理了一系列

10、HRegion对象,每个HRegion对应了Table中的一个Region,HRegion中由多个HStore组成。每个HStore对应了Table中的一个Column Family的存储,可以看出每个Column Family其实就是一个集中的存储单元,因此最好将具备共同IO特性的column放在一个Column Family中,这样最高效。,RegionServer,负责处理用户的读写请求向主服务器(Master Server)上报自己的状态,并获取自己需要服务的区域为提高效率,消息通过捎带(pigback)方式通过“心跳”分组进行传递,RegionServer主要职能,RegionSer

11、ver内部表存储结构,数据存储实体区域,表按照“水平”的方式划分成一个或多个“区域”(region)每个区域都包含一个随机id,区域内的行也是按行键有序的最初每张表包含一个区域,当表增大超过阈值后,这个区域被自动分割成两个相同大小的区域区域是Hbase中分布式存储和负责均衡的最小单元,以该最小单元的形式分布在集群内,区域的管理,区域服务器(Region Server)为区域的访问提供服务,直接为用户提供服务负责维护区域的合并与分割负责数据存持久化主服务器(Master Server)管理区域服务器指派区域服务器对特定区域服务恢复失效的区域服务器,Store是HBase存储的核心,由两部分组成:

12、一部分是MemStore,另一部分是StoreFiles。MemStore是Sorted Memory Buffer,用户写入的数据首先会放入MemStore,当MemStore满了以后会Flush成一个StoreFile。当StoreFile文件数量增长到一定阈值,会触发Compact合并操作,将多个StoreFiles合并成一个StoreFile,合并过程中进行版本合并和数据删除,因此,HBase其实只有增加数据,所有的更新和删除操作都是在后续的compact过程中进行,这使得用户的写操作只要进入内存中就可以立即返回,保证了HBase I/O的高性能。当StoreFiles Compact

13、后,会逐步形成越来越大的StoreFile,当单个StoreFile大小超过一定阈值后,会触发Split操作,同时把当前Region Split成两个Region,父Region下线,新Split出的两个孩子Region被主Master分配到相应的RegionServer上,使得原先一个Region的压力分配到两个Region上。,Store,每个RegionServer中都有一个 HLog对象,HLog是一个实现Write Ahead Log的类,在每次用户操作写入MemStore的同时,也会写一份数据到HLog文件中,HLog文件定期会滚动出新的,并删除旧的文件(已持久化到StoreFil

14、e中的数据)。Store在系统正常工作的前提下是没有问题的,但是在分布式系统环境中,无法避免系统出错或者宕机,因此一旦RegionServer意外退出,MemStore中的内存数据将会丢失,于是引入了HLog。当RegionServer意外终止后,Master会通过Zookeeper感知到,Master首先会处理遗留的 HLog文件,将其中不同Region的Log数据进行拆分,分别放到相应region的目录下,然后再将失效的region重新分配,领取到这些region的RegionServer在Load Region的过程中,会发现有历史HLog需要处理,因此会Replay HLog中的数据到

15、MemStore中,然后flush到StoreFiles,完成数据恢复。,HLog,RegionServer内部结构示意图,区域服务器“写”,写数据首先写入“预写”日志对于一个区域服务器而言,对其提供服务的所有区域的“写”操作日志都存储在同一个日志中数据并非直接写文件系统,而是先缓存,缓存到一定数量再批量写入写入完成后在日志中做标记,区域服务器“读”,区域服务器在内存的缓存中查找,如果命中请求,则直接服务如果存在多个版本,则返回顺序按照从最新到最老,区域服务器合并,如果映射文件(Map File)数量超过阈值,区域服务器会进行一次合并(Compaction)合并操作也周期性进行合并可与区域服务

16、器响应用户的读写请求并发进行如果读写请求与合并区域相关,读写操作先挂起,直到合并操作完成,区域服务器分割,当区域文件大过阈值后,区域文件会按照行的方式对半进行分割(Split)操作分割也作为一种请求被区域服务器处理被分割区域先离线区域服务器在元信息表中生成子表元信息主服务器在得知分割操作进行后,将子表分配给新的区域服务器进行服务被分割区域通过垃圾回收机制回收如果主服务器没能正确收到分割消息,主服务器可通过定期检查MATA数据发现分割操作开始分割操作后,被分割区域离线,此时客户端能检测到并在分割后的区域上线后重发访问请求,特殊目录数据,元数据(META)全部用户区域的属性数据都存在元数据表中包括

17、区域中数据起止行信息、区域“在线”状态等保存区域服务器地址元数据表也可包含多个区域,区域属性数据存储在“根”结点上,“根”表(ROOT)只包含一个区域将元数据中的区域映射到区域服务器存储元数据服务器位置以及映射了哪些元数据区域,HBase Table和Region的关系,比较类似HDFS File和Block的关系,HBase提供了配套的TableInputFormat和TableOutputFormat API,可以方便的将HBase Table作为Hadoop MapReduce的Source和Sink,对于MapReduce Job应用开发人员来说,基本不需要关注HBase系统自身的细节

18、。,MapReduce on HBase,HBase用例WebTable,WebTable用于存储抓取网页和相关信息每个页面对应一行,是个有百万行的大表要基于此表进行分析与解析并由搜索引擎对关键字进行索引表需要并发地被众多网页抓取程序随机地访问以及更新数据表内容也要作为网页实时缓存被大量用户随机访问,逻辑视图,HBase以表的形式存储数据。表由行和列组成,列划分为若干个列族(row family),Row key是用来检索记录的主键。存储时,数据按照Row key 的字典序(byte order)排序存储。设计 key时,要充分排序存储这个特性,将经常一起读取的行存储放到一起。(位置相关性),

19、数据模型行,行键,列,列,数据模型行,每行数据有一可排序的关键字和任意列项字符串、整数、二进制串甚至与串行化的结构都可以作为行键表按照行键的“逐字节排序”顺序对行进行有序化处理表内数据非常稀疏,不同的行的列的数完全目可以大不相同对数据进行操作时,可以只对一行上“锁”对行的写操作是始终是“原子”的,数据模型列,族,标签,列必须用族(family)来定义任意一列有如下形式“族:标签”其中,族和标签都可为任意形式的串物理上将同“族”数据存储在一起数据通过时间戳区分版本,物理视图,Hbase访问接口,启动bin/hbase shell主要命令create 创建表describe 描述表enable/d

20、isable 表激活/取消drop 删除表get/put 表读写,HBase Shell,Java Client API,HBaseConfigurationaddResource()HTableput()get()ResultScannernext(),Hbase对比传统RDBMS缺点,不支持二级索引;不具有sql/join/跨行跨表等RDBMS特性;,Hbase适用场景,需要存储海量数据(TB级以上);需要具有较高的吞吐量;需要对大数据集合进行高效的随机访问(主键查询);针对于结构化和非结构化的数据存储;不要求满足全部的RDBMS特性的应用需求(跨行/跨表交互,连接查询等)。,Hive 是

21、Facebook 公司的开源项目,它实现在 Hadoop 之上提供一种类似于SQL的查询语言(HQL),使不熟悉MapReduce的用户很方便的利用 SQL语言查询、汇总和分析数据。并且,MapReduce开发人员可以把自己写的mapper 和 reducer作为插件来支持Hive做更复杂的数据分析。,Hive 是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为 MapReduce任务进行运行。其学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。,谢 谢!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号