1、HBase是什么?

答:hbase是开源的非关系型分布式数据库,拥有高可靠性、高性能、面向列、可伸缩的分布式存储系统

2、HBase存储结构?

答:

3、HBase中rowkey设计原则?

答:(1)rowkey长度原则
(2)rowkey散列原则
(3)rowkey唯一原则

4、RowKey如何设计?

答:(1)生成随机数、hash、散列值
(2)字符串反转

5、Hbase的六大特点:

答:(1)表大:一个表可以有数亿行,上百万列。
(2)无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态增加,同一个表中的不同行的可以有截然不同的列。
(3)面向列:HBase是面向列的的存储和权限控制,列族独立索引。
(4)稀疏:空(null)列并不占用空间,表可以设计的非常稀疏。
(5)数据类型单一:HBase中的数据都是字符串,没有类型。
(6)数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳。

6、Hbase的使用场景:

答:(1)、半结构化数据和非结构化数据,可以进行动态扩展。
(2)、记录非常的稀疏。
(3)、多版本数据。
(4)、超大数据容量:HBase会自动水平切分扩展,跟Hadoop的无缝集成保证了其数据的可靠性和海量数据分析的高性能。

7、Hbase的使用场景:

答:(1)、半结构化数据和非结构化数据,可以进行动态扩展。
(2)、记录非常的稀疏。
(3)、多版本数据。
(4)、超大数据容量:HBase会自动水平切分扩展,跟Hadoop的无缝集成保证了其数据的可靠性和海量数据分析的高性能。

8、Hbase的读写流程:

答:1、HBase的读流程:
(1)、HRegisonServer保存着.meta.表及数据表,首先client先访问zk,访问-ROOT-表,然后在zk上面获取.meta.表所在的位置信息,找到这个meta表在哪个HRegionServer上面保存着。
(2)、接着client访问HRegionServer表从而读取.meta.进而获取.meta.表中存放的元数据。
(3)、client通过.meta.中的元数据信息,访问对应的HRegionServer,然后扫描HRegionServer的Memstore和StoreFile来查询数据。
(4)、最后把HRegionServer把数据反馈给client。
2、HBase的写流程:
(1)、client访问zk中的-ROOT-表,然后后在访问.meta.表,并获取.meta.中的元数据。
(2)、确定当前要写入的HRegion和HRegionServer。
(3)、clinet向HRegionServer发出写相应的请求,HRegionServer收到请求并响应。
(4)、client先将数据写入到HLog中,以防数据丢失。
(5)、然后将数据写入到MemStore中。
(6)、如果HLog和MemStore都写入成功了,那么表示这个条数据写入成功了。
(7)、如果MemStore写入的数据达到了阈值,那么将会flush到StoreFile中。
(8)、当StoreFile越来越多,会触发Compact合并操作,将过多的StoteFile合并成一个大的StoreFile。
(9)、当StoreFile越来越多时,Region也会越来越大,当达到阈值时,会触发spilit操作,将这个Region一分为二。
拓展:HBase中所有的更新和删除操作都会在后续的compact中进行,使得用户的写操作只需要进入内存中就行了。实现了HBase的 I/O高性能。

9、Hbase中的Compact机制:

答:1、当HBase中的memstore数据flush到磁盘的时候,就会形成一个storefile,当storefile的数量达到一定程度的时候,就需要将storefile文件进行compaction操作,Compact作用:合并文件、清楚过期,多余版本数据、提高读写效率。
2、compact操作的实现:①minor:Minor 操作只用来做部分文件的合并操作以及包括 minVersion=0 并且设置 ttl 的过期版本清理,不做任何删除数据、多版本数据的清理工作。②major:Major 操作是对 Region 下的HStore下的所有StoreFile执行合并操作,最终的结果是整理合并出一个文件。

10、Hbase中的优化:

