《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》
(2)单元格是有版本的;
(3)cell的内容是未解析的字节数组;
(4)cell由_{row_ key, column( = +), version} 唯一确定的单元。
(5)cell中的数据是没有类型的,全部是字节码形式存贮。
3、RowKey
(1)决定一行数据,按行检索数据,相当于一级索引
(2) 按照字典顺序排序的,说明数据是有序的
(3)只能存储64k的字节数据,RowKey越短越好
4、 列族(Column Family)
(1)HBase表中的每个列都归属于某个列族,列族必须作为表模式(schema)定义的一部分预先给出。如 create ‘tb’, ‘f’;
列名以列族作为前缀,每个“列族”都可以有多个列(column);如f:a, f:b, 新的列族成员(列)可以随后按需、动态加入;
(2)权限控制、存储以及调优都是在列族层面进行的;
(3)HBase把同一列族里面的数据存储在同一目录下,由几个文件保存。
5、时间戳(Timestamp)
(1)在HBase每个cell存储单元对同一份数据可以有多个版本,根据唯一的时间戳来区分每个版本之间的差异,不同版本的数据按照时间倒序排序,最新的数据版本排在最前面。
(2)时间戳的类型是 64位整型,一般由HBase(在数据写入时自动)赋值,此时时间戳是精确到毫秒的当前系统时间。
时间戳也可以由客户显式赋值,如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。
三、hbase架构
===================================================================
1、Client
提供了访问HBase的一系列API接口,如Java Native API、Rest风格http API、Thrift API、scala等,并维护cache来加快对HBase的访问
2、Zookeeper
(1)保证任何时候,集群中只有一个master
(2)存贮所有Region的寻址入口。
(3)实时监控Region server的上线和下线信息,并实时通知Master
(4)存储HBase的schema和table元数据
如下:replication下存副本节点信息,meta-region-server存region server元数据信息,rs下regionserver节点信息,backup-masters存backup-masters节点信息,不在详细说明,顾名思义。
[zk: localhost:2181(CONNECTED) 11] ls /hbase
[replication, meta-region-server, rs, splitWAL, backup-masters, table-lock, flush-table-proc, region-in-transition, online-snapshot, master, running, recovering-regions, draining, namespace, hbaseid, table]
3、Master
(1)为Region server分配region
(2)负责Region server的负载均衡
(3)发现失效的RegionServer并重新分配其上的region
(4)管理用户对table的增删改操作
4、RegionServer
(1)Region server维护region,处理对这些region的IO请求,向HDFS文件系统中读写数据。
一个RegionServer由多个region组成,一个region由多个store组成,一个store对应一个CF(列族),而一个store包括位于内存中的memstore和位于磁盘的storefile,每个storefile以HFile格式保存在HDFS上。写操作先写入memstore,当memstore中的数据达到某个阈值时,RegionServer会启动flashcache进程写入storefile,每次写入形成单独的一个storefile。
(2)Region server负责切分在运行过程中变得过大的region