HBase技术平台详解_第1页
HBase技术平台详解_第2页
HBase技术平台详解_第3页
HBase技术平台详解_第4页
HBase技术平台详解_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、技术创新,变革未来HBase技术平台详解内容HBase物理结构HBase表物理存储 HBase容错HBase读写过程HBase访问接口HBase物理结构HBase物理结构Hadoop HDFS为HBase提供了高可靠的底 层存储支持HBase中所有数据文件存储在HDFS,主要 有两种文件类型:HFile:Hadoop的二进制格式文件,存储KeyValue数据Hlog:HBase中WAL(Write Ahead Log) 的 存储格式,物理上是Hadoop的Sequence FileStoreFile是对HFile的轻量级包装,即StoreFile底层就是HFileHBase表物理存储重要概念R

2、egionStoreMemStoreStoreFileHFileHLogHBase表物理存储RegionTable中所有行都按照rowkey的 字典序排序Table 在行方向上分为多个RegionHBase表物理存储RegionHBase表物理存储Region行按照行键的字典序排列表在行的方向上分割为多个RegionRegion按大小可以分割每个表一开始只有一个Region随着数据不断插入,Region不断增大,增 大到一定阈值,Region会等分为两个新的 Region当表中的行不断增多,就会有越来越多的RegionHBase表物理存储RegionHBase表物理存储RegionHBase表

3、物理存储RegionRegion是HBase中分布式存储的最小单元,不是存储的最小单元不同的Region可以分布在不同的RegionServer上一个Region不会拆分到多个RegionServer上Region是HBase中负载均衡的最小单元HBase表物理存储StoreHBase表物理存储StoreRegion由一个或者多个Store组成,每个Store保存一个column family每个Store又由一个MemStore和0至多个StoreFile组成MemStore存储在内存中StoreFile以HFile格式保存在HDFS上HBase表物理存储StoreHBase表物理存储Sto

4、re用户写入的数据首先放入MemStoreMemStore满了会Flush成一个StoreFile(底层实 现是HFile)StoreFile文件数量增长到一定阈值,会触发 Compact操作,将多个StoreFile合并成一个 StoreFile合并过程会进行版本合并和数据删除HBase只增加数据,所有更新和删除都是在后续 的compact过程中进行的用户写操作只要进入内存就可以立即返回,保证 了HBase I/O的高性能HBase表物理存储HFile重点有如下几个部分:Trailer:定长的,通过指针指向其他数据块Data Block Index段:索引,每个Data Block第一条记录

5、的 key保存在其中Data Block段:保存表中数据,可以被压缩HBase表物理存储HFileData Block:HBase I/O的基本单元,RegionServer中有基于LRU的 Block Cache机制每个Data Block除了开头的Magic外就是一个个KeyValue对,Magic内 容是一些随机数字,为了识别数据损坏每个Data Block大小在创建Table时通过参数指定HBase表物理存储HFile读取一个HFile,先读取Trailer,Trailer保存了Data Block Index的起始位置Data Block Index被读取到内存,检索某个key时,不

6、需要扫描整个HFile,只需从内存中找到key所在的Data Block通过一次磁盘IO将整个Data Block读取到内存中,再找到 需要的KeyValueHBase表物理存储HFile每个KeyValue对就是一个byte数组开始是两个固定长度数值,分别表示Key长度和Value长度Key部分:RowKey长度(固定数值),RowKey,Family 长度(固定数值),Family,Qualifier,Time Stamp, KeyType(Put/Delete)Value部分:没有复杂的结构,纯粹的二进制数据HBase表物理存储HLogHLog:RegionServer插入和删除过程记录

7、操作内 容的日志HBase表物理存储HLogHLog 物理上是Hadoop的Sequence FileKey中记录了Table、Region名字和timestamp(写入时间)Value是HFile中的KeyValueHBase表物理存储HLogHLog是Write Ahead Log,做灾难恢复,记录数 据所有变更每个RegionServer上所有Region维护一个HLog,不是每个Region一个不同Region日志混在一起,只追加单个文件,数 据按到达顺序写入,减少磁盘寻址次数,提供最 好的IOHLog文件会定期删除(已持久化到StoreFile中的 数据)HBase表物理存储HLog

