标签:zookeeper tor http scan src 技术 系统 org mil
一个典型的Hbase Table 表如下:
Row Key
是用来检索记录的主键。想要访问HBase Table中的数据,只有以下三种方式:
Row Key
进行访问;Row Key
可以是任意字符串,存储时数据按照Row Key
的字典序进行排序。这里需要注意以下两点:
HBase表中的每个列,都归属于某个列族。列族是表的Schema的一部分,所以列族需要在创建表时进行定义。列族的所有列都以列族名作为前缀,例如courses:history
,courses:math
都属于courses
这个列族。
列限定符,你可以理解为是具体的列名,例如courses:history
,courses:math
都属于courses
这个列族,它们的列限定符分别是history
和math
。需要注意的是列限定符不是表Schema的一部分,你可以在插入数据的过程中动态创建列。
HBase中的列由列族和列限定符组成,它们由:
(冒号)进行分隔,即一个完整的列名应该表述为列族名 :列限定符
。
Cell
是行,列族和列限定符的组合,并包含值和时间戳。你可以等价理解为关系型数据库中由指定行和指定列确定的一个单元格,但不同的是HBase中的一个单元格是由多个版本的数据组成的,每个版本的数据用时间戳进行区分。
HBase 中通过row key
和column
确定的为一个存储单元称为Cell
。每个Cell
都保存着同一份数据的多个版本。版本通过时间戳来索引,时间戳的类型是 64位整型,时间戳可以由HBase在数据写入时自动赋值,也可以由客户显式指定。每个Cell
中,不同版本的数据按照时间戳倒序排列,即最新的数据排在最前面。
HBase Table中的所有行按照Row Key
的字典序排列。HBase Tables 通过行键的范围(row key range)被水平切分成多个Region
, 一个Region
包含了在start key 和 end key之间的所有行。
每个表一开始只有一个Region
,随着数据不断增加,Region
会不断增大,当增大到一个阀值的时候,Region
就会等分为两个新的Region
。当Table中的行不断增多,就会有越来越多的Region
。
Region
是HBase中分布式存储和负载均衡的最小单元。这意味着不同的Region
可以分布在不同的Region Server
上。但一个Region
是不会拆分到多个Server上的。
Region Server
运行在HDFS的DataNode上。它具有以下组件:
最近最少使用原则
清除多余的数据。Region Server存取一个子表时,会创建一个Region对象,然后对表的每个列族创建一个Store
实例,每个Store
会有 0 个或多个StoreFile
与之对应,每个StoreFile
则对应一个HFile
,HFile 就是实际存储在HDFS上的文件。
HBase系统遵循Master/Salve架构,由三种不同类型的组件组成:
Zookeeper
Master
Region Server
HBase使用ZooKeeper作为分布式协调服务来维护集群中的服务器状态。 Zookeeper负责维护可用服务列表,并提供服务故障通知等服务:
更为详细写入流程可以参考:HBase - 数据写入流程解析
以下是客户端首次读写HBase上数据的流程:
META
表所在的Region Server;META
表所在的Region Server,从META
表中查询到访问行键所在的Region Server,之后客户端将缓存这些信息以及META
表的位置;如果再次读取,客户端将从缓存中获取行键所在的Region Server。这样客户端就不需要再次查询META
表,除非Region移动导致缓存失效,这样的话,则将会重新查询并更新缓存。
注:META
表是HBase中一张特殊的表,它保存了所有Region的位置信息,META表自己的位置信息则存储在ZooKeeper上。
更为详细读取数据流程参考:
本篇文章内容主要参考自官方文档和以下两篇博客,图片也主要引用自以下两篇博客:
官方文档:
更多大数据系列文章可以参见个人 GitHub 开源项目: 大数据入门指南
标签:zookeeper tor http scan src 技术 系统 org mil
原文地址:https://www.cnblogs.com/danrenying/p/11079855.html