1.Hbase的特点
分布式面向列存储
主从结构
合适存储半结构化数据或者非结构化数据
Null不会存储,没有数据类型
cell存储的是字节数组
多版本数据
2.Hbase如何导入数据
- Hbase Api
- Mapreduce
- BulkLoad
- Sqoop
3.Hbase的存储结构
- 键值对,排序
- 一个列族对应一个store
- 每一个store包含一个memstore和多个StoreFile
- 一个storefile底层存在方式是Hfile
4.Hbase 与 Hive异同点
相同点:
- 都是基于hdfs的文件存储
区别:
- Hbase执行随机读写,Hive不支持
- Hbase的查询基于索引查询,Hive是全表扫描
- Hbase是物理表,Hive是逻辑表
- Hbase可以存储多版本的数据,Hive不支持
- Hbase可以在内存中查询数据,Hive不行
5.Hbase实时查询原理
数据先写入内存然后到128m的时候会写入文件,在内存中数据是不做更新合并操作的,写入就可以立即返回,所以查询效率高。
6.Hbase rowkey 设计原则
长度原则(不超过16个字节)
-
散列原则
- 倒序rowkey
- 加盐
- hash散列值
唯一原则
7.Hbase scan 和 get的区别
- get 按照rowkey来取
- scan是获取一批数据
- scan可以通过setCaching与setBatch方法提高速度,空间换时间
- setStartRow与setEndRow缩小范围
- setFilter添加过滤器来进行过滤
8.Hbase的合并机制
-
MinorCompact
对部分小文件进行合并,并不会进行数据删除和版本失效
-
MajorCompact
对所有的文件进行合并,并且删除被标记删除的数据或者版本失效的数据
9.HRegionServer宕机后,内部的处理机制
- zookeeper监控到HRegionServer的下线,然后通知HMaster
- HRegionServer停止对外服务
- HMaster会将此HRegionServer负责的Region交给其他的HRegionServer,并使用预写日志进行恢复内存中的数据
10.为什么不建议Hbase的列族过多
- 当数据在多个列族之间分布不均匀时,会导致分裂Region后,某些Region过小,查询较少数据列族时横跨多个region,查询效率降低
- 多个列族就会产生多个memstore,加大的内存的消耗
- 列族都是一起刷新写入文件的,一个列族的刷新会产生所有的列族的IO操作
11.Hbase与传统的数据库区别
数据类型
数据操作(连表操作,事务操作)
存储模式
数据索引(Hbase单索引行键)
数据维护(Hbase存储多版本)
可伸缩性
12.Hbase的优缺点
优点:
- 海量存储
- 列式存储
- 伸缩性强
- 数据不稀疏
缺点:
- 强依赖hdfs
- 不支持多条件查询
- 不支持Master自动故障转移,需要依赖zookeeper
- 索引支持不如Mysql等关系型数据库
- 连表操作性能不好
- 只适合业务简单的工程