3.试述HDFS中的块和普通文件系统中的块的区别。
答:在传统的文件系统中,为了提高磁盘读写效率,一般以数据块为单位,恶如不是以字节为单位。
HDFS中的块,默认一个块大小为64MB,而HDFS中的文件会被拆分成多个块,每个块作为独立的单元进行存储。HDFS在块的大小的设计上明显要大于普通文件系统。
4.试述HDFS中的名称节点和数据节点的具体功能。
答:名称节点负责管理分布式文件系统系统的命名空间,记录分布式文件系统中的每个文件中各个块所在的数据节点的位置信息;
数据节点是分布式文件系统HDFS的工作节点,负责数据的存储和读取,会根据客户端或者是名称节点的调度来进行数据的存储和检索,并向名称节点定期发送自己所存储的块的列表。
hadoop fs -ls
hadoop fs -cat
hadoop fs -mkdir
hadoop fs -get [-ignorecrc] [-crc] 复制指定的文件到本地文件系统指定的文件或文件夹。-ignorecrc选项复制CRC校验失败的文件。使用-crc选项复制文件以及CRC信息。
hadoop fs -put 从本地文件系统中复制指定的单个或多个源文件到指定的目标文件系统中。也支持从标准输入(stdin)中读取输入写入目标文件系统。
hadoop fs -rmr
第四章
1.试述在Hadoop体系架构中HBase与其他组成部分的相互关系。
答: HBase利用Hadoop MapReduce来处理HBase中的海量数据,实现高性能计算;利用Zookeeper作为协同服务,实现稳定服务和失败恢复;使用HDFS作为高可靠的底层存储,利用廉价集群提供海量数据存储能力; Sqoop为HBase的底层数据导入功能,Pig和Hive为HBase提供了高层语言支持,HBase是BigTable的开源实现。
2.请阐述HBase和BigTable的底层技术的对应关系
答:
项目 |
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数据模型。
|
Info |
||
Name |
Major |
||
201505001 |
Luo Min |
Math |
Luo@qq.com |
201505002 |
Liu Jun |
Math |
liu@qq.com |
201505003 |
Xie You |
Math |
xie@qq.com you@163.com |
6.分别解释HBase中行键、列键和时间戳的概念
行键是唯一的,在一个表里只出现一次,否则就是在更新同一行,行键可以是任意的字节数组。
列族需要在创建表的时候就定义好,数量也不宜过多。列族名必须由可打印字符组成,创建表的时候不需要定义好列。
时间戳,默认由系统指定,用户也可以显示设置。使用不同的时间戳来区分不同的版本。
7.请举个实例来阐述HBase的概念视图和物理视图的不同
HBase数据概念视图
行键 |
时间戳 |
列族contents |
列族anchor |
“com.cnn.www” |
T5 |
|
Anchor:cnnsi.com=”CNN” |
T3 |
|
Anchor:my.look.ca=”CNN” |
|
“com.cnn.www” |
T3 |
Content:html=”<html>...” |
|
T2 |
Content:html=”<html>...” |
|
|
T1 |
Content:html=”<html>...” |
|
HBase数据物理视图
行键 |
时间戳 |
列族anchor |
“com.cnn.www” |
T5 |
Anchor:cnnsi.com=”CNN” |
T4 |
Anchor:my.look.ca=”CNN” |
行键 |
时间戳 |
列族contents |
“com.cnn.www” |
T3 |
Content:html=”<html>...” |
T2 |
Content:html=”<html>...” |
|
T1 |
Content:html=”<html>...” |
在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的三层结构中各层次的名称和作用。
层次 |
名称 |
作用 |
第一层 |
Zookeeper文件 |
记录了-ROOT-表的位置信息 |
第二层 |
-ROOT-表 |
记录了.META.表的Region位置信息 -ROOT-表只能有一个Region。通过-ROOT-表,就可以访问.META.表中的数据 |
第三层 |
.META.表 |
记录了用户数据表的Region位置信息,.META.表可以有多个Region,保存了HBase中所有用户数据表的Region位置信息 |
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文件,其中,H