** 本专栏的Hadoop复习计划文章内容主要包含以下几个部分:
【简单】学习通习题
【进阶】课本课后练习
【操作】相关章节实验回顾
让我们开始吧!
学习通 - 习题
1. HBase是什么类型的数据库
A.关系数据库
B.文档数据库
C.行式数据库
D.列式数据库
我的答案:D
解析:
【关系数据库】
- 采用了关系模型来组织数据的数据库
- 举例:mysql、SQLite、Oracle 等
【文档数据库】
- 用于管理文档
- 在文档数据库中,文档是处理信息的基本单位
- 一个文档相当于关系数据库中的一条记录
- 举例:MongoDB 等
【行式数据库】
- 数据是按行存储的
- 建立索引和视图需要花费一定的物理空间和时间资源
- 没有建立索引的查询将消耗很大的I/O
【列式数据库】
举例:HBase
- 数据是按列存储的,每一列单独存放
- 数据既是索引
- 数据类型一致,数据特征相似,高效的压缩
2. 下列对HBase数据模型的描述错误的是
A.HBase列族支持动态扩展,可以很轻松地添加一个列族或列
B.HBase中执行更新操作时,会删除数据旧的版本,并生成一个新的版本
C.每个HBase表都由若干行组成,每个行由行键(row key)来标识
D.HBase是一个稀疏、多维度、排序的映射表,这张表的索引是行键、列族、列限定符和时间戳
我的答案:B
解析:
A. 列族支持动态扩展 - 正确
HBase 中的列族可以很轻松地添加一个列族或列,无需预先定义列的数量以及类型,所有列均以字符串形式存储,用户需要自行进行数据类型转换
B. HBase中执行更新操作时,会删除数据旧的版本,并生成一个新的版本 - 错误
HBase中执行更新操作时,不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍然保留(这是和HDFS只允许追加不允许修改的特性相关的)
C. 每个HBase表都由若干行组成,每个行由行键(row key)来标识 - 正确
D.HBase是一个稀疏、多维度、排序的映射表,这张表的索引是行键、列族、列限定符和时间戳 - 正确
HBase是一个稀疏、多维度、排序的映射表,hbase 索引的图解如下:
图源:PPT 第四章 HBase,侵删
相关名词的解释如下:
- 表:HBase采用表来组织数据,表由行和列组成,列划分为若干个列族
- 行:每个HBase表都由若干行组成,每个行由行键(row key)来标识。
- 列族:一个HBase表被分组成许多“列族”(Column Family)的集合,它是基本的访问控制单元
- 列限定符:列族里的数据通过列限定符(或列)来定位
- 单元格:在HBase表中,通过行、列族和列限定符确定一个“单元格”(cell),单元格中存储的数据没有数据类型,总被视为字节数组byte[ ]
- 时间戳:每个单元格都保存着同一份数据的多个版本,这些版本采用时间戳进行索引
3. 定位Region的三级寻址顺序是
A..MEATA.表,Zookeeper文件,-ROOT-表
B.-ROOT-表,Zookeeper文件,.MEATA.表
C.Zookeeper文件,.MEATA.表,-ROOT-表
D.Zookeeper文件,-ROOT-表,.MEATA.表
我的答案:D
解析:
三级寻址为:Zookeeper文件,-ROOT-表,.MEATA.表(简记:ZRM)
三级寻址如下图所示:
图源:PPT 第四章 HBase,侵删
三层次结构中各层次的名称和作用:
4. 关于HBase Shell命令解释错误的是
A.put:向表、行、列指定的单元格添加数据
B.list:显示表的所有数据
C.create:创建表
D.get:通过表名、行、列、时间戳、时间范围和版本号来获得相应单元格的值
我的答案:B
解析:
A.put:向表、行、列指定的单元格添加数据 - 正确
举例:
put '表格名称', '行名', '列族名:列名', 内容
B.list:显示表的所有数据 - 错误</