前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hbase原理详解

Hbase原理详解

作者头像
shengjk1
发布2018-10-24 15:28:02
1K0
发布2018-10-24 15:28:02
举报
文章被收录于专栏:码字搬砖码字搬砖

各位看官,下面跟着小二一起开始hbase原理的冒险之旅吧,坐稳了,go~

先上一张官方图片

这里写图片描述
这里写图片描述

首先指出图片的一个错误,Hlog应该属于HRegionserver的,不应该在HRegion中。

Hbase基本组件说明:

Client 包含访问HBase的接口,并维护cache来加快对HBase的访问,比如region的位置信息 Master 为Region server分配region 负责Region server的负载均衡 发现失效的Region server并重新分配其上的region 管理用户对table的增删改查操作 Region Server Regionserver维护region,处理对这些region的IO请求 Regionserver负责切分在运行过程中变得过大的region Zookeeper作用 通过选举,保证任何时候,集群中只有一个master,Master与RegionServers 启动时会向ZooKeeper注册 存贮所有Region的寻址入口 实时监控Region server的上线和下线信息。并实时通知给Master 存储HBase的schema和table元数据 Zookeeper的引入使得Master不再是单点故障 HLog 该机制用于数据的容错和恢复: 每个HRegionServer中都有一个HLog对象,HLog是一个实现Write Ahead Log的类,在每次用户操作写入MemStore的同时,也会写一份数据到HLog文件中(HLog文件格式见后续),HLog文件定期会滚动出新的,并删除旧的文件(已持久化到StoreFile中的数据)。当HRegionServer意外终止后,HMaster会通过Zookeeper感知到,HMaster首先会处理遗留的 HLog文件,将其中不同Region的Log数据进行拆分,分别放到相应region的目录下,然后再将失效的region重新分配,领取 到这些region的HRegionServer在Load Region的过程中,会发现有历史HLog需要处理,因此会Replay HLog中的数据到MemStore中,然后flush到StoreFiles,完成数据恢复(Region就是StoreFiles,StoreFiles里由HFile构成,Hfile里由hbase的data块构成,一个data块里面又有很多keyvalue对,每个keyvalue里存了我们需要的值。

1.图片解释:

Client写入 -> 存入MemStore,一直到MemStore满 -> Flush成一个StoreFile,直至增长到一定阈值 -> 出发Compact合并操作 -> 多个StoreFile合并成一个StoreFile,同时进行版本合并和数据删除 -> 当StoreFiles Compact后,逐步形成越来越大的StoreFile -> 单个StoreFile大小超过一定阈值后,触发Split操作,把当前Region Split成2个Region,Region会下线,新Split出的2个孩子Region会被HMaster分配到相应的HRegionServer 上。HBase只是增加数据,有所得更新和删除操作,都是在Compact阶段做的,所以,用户写操作只需要进入到内存即可立即返回,从而保证I/O高性能。

2.对应关系

Hbase为列式存储,table中所有行按照rowkwy字典顺序排列。table在行方向上分割成多个HRegion,一个HRegion对应一到多行。不同Region可以分到不同的RegionServer上(RegionServer对应着物理节点),另外同一个HRegion不会拆分到不同的RegionServer上。一个Hregion有一到多个Store组成,每个Store对应一个Columns Family。每一个Store有一个MemStore和0至多个StoreFIle组成,StoreFile以HFile存储到HDFS上

3.注意

上图中有个细节那就是HFile对应着HDFS Client,换句话说HFile是通过HDFS Client 写到HDFS上的,满足HDFS文件的所有性质

4.重点说明一下Client通过Zookeeper寻址的过程

图1:

这里写图片描述
这里写图片描述

Client访问流程 Client -> Zookeeper -> -ROOT- -> .META. -> 用户数据表 hbase 的数据字典: -ROOT- .META. 这俩表被hbase shell 的list 命令过滤掉,不显示,但是他们跟普通的hbase TABLE 是一样的。 .META.  表包含所有的用户空间region列表,同时,以及RegionServer的服务器地址,.META.也可以有多个region -ROOT- 记录.META.表的Region的路径信息,但是,-ROOT-只有一个region Zookeeper存储了-ROOT-表的地址和HMaster的地址,HRegionServer也会把自己以Ephemeral方式注册到Zookeeper中,使得HMaster可以随时感知到各个HRegionServer的健康状态(这也就是为什么官方图中zk会去连接HMaster)。 所以Client先连接zk,找到- ROOT-表的位置(meta-region-server),然后去Hbase中找到这张表根据TableName、startkey找到相应的regoninfo,从而找到相应的.META.的Region所在的Regionserver,从而找到目标表的信息,最后去访问目标表 需要注意的是:整个过程中并没有涉及到MasterServer,也就是说HBase日常的数据操作并不需要MasterServer,不会造成MasterServer的负担。 未启动hbase

这里写图片描述
这里写图片描述

启动hbase

这里写图片描述
这里写图片描述

图二:

这里写图片描述
这里写图片描述

首先是RowKey,RowKey由三部分组成:TableName, StartKey 和 TimeStamp。RowKey存储的内容我们又称之为Region的Name。 表中最主要的Family:info,info里面包含三个Column:regioninfo, server, serverstartcode。其中regioninfo就是Region的详细信息,包括StartKey, EndKey 以及每个Family的信息等等。server存储的就是管理这个Region的RegionServer的地址。 所以当Region被拆分、合并或者重新分配的时候,都需要来修改这张表的内容。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年07月28日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档