您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

HBase 有哪些优化点?

时间:2019-09-03 08:54:28  来源:  作者:

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

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等,所以可以看得深入一点,回答的时候也能更加从容一点。

HRegionServer宕机后系统是怎么保证可用性的 ?

宕机恢复的过程也是面试中的常见问题,重点是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 的 compaction 过程和作用?

在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执行合并操作,最终的结果是整理合并出一个文件。



Tags:HBase   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
老刘今天复习HBase知识发现很多资料都没有把概念说清楚,有很多专业名词一笔带过没有解释。比如这个框架高性能、高可用,那什么是高性能、高可用?怎么实现的高性能高可用?没说!如...【详细内容】
2021-03-04  Tags: HBase  点击:(136)  评论:(0)  加入收藏
一、NoSQL的简介NoSQL比关系型数据库性能高数倍。NoSQL凭借 “易扩展、大数据、高可用、高性能、灵活性”特点强势引领全场。CP型分布式数据库,能够保证数据的强一致性和分区...【详细内容】
2021-02-25  Tags: HBase  点击:(448)  评论:(0)  加入收藏
在大数据相关行业的面试中,经常会被问到这个问题:Redis、传统数据库、HBase以及Hive的区别。 本文将针对这个面试问题,做以下分析:1.问题分析面试官考核的是你对不同数据存储技...【详细内容】
2021-02-23  Tags: HBase  点击:(337)  评论:(0)  加入收藏
Redis定位在"快",MongoDB定位在"灵活",HBase定位于"大"。在一般使用情况下,MongoDB可以当作简单场景下的但是性能高数倍的MySQL,Redis基本只会用来做缓存,HBase用来存储海量数据...【详细内容】
2020-11-11  Tags: HBase  点击:(174)  评论:(0)  加入收藏
数据模型传统的关系型数据库,一张表(table)由行(row)和列(column)组成。相对Hbase分布式数据库却有所差别,可以把Hbase中的表理解成不同维度Map的集合。包含以下主要概念。 ta...【详细内容】
2020-10-29  Tags: HBase  点击:(166)  评论:(0)  加入收藏
导读:HBase是一个构建在HDFS之上的、分布式的、支持多版本的NoSQL数据库,它的出现补齐了大数据场景下快速查询数据能力的短板。它非常适用于对平台中的热数据进行存储并提供查...【详细内容】
2020-10-14  Tags: HBase  点击:(105)  评论:(0)  加入收藏
Hbase是Hadoop开源项目下的一个子项目,是一个构建在hdfs之上,支持分布式,水平扩展,数据多版本等特性的NoSQL数据库。现广泛应用于大数据的存储和查询场景。单机模式安装安装包下...【详细内容】
2020-10-13  Tags: HBase  点击:(145)  评论:(0)  加入收藏
今天给大家分享的内容是LSM树,它的英文是Log-structed Merge-tree。看着有些发怵,但其实它的原理不难,和B树相比简直算是小儿科了。 并且这也是一个非常经典的数据结构,并且在大...【详细内容】
2020-09-22  Tags: HBase  点击:(148)  评论:(0)  加入收藏
大数据存储: HBase API,DDL,DML4.1 环境准备新建项目后在pom.xml中添加依赖:<dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-server</artifactId>...【详细内容】
2020-08-25  Tags: HBase  点击:(98)  评论:(0)  加入收藏
首先,需要明确的是,HBase写入速度比读取速度要快,根本原因LSM存储引擎。LSM树全称是基于日志结构的合并树(Log-Structured Merge-Tree)。No-SQL数据库一般采用LSM树作为数据结构,H...【详细内容】
2020-08-10  Tags: HBase  点击:(153)  评论:(0)  加入收藏
▌简易百科推荐
本文分为三个等级自顶向下地分析了glibc中内存分配与回收的过程。本文不过度关注细节,因此只是分别从arena层次、bin层次、chunk层次进行图解,而不涉及有关指针的具体操作。前...【详细内容】
2021-12-28  linux技术栈    Tags:glibc   点击:(3)  评论:(0)  加入收藏
摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比...【详细内容】
2021-12-27  项目与数据管理    Tags:Vue   点击:(2)  评论:(0)  加入收藏
程序是如何被执行的&emsp;&emsp;程序是如何被执行的?许多开发者可能也没法回答这个问题,大多数人更注重的是如何编写程序,却不会太注意编写好的程序是如何被运行,这并不是一个好...【详细内容】
2021-12-23  IT学习日记    Tags:程序   点击:(9)  评论:(0)  加入收藏
阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器...【详细内容】
2021-12-23  程序yuan    Tags:单点登录(   点击:(8)  评论:(0)  加入收藏
下载Eclipse RCP IDE如果你电脑上还没有安装Eclipse,那么请到这里下载对应版本的软件进行安装。具体的安装步骤就不在这赘述了。创建第一个标准Eclipse RCP应用(总共分为六步)1...【详细内容】
2021-12-22  阿福ChrisYuan    Tags:RCP应用   点击:(7)  评论:(0)  加入收藏
今天想简单聊一聊 Token 的 Value Capture,就是币的价值问题。首先说明啊,这个话题包含的内容非常之光,Token 的经济学设计也可以包含诸多问题,所以几乎不可能把这个问题说的清...【详细内容】
2021-12-21  唐少华TSH    Tags:Token   点击:(10)  评论:(0)  加入收藏
实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后...【详细内容】
2021-12-17  Mason程    Tags:VUE   点击:(14)  评论:(0)  加入收藏
什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How) 硬件配...【详细内容】
2021-12-16  软件测试小p    Tags:性能调优   点击:(20)  评论:(0)  加入收藏
Tasker 是一款适用于 Android 设备的高级自动化应用,它可以通过脚本让重复性的操作自动运行,提高效率。 不知道从哪里听说的抖音 app 会导致 OLED 屏幕烧屏。于是就现学现卖,自...【详细内容】
2021-12-15  ITBang    Tags:抖音防烧屏   点击:(25)  评论:(0)  加入收藏
11 月 23 日,Rust Moderation Team(审核团队)在 GitHub 上发布了辞职公告,即刻生效。根据公告,审核团队集体辞职是为了抗议 Rust 核心团队(Core team)在执行社区行为准则和标准上...【详细内容】
2021-12-15  InfoQ    Tags:Rust   点击:(25)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条