我们都知道Hbase是一个构建在HDFS上的分布式列存储系统。Hbase主要用于海量数据的结构化存储。
Hbase是构建在HDFS上,可以使用MapReduce直接操作,或者使用直接使用。
Hbase的所有的操作都是基于rowkey的 支持put,get,scan多行操作支持,scan,multiput
每一个列族存储在HDFS上的一个单独文件上,Hfile中。
Hbase实际上是维护了一个多级索引:
<key,column family,column name,timestamp>
Region按大小进行分割,每一个表开始只有一个Region,随着数据的增多,Region不断增大,当增大到一个阈值时,Region就会分割为两个Region,以及更多Region.
同时Region是Hbase中分布式存储的最小单位,不同的Region分布到不同的RegionServer上。
每一个Store又包括memStore和StoreFile组成。
包含访问HBase的接口,并维护cache来加快对HBase的访问。
保证任何时候,集群中只有一个master 存贮所有Region的寻址入口,实时监控Region server的上线和下线信息。并实时通知给Master ,存储HBase的schema和table元数据。
为Region server分配region ,负责Region server的负载均衡,发现失效的Region server并重新分配其上的region ,管理用户对table的增删改查操作。
Region server维护region,处理对这些region的IO请求 Region server负责切分在运行过程中变得过大的region
write-ahead-log,预先写日志,指的是在写数据的时候,先写Log这样当写Region失败后可以进行找回。
Master容错:Zookeeper重新选择一个新的Master 无Master过程中,数据读取仍照常进行; 无master过程中,region切分、负载均衡等无法进行;
RegionServer容错:定时向Zookeeper汇报心跳,如果一旦时 间内未出现心跳 Master将该RegionServer上的Region重新分配到其他RegionServer上;
失效服务器上“预写”日志由主服务器进行分割并派送给新的 RegionServer
Zookeeper容错:Zookeeper是一个可靠地服务 一般配置3或5个Zookeeper实例。