Hbase阶段性复习
- 1.什么是Hbase?
- 2.Hbase和Bigtable的底层技术对应关系
- 3.Hbase的特点?
- 4.Hadoop已经有了HDFS和Mapreduce,为什么还需要设计Hbase?
- 5.Hbase面向列的数据模型具体是怎么样的?(行键、列族、列修饰符、和时间戳解释; 四维坐标解释)
- 6.Hbase与传统的关系数据库有什么区别?
- 7.选择行式存储和列式存储的场景?
- 8.Hbase在执行更新操作时,为什么不删除旧的版本,而是使用时间戳这样的方式,在单元格内存储同一个数据的多个版本?
- 9.Hbase由哪些系统组件构成?
- 10.Hbase的各个系统组件的作用和功能分别是什么?
- 11.客户端如何知道哪个Region被存到哪个Region服务器的?并解释这种模式。
- 12.整个的Region服务器集群的构成包括哪些?
- 13.Hbase中用户写数据的过程?
- 14.Hbase中用户读数据的过程?
- 15.Hbase缓存刷新的过程
- 16.启动关闭Hadoop和HBase的顺序?
- 17.修改环境变量的配置文件后,哪个命令可使配置在当前终端立即生效?
- 18.切换目录至Hadoop安装目录;再启动Hadoop的命令?
- 19.切换目录至HBase安装目录;再启动HBase的命令?
- 20.哪个命令可查看启动后的hadoop进程?
- 21.打开Hbase shell命令行模式的命令?
- 22.请分别写出HBase的增、删、改、查的操作命令
- 23.退出Hbase shell命令行模式的命令?
- 24.停止HBase运行的命令?
- 25.停止Hadoop运行的命令?
1.什么是Hbase?
Hbase是一个开源的非关系型分布式数据库
2.Hbase和Bigtable的底层技术对应关系
Bigtable | Hbase | |
---|---|---|
文件存储系统 | GFS | GFS HDFS |
海量数据处理 | Mapreduce | Hadoop Mapreduce |
协同服务管理 | Chubby | Zookeeper |
3.Hbase的特点?
可伸缩,高可靠,高性能,面对列
4.Hadoop已经有了HDFS和Mapreduce,为什么还需要设计Hbase?
因为HDFS和Mapreduce是高延迟数据处理机制,使Hadoop无法满足大规模数据实时处理应用的需求,而Hbase可以存储非结构化和半结构化的松散数据
5.Hbase面向列的数据模型具体是怎么样的?(行键、列族、列修饰符、和时间戳解释; 四维坐标解释)
- 行键:在传统数据库中每一行的唯一标识符叫做主键,在Hbase中叫做Row Key(行键)
- 列族:Hbase的表(由行和列组成),在放入数据前也有需要确定下来的东西,那就是列族/列簇,就如我们在写简历的时候,通常要写三大类的信息,这三个类别其实就相当于三个列族
- 列修饰符:每个列族里都会有具体的信息,这些信息就相当于一个个变量名,在Hbase中叫做列修饰符
- 时间戳:类似于版本号
- 四维坐标:一个行键、列族、列修饰符、数据和时间戳组合起来叫做一个单元格(Cell),这里的行键、列族、列修饰符和时间戳其实可以看作是定位属性(类似四维坐标)
6.Hbase与传统的关系数据库有什么区别?
- 数据类型:关系数据库采用关系模型,Hbase则采用了更加简单的数据模型,把数据存储为字符串
- 数据操作:关系数据库会涉及复杂的多表连接,Hbase只有很简单的插入、查询、删除、清空等操作,没有复杂的表和表之间的关系,
- 存储模式:关系数据库是基于行模式存储的。Hbase是基于列存储的
- 数据维护:Hbase的更新操作不应该叫更新,它实际上是插入了新的数据,而关系数据库是替换修改
- 可伸缩性:关系数据库很难实现横向扩展,纵向扩展的空间也比较有限,Hbase这类分布式数据库能够轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩。
- 数据索引:关系数据库通常可以针对不同列构建复杂的多个索引,Hbase只有一个索引,即行键
7.选择行式存储和列式存储的场景?
- 行式存储:
- 适合随机的增删改查操作;
- 需要在行中选取所有属性的查询操作;
- 需要频繁插入或更新的操作,其操作与索引和行的大小更为相关
- 列式存储:
- 数据不需要频繁更新的交易场景
- 表中列属性较多的大量数据库场景
- 快速读取数据列的场景
- 行式数据库主要适合于在线交易性的OLTP应用,而列式数据库主要适合于海量静态数据的分析,一般应用于OLAP。
8.Hbase在执行更新操作时,为什么不删除旧的版本,而是使用时间戳这样的方式,在单元格内存储同一个数据的多个版本?
- 由于Hbase的底层是HDFS,HDFS只支持写入和追加,不支持对已经存储数据的直接修改,而且Hbase本身拥有巨大的存储能力,不需要严格控制冗余。
- 使用时间戳是因为单元格中的数据,按时间进行排序,最新的那个版本排在最前面,查询时,如果不提供时间戳,则就默认直接返回这个最新的版本,而且用户可以选择通过提供时间戳,查询自己想要的版本。也方便Hbase设置具体的数据版本的回收方式
9.Hbase由哪些系统组件构成?
- 客户端Client
- 协调服务组件Zookeeper
- 一个Master主服务器
- 许多个Region服务器
10.Hbase的各个系统组件的作用和功能分别是什么?
- 客服端Client:整个HBase集群的访问入口
- 协调服务组件Zookeeper:作为HDFS的一部分,负责维护集群状态
- Master主服务器:负责Region的分配、负载平衡
- Refion服务器:负责存储和维护分配给自己的Region,处理来自客户端Client的读写请求
11.客户端如何知道哪个Region被存到哪个Region服务器的?并解释这种模式。
Hbase设计使用三级寻址模式来完成Region的定位。第一层Zookeeper文件记录-ROOT-表位置,第二层-ROOT-表记录.META.表,第三层.META.表保存了HBase中所有用户数据表的Region位置信息。
12.整个的Region服务器集群的构成包括哪些?
- 多台Region服务器
- 每台Region服务器上的多个Region
- 同一台Region服务器上的多个Region共用的Hlog日志文件
- 每个Region中的多个Store
- Store中的MemStore和StoreFile
- 底层HDFS的Hfile
13.Hbase中用户写数据的过程?
客户端通过Zookeeper找到存放具体Region的Region服务器,在Region服务器上,将数据写入到Hlog日志文件中,然后写入到MemStore缓存文件中,成功写入后会通知客户端写入完成
14.Hbase中用户读数据的过程?
Region服务器首先在MemStore缓存文件中查找是否有想要的数据,如果没有,再去StoreFile中找
15.Hbase缓存刷新的过程
Region服务器会周期性的把MemStore缓存中的数据写到磁盘的StoreFile文件中,在写入完成之后,会刷新清空缓存,并在Hlog日志文件中写入一个标记,用来记录当前缓存的内容已经被写入StoreFile
16.启动关闭Hadoop和HBase的顺序?
启动Hadoop→启动HBase→关闭HBase→关闭Hadoop
17.修改环境变量的配置文件后,哪个命令可使配置在当前终端立即生效?
source ~/.bashrc
18.切换目录至Hadoop安装目录;再启动Hadoop的命令?
cd /usr/local/hadoop
./sbin/start-dfs.sh
19.切换目录至HBase安装目录;再启动HBase的命令?
cd /usr/local/hbase
bin/start-hbase.sh
20.哪个命令可查看启动后的hadoop进程?
jps
21.打开Hbase shell命令行模式的命令?
·bin/hbase shell
22.请分别写出HBase的增、删、改、查的操作命令
增:put
删:delete和deleteall
查:
- 查看表结构:describe ‘表名’
- 查询表中的内容:scan ‘TABLENAME’
- get
23.退出Hbase shell命令行模式的命令?
exit
24.停止HBase运行的命令?
bin/stop-hbase.sh
25.停止Hadoop运行的命令?
./sbin/stop-dfs.sh