1.HBase与其他组集成部分的相互关系;
2.阐述HBase和BigTable的底层技术对应关系;
3.阐述HBase和传统关系型数据库的区别;
4.HBase有哪些类型的访问接口;
5.分别解释HBase中行键、列键和时间戳的概念;
6.试述HBase的三层结构中各层次的名称和作用。
1.解:
HBase利用Hadoop MapReduce来处理HBase中的海量数据,实现高性能计算;利用Zookeeper作为协同服务,实现稳定服务和失败恢复;使用HDFS作为高可靠的底层存储,利用廉价集群提供海量数据存储能力;Sqoop为HBase的底层数据导入功能,Pig和Hive提供了高层语言支持,Hbase是BigTable的开源实现。
2.解:
a、从文件存储系统来看,BigTable使用GFS,HBase使用HDFS;
b、从海量数据处理来看,BigTable使用MapReduce,HBase使用Hadoop MapReduce;
c、从协同服务管理来看,BigTable使用Chubby,HBase使用Zookeeper。
3.解:
a、从数据类型来看,传统关系数据库使用关系模型,HBase使用数据模型。
b、从数据操作来看,传统关系数据库可以插入、删除、更新、查询和多表连接,而HBase可以插入、查询、删除、清空,但是无法实现表与表之间的关联。
c、从存储模式来看,传统关系数据库基于行模式存储,元组或行会被连续地存储在磁盘中,HBase基于列存储,每个列族都由几个文件保存,不同列族的文件是分离的。
d、从数据索引来看,传统关系数据库针对不同列构建复杂的多个索引,而HBase只有一个行键索引。
e、从数据维护来看,传统关系数据库用最新的当前值去替换记录中原有的旧值,HBase更新操作不会删除数据旧的版本,而是生成一个新的版本。
f、从可伸缩性来看,传统关系数据库很难实现横向拓展,拓展的空间也比较有限,HBase轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩。
4.解:
HBase提供了Native Java API, HBase Shell, Thrift Gateway, REST GateWay, Pig, Hive等访问接口。
5.解:
a、行键是唯一的,在一个表里只出现一次,否则就是在更新同一行,行键可以是任意的字节数组。
b、列族需要在创建表的时候就定义好,数量也不宜过多。列族名必须由可打印字符组成,创建表的时候不需要定义好列。
c、时间戳,默认由系统指定,用户也可以显式设置。使用不同的时间戳来区分不同的版本。
6.解:
第一层,Zookeeper文件,记录了-ROOT-表的位置信息。
第二层,-ROOT-表,记录了.META.表的Region位置信息。-ROOT-表只能有一个Region。通过-ROOT-表,就可以访问.META.表中的数据。
第三层,.META.表,记录用户数据表的Region位置信息,.META.表可以有多个Region,保存了HBase中所有用户数据表的Region位置信息。