首页 > 其他分享 >面试官:HBase 有哪些优化点?

面试官:HBase 有哪些优化点?

时间:2022-08-31 19:56:10浏览次数:90  
标签:文件 面试官 哪些 列族 compaction memstore HRegionServer HBase

  作者:大叔据 来自:大叔据

  这是个相对开放的问题,问题没有那么得细,面对这种问题千万不要乱了阵脚,其实这种问题答得好是很加分的,可以从几个不同的方向来回答,这样显得有条理,而且可以向面试官展现你的多维度思考和总结的能力。

  两个角度,一个从使用者的角度,一个从维护者的角度。

  1. 从使用者的角度,可以优化存储模型的设计,包括以下几个方面:

  rowkey设计:高位用散列,长度不宜过长,可以适当地把需要检索的条件拼接在rowkey里。查询时尽量用get,scan时要指定start/end key。

  列族的设计:列族尽量少,且不同列族的数据量要尽量均匀。

  列族尽量少是因为列族对应的底层存储的一个文件目录,文件目录少有助于提高文件检索速度。

  数据量要均匀是因为,当一个cf量大到一定程度,memstore会刷盘,而刷盘这个动作不是只针对单个cf,而是整个服务器,这个时候如果另一个cf的数据量很小那也会跟着刷盘,这就造成了会有大量小文件生成,HDFS是最忌讳小文件的,同时小文件的过多也会影响检索的效率,需要从多个文件中检索目标。

  预分区:在写比较频繁的场景下,数据增长太快,split的次数也会增多,额外的资源消耗也会增大,另外数据分布不均匀会造成热点问题,这些都是需要预分区的原因。

  2. 从系统维护者的角度来说,可以对系统优化,包括以下几个方面:

  内存优化:HBase有两块主要的内存memstore和blockCache的配置

  BlockCache,如果写比读少很多,可以开到0.4-0.5。如果读写较均衡,0.3左右。如果写比读多,就默认0.2。设置这个值的时候,也要参考

  hbase.regionserver.global.memstore.upperLimit,该值是memstore占heap的最大百分比,两个参数一个影响读,一个影响写。如果两值加起来超过80-90%,会有OOM的风险。具体就不说了,看我之前的文章 HBase篇(4)-你不知道的HFile

  GC优化:默认cms,可以优化为G1。

  压缩:默认未开启,建议使用Snappy和LZO,压缩比,压缩解压速率,资源消耗都是比较平衡的。

  BloomFilter:默认未开启,需要在建立表的时候加入。用布隆过滤可以节省读磁盘过程,可以有助于降低读取延迟。具体就不说了看我之前的文章 HBase篇(5)- BloomFilter

  其实还有一些其他零零散散的点,就不说了,说这么多对于这个问题来说已经回答地很完美了。说这些的过程中的某些点面试官很有可能是会追问下去的,比如内存优化,bloomfilter等,所以可以看得深入一点,回答的时候也能更加从容一点。

  宕机恢复的过程也是面试中的常见问题,重点是wal机制。

  1. ZooKeeper会监控HRegionServer的上下线情况,当ZK发现某个HRegionServer宕机之后会通知HMaster进行失效备援;

  2. 该HRegionServer会停止对外提供服务,就是它所负责的region暂时停止对外提供服务

  3. HMaster会将该HRegionServer所负责的region转移到其他HRegionServer上,并且会对HRegionServer上存在memstore中还未持久化到磁盘中的数据进行恢复

  4. 这个恢复的工作是由WAL重播来完成,这个过程如下:

  wal实际上就是一个文件,存在/hbase/WAL/对应RegionServer路径下。宕机发生时,读取该RegionServer所对应的路径下的wal文件,然后根据不同的region切分成不同的临时文件recover.edits。当region被分配到新的RegionServer中,RegionServer读取region时会进行是否存在recover.edits,如果有则进行恢复。

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

  compaction 的作用:

  合并文件清除过期,多余版本的数据提高读写数据的效率

  另外可以再说下compaction的两种方式。

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

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

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

标签:文件,面试官,哪些,列族,compaction,memstore,HRegionServer,HBase
From: https://www.cnblogs.com/ebuybay/p/16644350.html

相关文章

  • AI智能分析网关包含哪些深度学习算法?如何赋能场景应用?
    AI深度学习技术正在呈现飞速增长的状态,有数据分析预测,到2030年,AI有望实现13万亿美元的市场规模。尤其是伴随着智慧城市、智能交通、工业互联网、生产制造等应用场景对视频......
  • 代码签名工具有哪些?好用的数字签名工具推荐
    代码签名(Codesigning)是对各类软件代码文件进行数字签名,以确认软件发行者身份并保证软件在签名后未被篡改,它使用数字证书来识别软件的发布商,使用哈希算法来确保软件的完整......
  • “差异关系”都有哪些方法
    最近小编收到最多的问题就是想做差异分析,应该选择那种分析方法?数据之间的关系一般分为四种:差异关系、相关关系、影响关系以及其它关系。 一、说明差异研究的目的在于比......
  • 说一说JS数据类型有哪些,区别是什么?
    JS数据类型分为两类:一类是基本数据类型,也叫简单数据类型,包含7种类型,分别是Number、String、Boolean、BigInt、Symbol、Null、Undefined。另一类是引用数据类型也叫复杂数......
  • 在linux下如何使用yum查看安装了哪些软件包
    在linux下如何使用yum查看安装了哪些软件包_wenwenxiong的博客-CSDN博客_yum查看软件版本 https://blog.csdn.net/wenwenxiong/article/details/51785221Linux系统下yum......
  • 深入浅出HBase实战
    深入浅出HBase实战这是我参与「第四届青训营」笔记创作活动的第7天1.Hbase使用场景1.1什么是HBase?HBase是一个开源的NoSQL分布式数据库,是Apache软件基金会顶级项目......
  • hbase
    hbase和hadoophttp://c.biancheng.net/view/6501.htmlhbase架构文档https://blog.csdn.net/u012485099/article/details/110941341一个regionserver管理多个region,......
  • 前端页面布局方式有哪些?
    1、固定布局(1)适用于局部元素固定位置(例如:返回顶部的按钮固定在页面底部)(2)适用于h5页面整个页面尺寸、元素比例的控制2、流式布局依据文档流本身的特点,不做控制,自上往下......
  • 在 HTML 和 CSS 中隐藏元素有哪些不同的方法?
    在HTML和CSS中隐藏元素有哪些不同的方法?这些是使用HTML或CSS在网页中隐藏内容的一些主要方法。这些是使用HTML或CSS在网页中隐藏内容的一些主要方法。安......
  • vr酒店全景在线制作功能有哪些_VR虚拟场景制作多少钱_华锐互动
    1、面向消费者,提高酒店入住目前酒店的网络推广通常是通过行业网站进行(如美团、携程、艺龙、去哪儿、飞猪......),省去实地考察环节,省时省力省心,对商家来将节约广告宣传成......