答:1、读写性能优化:
(1)、开启bloomfilter过滤器。
(2)、在条件允许的情况下,给HBase足够的内存。修改配置文件hbase-env.sh中的export HBASE_HEAPSIZE=1000
(3)、增加RPC的数量。通过修改hbase-site.xml中的hbase.regionserver.handler.count属性可以适当的放大RPC数量,默认是10。
(4)、HBase中的region太小会造成多次spilit,region就会下线。如果HBase中的region过大,就会发生多次的compaction,将数据读一遍重写一遍到HDFS上面,占用io。
2、预设分区:
(1)、shell方法:例如:create ‘tb_split’,{NAME=>‘cf’, VERSION=>3},{SPLITS=>[‘10’,‘20’,‘30’]}
(2)、java程序控制:https://blog.csdn.net/javajxz008/article/details/51913471
3、其他优化方法:
(1)、减少调整:可以调整region和HFile。因为region的分裂会导致I/O开销,如果没有预设分区的话,随着region中条数的增,region会进行分裂,解决方法就是根据rowkey设计来进行预建分区,减少region的动态分裂。HFile会随着memstore进行刷新时生成一个HFile,当HFile增加到一定量的时候,会将属于一个region的HFile合并,HFile是不可避免的,但是如果HFile大于设置得值,就会导致HFile分裂,这样就会导致I/O的开销增大。
(2)、减少启停:对于HBase会有compact机制,会合并HFile,但是我们可以手动关闭compact,减少I/O。如果是批量数据的写入,我们可以用BulkLoad来批量插入数据。(BulkLoad的使用:https://blog.csdn.net/shixiaoguo90/article/details/78038462)
(3)、减少数据量:开启过滤,提高查询效率。(开启BloomFilter,这个是列簇级别的过滤,在生成一个StoreFile同时会生成一个MetaBlock,用于查询时的过滤)。使用压缩,一般使用snappy和lzo压缩。
(4)、合理设计:rowkey的设计:(散列性、简短性、唯一性、业务性),列族的设计:(多列族的优势是:在进行查表的时候,只需要扫描那一列就行了,就不需要全盘扫描,减少I/O,劣势是:降低了写的I/O,原因是:数据写到stroe以后会缓存到memstore中,)

11、解释下 hbase 实时查询的原理

答:实时查询,可以认为是从内存中查询,一般响应时间在 1 秒内。HBase 的机制是数据先写入到内存中,当数据量达到一定的量(如 128M),再写入磁盘中, 在内存中,是不进行数据的更新或合并操作的,只增加数据,这使得用户的写操作只要进入内存中就可以立即返回,保证了 HBase I/O 的高性能。

12、简述 HBASE 中 compact 用途是什么,什么时候触发,分为哪两种,有什么区别,有哪些相关配置参数?

答: hbase 中每当有 memstore 数据 flush 到磁盘之后,就形成一个 storefile, 当 storeFile 的数量达到一定程度后,就需要将 storefile 文件来进行 compaction 操作。Compact 的作用:
1.合并文件
2.清除过期,多余版本的数据
3.提高读写数据的效率

13、简述 Hbase filter 的实现原理是什么?结合实际项目经验,写出几个使用filter 的场景。

答:HBase 为筛选数据提供了一组过滤器,通过这个过滤器可以在 HBase 中的数据的多个维度(行,列,数据版本)上进行对数据的筛选操作,也就是说过滤器最终能够筛选的数据能够细化到具体的一个存储单元格上(由行键, 列名,时间戳定位)。
RowFilter、PrefixFilter。hbase 的 filter 是通过 scan 设置的,所以是基于 scan 的查询结果进行过滤. 过滤器的类型很多,但是可以分为两大类——比较过滤器,专用过滤器。过滤器的作用是在服务端判断数据是否满足条件,然后只将满足条件的数据返回给客户端;如在进行订单开发的时候,我们使用 rowkeyfilter 过滤出某个用户的所有订单。

14、HBase 宕机如何处理?

答:宕机分为 HMaster 宕机和 HRegisoner 宕机.:
1.如果是 HRegisoner 宕机,HMaster 会将其所管理的 region 重新分布到其他活动的 RegionServer 上,由于数据和日志都持久在 HDFS 中,该操作不会导致数据丢失,所以数据的一致性和安全性是有保障的。
2.如果是 HMaster 宕机, HMaster 没有单点问题, HBase 中可以启动多个HMaster,通过 Zookeeper 的 Master Election 机制保证总有一个 Master 运行。即ZooKeeper 会保证总会有一个 HMaster 在对外提供服务。

15、HRegionServer宕机如何处理?

答:a.ZooKeeper 会监控 HRegionServer 的上下线情况,当 ZK 发现某个 HRegionServer 宕机之后会通知 HMaster 进行失效备援;
b.HRegionServer 会停止对外提供服务,就是它所负责的 region 暂时停止对外提供服务
c.HMaster 会将该 HRegionServer 所负责的 region 转移到其他 HRegionServer 上,并且会对 HRegionServer 上存在 memstore 中还未持久化到磁盘中的数据进行恢复;
d.这个恢复的工作是由 WAL重播 来完成,这个过程如下:
1.wal实际上就是一个文件,存在/hbase/WAL/对应RegionServer路径下
2.宕机发生时,读取该RegionServer所对应的路径下的wal文件,然后根据不同的region切分成不同的临时文件recover.edits
3.当region被分配到新的RegionServer中,RegionServer读取region时会进行是否存在recover.edits,如果有则进行恢复

16、 为什么不建议在 HBase 中使用过多的列族

答:在 Hbase 的表中,每个列族对应 Region 中的一个Store,Region的大小达到阈值时会分裂,因此如果表中有多个列族,则可能出现以下现象:
1.一个Region中有多个Store,如果每个CF的数据量分布不均匀时,比如CF1为100万,CF2为1万,则Region分裂时导致CF2在每个Region中的数据量太少,查询CF2时会横跨多个Region导致效率降低。
2.如果每个CF的数据分布均匀,比如CF1有50万,CF2有50万,CF3有50万,则Region分裂时导致每个CF在Region的数据量偏少,查询某个CF时会导致横跨多个Region的概率增大。
3.多个CF代表有多个Store,也就是说有多个MemStore(2MB),也就导致内存的消耗量增大,使用效率下降。
4.Region 中的 缓存刷新 和 压缩 是基本操作,即一个CF出现缓存刷新或压缩操作,其它CF也会同时做一样的操作,当列族太多时就会导致IO频繁的问题。

HBASE面试题,希望能够帮助到你相关推荐

  1. 7种超轻量级的Linux发行版,希望能够帮助你找到适合自己的操作系统

    Linux是一种非常受欢迎的开源操作系统,而且有许多版本可以选择.有时候,你需要一种超轻量级的Linux发行版,它可以在资源有限的设备上运行,并且能够快速启动.本文将介绍7种超轻量级的Linux发行版 ...

  2. 【大数据HBase系列】 HBase面试题整理

    文章目录 HBase面试题整理(一) 1. HBase的特点是什么? 2.HBase和Hive的区别? 3.HBase适用于怎样的情景? 4.描述HBase的rowKey的设计原则?(☆☆☆☆☆) 5 ...

  3. HBase 面试题(一)

    1.MapRedece从读取数据开始到将最终结果写入HDFS经过哪些步骤? 第一步:inputformat进行数据读读取,将数据发送给split 第二步:split 将数据进行切分,发送给Record ...

  4. hbase面试题整理

    一. 简单介绍下Hbase (1) Hbase一个分布式的基于列式存储的数据库,基于Hadoop的hdfs存储,zookeeper进行管理. (2) Hbase适合存储半结构化或非结构化数据,对于数据 ...

  5. HBase面试题汇总

    1.HBase中Memstore在何时进行数据的flush操作? 答: Memstore级别:当MemStore的大小达到设置阈值(默认128M),会触发flush操作. <property&g ...

  6. 大数据学习之Hbase面试题

    1,hbase读流程 首先通过meta表找到要读数据的region所在的RegionServer,然后去BlockCash中读取,如果没有就去Memstore中读取,如果也没有,那就去Hfile中去读 ...

  7. Hbase面试题总结(大数据面试)

    hbase概述 hbase是建立的hdfs之上,提供高可靠性.高性能.列存储.可伸缩.实时读写的数据库系统. 它介于nosql和RDBMS之间,仅能通过主键(row key)和主键的range来检索数 ...

  8. Hbase面试题(持续更新)

    1.每天百亿数据存入HBase,如何保证数据的存储正确和在规定的时间里全部录入完毕,不残留数据 1)百亿数据:证明数据量非常大 2)存入HBase:证明是跟HBase的写入数据有关 3)保证数据的正确 ...

  9. 列一些Hbase面试题

    Hbase Hbase是怎么写数据的? HDFS和HBase各自使用场景 Hbase的存储结构 热点现象(数据倾斜)怎么产生的,以及解决方法有哪些 HBase的 rowkey 设计原则 HBase的列 ...

