学习自:https://www.shiyanlou.com/courses/running
1 Hadoop EcoSystem中的各层系统: 其中 HBase位于结构化存储层, Hadoop HDFS为HBase提供了高可靠性的底层存储支持, Hadoop MapReduce为HBase提供了高性能的计算能力, Zookeeper为HBase提供了稳定服务和failover机制。
此外 Pig和Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单。 Sqoop则为HBase提供了方便的RDBMS数据导入功能,使得传统数据库数据向HBase中迁移变的非常方便。
2.HBASE历史 Apache HBase最初是Powerset公司为了处理自然语言搜索产生的海量数据而开展的项目。
- 行健(Row Key):表的主键,表中的记录默认按照行健升序排序
- 时间戳(Timestamp):每次数据操作对应的时间戳,可以看作是数据的版本号
- 列族(Column Family):表在水平方向有一个或者多个列族组成,一个列族中可以由任意多个列组成,列族支持动态扩展,无需预先定义列的数量以及类型,所有列均以二进制格式存储,用户需要自行进行类型转换。所有的列族成员的前缀是相同的,例如“abc:a1”和“abc:a2”两个列都属于abc这个列族。
- 表和区域(Table&Region):当表随着记录数不断增加而变大后,会逐渐分裂成多份,成为区域,一个区域是对表的水平划分,不同的区域会被Master分配给相应的RegionServer进行管理
- 单元格(Cell):表存储数据的单元。由{行健,列(列族:标签),时间戳}唯一确定,其中的数据是没有类型的,以二进制的形式存储。
如上图所示,HBase架构中只有一个Master节点,称HMaster,还有多台RegionServer成为HRegionServer,每个RegionServer包含多个Region。
- HBase访问接口:Java,REST,Thrift等
- Master:集群的管理服务器,为RegionServer分配Region,负责RegionServer的负载均衡,处理schema更新请求
- RegionServer:管理HBase的数据存储,维护Region,处理IO请求。
- Zookeeper:保证集群的高可用性、存储Region的寻址入口,并实时监控RegionServer的状态,存储HBase的Schema。
可以看到,client访问hbase上数据的过程并不需要Master参与(寻址访问Zookeeper和RegionServer,数据读写访问RegionServer),Master仅仅维护Table和Region的元数据信息,负载很低。
5. HBase存储格式HBase中的所有数据文件都存储在Hadoop HDFS文件系统上,主要包括上述提出的两种文件类型:
- HFile, HBase中KeyValue数据的存储格式,HFile是Hadoop的二进制格式文件,实际上StoreFile就是对HFile做了轻量级包装,即StoreFile底层就是HFile
- HLogFile,HBase中WAL(Write Ahead Log) 的存储格式,物理上是Hadoop的Sequence File