1.试述在Hadoop体系架构中HBase与其他组成部分的相互关系

答: HBase利用Hadoop MapReduce来处理HBase中的海量数据,实现高性能计算;利用Zookeeper作为协同服务,实现稳定服务和失败恢复;使用HDFS作为高可靠的底层存储,利用廉价集群提供海量数据存储能力; Sqoop为HBase的底层数据导入功能,Pig和Hive为HBase提供了高层语言支持,HBase是BigTable的开源实现。

2.试述在Hadoop体系架构中HBase与其他组成部分的相互关系

答:

项目 BigTable HBase
文件存储系统 GFS HDFS
海量数据处理 MapReduce Hadoop MapReduce
协同服务管理 Chubby Zookeeper

3.请阐述HBase和传统关系数据库的区别

区别 传统关系数据库 HBase
数据类型 关系模型 数据模型
存储模式 基于行模式存储,元组或行会被连续地存储在磁盘也中 基于列存储,每个列族都由几个文件保存,不同列族的文件是分离的
数据索引 针对不同列构建复杂的多个索引 只有一个行键索引
数据维护 用最新的当前值去替换记录中原来的旧值 更新操作不会删除数据旧的版本,而是生成一个新的版本
可伸缩性 很难实现横向扩展,纵向扩展的空间也比较有限 轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩

4.HBase有哪些类型的访问接口?

答:HBase提供了Native Java API , HBase Shell , Thrift Gateway , REST GateWay , Pig , Hive 等访问接口。

5.请以实例说明HBase数据模型。

大数据技术原理与应用之【HBase】习题_HBase教程

6.分别解释HBase中行键、列键和时间戳的概念

        行键是唯一的,在一个表里只出现一次,否则就是在更新同一行,行键可以是任意的字节数组。

        列族需要在创建表的时候就定义好,数量也不宜过多。列族名必须由可打印字符组成,创建表的时候不需要定义好列。

        时间戳,默认由系统指定,用户也可以显示设置。使用不同的时间戳来区分不同的版本。

7.请举个实例来阐述HBase的概念视图和物理视图的不同

HBase数据概念视图
大数据技术原理与应用之【HBase】习题_HBase教程_02
HBase数据物理视图

大数据技术原理与应用之【HBase】习题_HBase教程_03
在HBase的概念视图中,一个表可以视为一个稀疏、多维的映射关系。

在物理视图中,一个表会按照属于同一列族的数据保存在一起。

8.试述HBase各功能组建及其作用。

(1)库函数:链接到每个客户端;

(2)一个Master主服务器:主服务器Master主要负责表和Region的管理工作;

(3)许多个Region服务器:Region服务器是HBase中最核心的模块,负责维护分配给自己的Region,并响应用户的读写请求

9.请阐述HBase的数据分区机制。

答: HBase采用分区存储,一个大的表会被分拆许多个Region,这些Region会被分发到不同的服务器上实现分布式存储。

10.HBase中的分区是如何定位的。

答: 通过构建的映射表的每个条目包含两项内容,一个是Regionde 标识符,另一个是Region服务器标识,这个条目就标识Region和Region服务器之间的对应关系,从而就可以知道某个Region被保存在哪个Region服务器中。

11.试述HBase的三层结构中各层次的名称和作用。

大数据技术原理与应用之【HBase】习题_HBase教程_04

12.请阐述HBase的三层结构下,客户端是如何访问到数据的。

答:首先访问Zookeeper,获取-ROOT表的位置信息,然后访问-Root-表,获得.MATA.表的信息,接着访问.MATA.表,找到所需的Region具体位于哪个Region服务器,最后才会到该Region服务器读取数据。

13.试述HBase系统基本架构以及每个组成部分的作用。

(1)客户端

客户端包含访问HBase的接口,同时在缓存中维护着已经访问过的Region位置信息,用来加快后续数据访问过程

(2)Zookeeper服务器

Zookeeper可以帮助选举出一个Master作为集群的总管,并保证在任何时刻总有唯一一个Master在运行,这就避免了Master的“单点失效”问题

(3)Master

主服务器Master主要负责表和Region的管理工作:管理用户对表的增加、删除、修改、查询等操作;实现不同Region服务器之间的负载均衡;在Region分裂或合并后,负责重新调整Region的分布;对发生故障失效的Region服务器上的Region进行迁移

(4)Region服务器

Region服务器是HBase中最核心的模块,负责维护分配给自己的Region,并响应用户的读写请求

14.请阐述Region服务器向HDFS文件系统中读写数据的基本原理。

Region服务器内部管理一系列Region对象和一个HLog文件,其中,HLog是磁盘上面的记录文件,它记录着所有的更新操作。每个Region对象又是由多个Store组成的,每个Store对象了表中的一个列族的存储。每个Store又包含了MemStore和若干个StoreFile,其中,MemStore是在内存中的缓存。

15.试述HStore的工作原理

每个Store对应了表中的一个列族的存储。每个Store包括一个MenStore缓存和若干个StoreFile文件。MenStore是排序的内存缓冲区,当用户写入数据时,系统首先把数据放入MenStore缓存,当MemStore缓存满时,就会刷新到磁盘中的一个StoreFile文件中,当单个StoreFile文件大小超过一定阈值时,就会触发文件分裂操作。

16.试述HLog的工作原理

答:HBase系统为每个Region服务器配置了一个HLog文件,它是一种预写式日志(Write Ahead Log),用户更新数据必须首先写入日志后,才能写入MemStore缓存,并且,直到MemStore缓存内容对应的日志已经写入磁盘,该缓存内容才能被刷写到磁盘。

17.在HBase中,每个Region服务器维护一个HLog,而不是为每个Region都单独维护一个HLog。请说明这种做法的优缺点。

优点: 多个Region对象的更新操作所发生的日志修改,只需要不断把日志记录追加到单个日志文件中,不需要同时打开、写入到多个日志文件中。

缺点:如果一个Region服务器发生故障,为了恢复其上次的Region对象,需要将Region服务器上的对象,需要将Region服务器上的HLog按照其所属的Region对象进行拆分,然后分发到其他Region服务器上执行恢复操作。

18.当一台Region服务器意外终止时,Master如何发现这种意外终止情况?为了恢复这台发生意外的Region服务器上的Region,Master应该做出哪些处理(包括如何使用HLog进行恢复)?

Zookeeper会实时监测每个Region服务器的状态,当某个Region服务器发生故障时,Zookeeper会通知Master。

Master首先会处理该故障Region服务器上面遗留的HLog文件,这个遗留的HLog文件中包含了来自多个Region对象的日志记录。

系统会根据每条日志记录所属的Region对象对HLog数据进行拆分,分别放到相应Region对象的目录下,然后,再将失效的Region重新分配到可用的Region服务器中,并把与该Region对象相关的HLog日志记录也发送给相应的Region服务器。

Region服务器领取到分配给自己的Region对象以及与之相关的HLog日志记录以后,会重新做一遍日志记录中的各种操作,把日志记录中的数据写入到MemStore缓存中,然后,刷新到磁盘的StoreFile文件中,完成数据恢复。