原创 大数据Hbase面试宝典(下)

发布时间:2019-07-04 18:28:51 浏览 4299 来源:博学谷资讯 作者:照照

    大数据Hbase的面试中只有做好充足的准备,才能以不变应万变。下面和大家分享小编最后整理的大数据Hbase面试宝典最终章。

     

    大数据Hbase面试宝典(下)

     

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

     

    在 hbase 中每当有 memstore 数据 flush 到磁盘之后,就形成一个 storefile, 当 storeFile 的数量达到一定程度后,就需要将 storefile 文件来进行 compaction 操作。Compact 的作用:

    1、合并文件

    2、清除过期,多余版本的数据

    3、提高读写数据的效率

     

    二、HBase 中实现了两种 compaction 的方式 : minor and major这两种compaction 方式的区别是:

     

    1、Minor 操作只用来做部分文件的合并操作以及包括 minVersion=0 并且设置 ttl 的过期版本清理,不做任何删除数据、多版本数据的清理工作。

    2、Major 操作是对 Region 下的 HStore 下的所有 StoreFile 执行合并操作, 最终的结果是整理合并出一个文件。

     

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

     

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

     

    四、Hbase 内部是什么机制?

     

    在 HBase 中无论是增加新行还是修改已有的行,其内部流程都是相同的。HBase 接到命令后存下变化信息,或者写入失败抛出异常。默认情况下,执行写入时会写到两个地方:预写式日志(write-ahead log,也称 HLog)和 MemStore。HBase 的默认方式是把写入动作记录在这两个地方,以保证数据持久化。只有当这两个地方的变化信息都写入并确认后,才认为写动作完成。

    MemStore 是内存里的写入缓冲区,HBase 中数据在永久写入硬盘之前在这里累积。当MemStore 填满后,其中的数据会刷写到硬盘,生成一个HFile。HFile 是HBase 使用的底层存储格式。HFile 对应于列族,一个列族可以有多个 HFile,但一个 HFile 不能存储多个列族的数据。在集群的每个节点上,每个列族有一个MemStore。大型分布式系统中硬件故障很常见,HBase 也不例外。

    设想一下,如果MemStore 还没有刷写,服务器就崩溃了,内存中没有写入硬盘的数据就会丢失。HBase 的应对办法是在写动作完成之前先写入 WAL。HBase 集群中每台服务器维护一个 WAL 来记录发生的变化。WAL 是底层文件系统上的一个文件。直到WAL 新记录成功写入后,写动作才被认为成功完成。这可以保证 HBase 和支撑它的文件系统满足持久性。

    大多数情况下,HBase 使用Hadoop分布式文件系统HDFS)来作为底层文件系统。如果 HBase 服务器宕机,没有从 MemStore 里刷写到 HFile 的数据将可以通过回放 WAL 来恢复。你不需要手工执行。Hbase 的内部机制中有恢复流程部分来处理。每台 HBase 服务器有一个 WAL,这台服务器上的所有表(和它们的列族)共享这个 WAL。你可能想到,写入时跳过 WAL 应该会提升写性能。但我们不建议禁用 WAL, 除非你愿意在出问题时丢失数据。如果你想测试一下,如下代码可以禁用 WAL: 注意:不写入 WAL 会在 RegionServer 故障时增加丢失数据的风险。关闭 WAL, 出现故障时 HBase 可能无法恢复数据,没有刷写到硬盘的所有写入数据都会丢失。

     

    五、HBase 宕机如何处理?

     

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

     

    以上就是所有的大数据Hbase面试题和答案了,希望大家都能拿到心仪的offer,想要学习更多的大数据技术相关知识,请关注博学谷哦!

    申请免费试学名额    

在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!

上一篇: Namenode HA 知识点讲解 下一篇: 大数据面试题:flume 与 kafka 的整合

相关推荐 更多

热门文章

  • 分组和聚合函数的组合怎么使用?代码怎么写?
  • 外键SQL语句的编写怎么用?
  • 数据库设计之三范式是什么?有什么作用?
  • 子查询的SQL语句怎么写?如何使用?
  • 连接查询自连接的SQL语句怎么写?
  • 连接查询右连接的SQL语句怎么写?
  • 连接查询左连接的SQL语句怎么写?
  • 连接查询内连接的SQL语句怎么写?
  • Group by分组查询怎么用?需要掌握哪些内容?
  • 常用的聚合函数有哪些?怎么用?
  • 查看更多

扫描二维码,了解更多信息

博学谷二维码