最新文章

  1. 关于 element 的 backToTop
  2. python使用集合实现筛选法求素数-python素数筛选法浅析
  3. Java中数组的定义,怎么发现那个方括号放在变量名前或者后都是正确的?
  4. Go的Ducktype
  5. 不安装cudnn可不可以_关于CUDA和cuDNN的安装
  6. 拥抱Flutter,从0到1构建大前端应用
  7. python re包_使用Python中的re包将句子分成子句
  8. 中国高技术产业统计年鉴(1995-2021年)
  9. IDEA必备插件大全
  10. YouTube 双字幕浏览器辅助
  11. Eclipse中文版的,怎么变成英文版
  12. outlook安全模式修复_Outlook Com安全漏洞Microsoft无法修复
  13. Sourcetree git status失败 错误代码128:error :bad signature 0x0000000
  14. 新手必备pr 2021快速入门教程「三」素材的导入与管理
  15. 如何更改计算机名称及查看自己计算机的型号
  16. jquery返回上一页,前一页
  17. java kumo生成词云
  18. Origin Pro2017使用PatchOriginPro.exe破解提示Patch unsuccessfully or already
  19. ctf php正则截断,记[BJDCTF2020]ZJCTF,不过如此 关于php的正则匹配问题
  20. yuan sir generator desk appliacation

热门文章

  1. 点播, 单播,组播和广播
  2. mysql查询删除重复记录查询_mysql怎么查询和删除重复记录
  3. 前后端上传图片(上传发票并获取发票信息)
  4. Navitas 与 Vivo 庆祝 5000 万次 GaN 出货量
  5. 七、初识python-str内置函数、列表与列表函数(课时3)
  6. 华为mate40和华为nova7的区别
  7. 在 Visual C# 中,怎样为 TextBox 控件添加水印文字
  8. JAVA IO流结构图概览
  9. myecplise/ecplise git提交代码到远程托管仓库完整教程(转载)
  10. 【游戏开发创新】Unity 2D图片任意形状破碎碎裂效果,以此纪念我的牙光荣牺牲