转载

HBase

HBASE

数据模型

  • 概念图模型

    为了索引一个数据,需要知道其行键+时间戳+列族+列修饰符,也可以形象得认为

    行键+时间戳+列族+列修饰符构成了一个key,我们通过这个key去索引数据

  • 物理视图

    实际存储的时候,hbase是按照列族存储的

hbase是一个稀疏,多维度,分布,排序映射表。

需要强调的几点

  • hbase为什么只能更新数据(数据带有新的时间戳)?

    hbase是构建在hdfs上的,了解hdfs的都知道,hdfs只允许追加数据,不允许删除数据

    所以hbase只能更新数据

  • 为什么hbase会叫排序映射表?

    hbase的行键是按字典序进行排序的。你或许会问这有什么好处呢

    举个例子,google的Webtable的行键是逆序的URL,比如行键com.google.maps/index.html

    其附近存储的是跟它相同域名的URL,这样在分析domain, host等更有效。

  • 为什么hbase实际是按照列族存储的?

    列族中存储的数据一般都是相似的数据,不会跟关系数据库一样一列存储字符串,一列存储整数

    这也是hbase的优点之一。

整体架构

  • HMaster

    HMaster主要的任务就是分配为分配的region,给空闲的region server。监控每个region server是否alive,一旦某个region server崩溃了,可以迅速将崩溃节点的region分配给其他alive的region server

  • Region server

    Region server主要的任务就是管理region.处理来自客服端的读写请求,客户端并不是直接从HMaster上读取数据,而是在获得Region的存储位置信息后,直接从Region服务器上读取数据。

  • Mem Store, HFile,HLog

    Mem Store顾名思义就是存储在内存中的数据。client在写数据的时候,首先会将操作写入HLog(一个Region Server维护一个HLog), 然后写入到Mem store,如果Mem store的数据量达到一定阈值,Mem store中的数据就会convert为HFile,存储在hdfs.再说说HLog,就是一个日志,一旦Region Server崩溃了,通过将Mem store

    HFile数据导入到内存,并且重新执行HLog中的操作,实现快速恢复。

  • Region定位(三层结构)

    zookeeper文件记录了-ROOT-表的位置信息

    ROOT表记录了.META表的Region位置信息,一个ROOT表只能有一个Region

    META表记录了用户数据表的Region位置信息

正文到此结束
本文目录