8、 ReplayRegionServer挂掉,MemStore中数据会丢失Master通过Zookeeper感知到RegionServer故障Master将不同Region的Log数据进行拆分,并将 失效的Region重新分配领取到待恢复Region的RegionServer在Load Region时,会Replay HLog中的数据到 MemStoreHBase表物理存储 Compact And SplitStoreFile Compact后,会形成越来越大的 StoreFile单个StoreFile大小超过一定阈值后,会触发Split,把当前Region Split成2个Region父Reg

9、ion会下线,新Split出的2个Region会被Master分配到相应的RegionServer上原先1个Region的压力会分流到2个Region上HBase表物理存储MemStore:数据修改先保持内存,达到指定大小 后将修改批量写入磁盘,性能大大提升HFile:数据索引 ,只有索引才能高效读BlockCache:读取时先看是否命中内存,否则访 问磁盘文件HLog:面对故障的数据持久化,通过顺序写解决 磁盘随机写问题Compact And Split:解决文件个数过多和文件过 大问题问题Region和Table的关系Region和RegionSever的关系Region中Store个数是

10、由什么决定的MemStore和StoreFile什么关系HLog做什么用HBase容错HBase容错RegionServer上线会在Zookeeper中注册自己定时向Zookeeper汇报心跳Master会订阅Server变更消息,感知各个Server健康状态Master会向该Server迁移RegionHBase容错RegionServer下线Zookeeper自动释放此Server的独占锁Master收到Server下线的通知Master将该Server上的Region重新分配到 其他Server上Master分割失效Server上“预写”日志并发送 给新的ServerHBase容错Mas

11、ter上线从Zookeeper上获取一个代表主Master的锁,用来阻止其它Master成为主Master扫描Zookeeper上的Server目录,获得当前 可用的Server列表和每个Server通信,获得当前已分配的Region和Server的对应关系扫描.META.Region的集合,计算得到当前 还未分配的Region,将他们放入待分配 Region列表HBase容错Master下线Master只维护表和Region的元数据,表数 据读写还可以正常进行Master下线仅导致所有元数据修改被冻结无法创建删除表无法进行Region的负载均衡无法处理Region上下线Zookeeper重新

12、选择一个主MasterHBase容错HDFSMasterRegionServerZookeeperHBase读写过程HBase读写过程HBase读写过程客户端发起Put请求,写入WriteBuffer,如果是批 量提交,写满缓存后自动提交客户端根据Rowkey将put分发给不同RegionServerRegionServer将put按Rowkey分给不同的RegionRegion首先把数据写入WALWAL写入成功后,把数据写入MemStoreMemStore写完后,检查MemStore大小是否达到 flush阈值如果达到flush阈值,将MemStore写入HDFS,生 成HFile文件HBa

13、se读写过程使用MemStore和StoreFile存储对表的更新更新时首先写入HLog和MemStore(数据是排序的)当MemStore到一定阈值,创建一个新的 MemStore,将老的MemStore flush到磁盘,生成 一个StoreFile系统会在Zookeeper中记录一个Redo Point,表示 这个时刻之前的变更已经持久化了系统出现故障,导致MemStore中的数据丢失,此 时使用HLog来恢复数据HBase读写过程StoreFile是只读文件,创建后不可修改HBase的更新和删除其实是不断追加当StoreFile文件数达到一定的阈值后,就会 进行一次合并(compact

14、),形成一个大的 StoreFile,并执行修改和删除操作当StoreFile大小达到一定阈值后,会对StoreFile进行Split,等分为两个StoreFileHBase读写过程读请求时,需要访问Store中全部的 StoreFile和MemStore,将他们按照 Rowkey进行合并StoreFile和MemStore都是经过排序的,并 且StoreFile带有内存索引,合并过程比较快问题如何高效返回客户端,数据已写入完成数据更新和删除是在什么时候做的数据的读取为什么会比较快HBase访问接口Native Java API:最常规和高效的访问方式HBase Shell:HBase命令行工具,最简单的接口,适合 HBase管理用Thrift Gateway:利用Thrift序列化技术,支持C+,PHP,Python等多种语言,适合其他异构系统在线访问HBase 数据REST Gateway:支持REST风格的Http API访问HBaseHBase Shell进入hbase shell终端:hbase shell创建表: create 表名, 列族名1,列族名2,列族名N添加记录: put 表名,

温馨提示

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

评论

0/150

提交评论