Hbase面试题

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等关系型数据库
  • 连表操作性能不好
  • 只适合业务简单的工程
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容