一、写在前面
最近在整理HBase相关的资料,发现国外一篇通俗易懂、深入浅出的博客介绍了HBase系统架构。本文摘录部分核心内容,欢迎有兴趣的读者点击这里查看原文。在阅读本文前,读者可以尝试回答以下几个问题:
- HBase数据存储分布
- Zookeeper的作用
- 数据写入过程
- 数据读取过程
- 为什么rowkey长度不要太长
- HBase有哪些缓存
- HBase有哪些索引
如果对上述问题你的回答不够肯定,那么相信你适合阅读本文。
二、HBase系统架构
1. 数据分布模型
HBase数据分布包括两个层次,第一层是rowkey映射到region,第二层是region映射到region server。数据按rowkey划分到region,称作数据的逻辑分布;region划分到region server,称作数据的物理分布。
数据的逻辑分布,即rowkey和region的映射关系,存储在META表中。META表也存储在HBase组件中,META表本身的路由信息存储在Zookeeper中。我们可以在HBase shell查看meta表的内容:
hbase(main):005:0> scan 'hbase:meta', {LIMIT => 2}
ROW COLUMN+CELL
{TABLE_1},,1523349450016.c6522f2 column=info:regioninfo, timestamp=1523349448880, value={ENCODED => c6522f24717378b8edd013463b9282d9, NAME => 'KOL_PANEL_ARTICLE_201701,,152334
4717378b8edd013463b9282d9. 9450016.c6522f24717378b8edd013463b9282d9.