本文对hbase集群进行优化,主要涵盖硬件和操作系统,网络通信,JVM,查询,写入,核心服务,配置参数,zookeeper,表设计等多方面。...我们对hbase的应用主要是用户画像,根据自身使用场景做一些优化。难免有片面之处。 一、软硬件优化: 1....配置内存,cpu HBase的LSM树结构,缓存机制和日志机制对内存消耗非常大,所以内存越大越好。 其中过滤器,数据压缩,多条件组合扫描等场景都是cpu密集型的,所以cpu也要够强悍 2....JVM优化 根据网络上很多成熟引用验证比较优秀的垃圾回收器搭配组合CMS+ParNew 二、进入主题:Hbase本身优化 1. Hbase查询优化: a....优化合并操作:大合并非常消耗资源,且合并时候会阻塞写操作。应该在集群不繁忙的时候进行大合并 4. Hbase配置参数优化: a.
一.前述 HBase优化能够让我们对调优有一定的理解,当然企业并不是所有的优化全都用,优化还要根据业务具体实施。...二.具体优化 1.表的设计 1.1 预分区 默认情况下,在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据,直到这个region...配置项可以设置HBase scanner一次从服务端抓取的数据条数,默认情况下一次一条。...有三个地方可以进行配置:1)在HBase的conf配置文件中进行配置;(一般不用次全局配置!!!)...2)通过调用HTable.setScannerCaching(int scannerCaching)进行配置;3)通过调用Scan.setCaching(int caching)进行配置。
2.手动split,手动compant 3.开启booleamfilter 4.采用压缩 5.预分区 6.并发读写 7.禁止自动autoflush,增大客户端缓存 8.参数优化...9.建表语句优化
Hbase查询优化 作为NoSQL数据库,增删改查是其最基本的功能,其中查询是最常用的一项。...缓存查询结果 对于频繁查询HBase的应用场景,可以考虑在应用程序和Hbase之间做一层缓存系统,新的查询先去缓存查,缓存没有再去查Hbase。...写入优化 写也是Hbase常有的操作之一,并且Hbase在写入操作上有着其他NoSQL无法比拟的优势,下面讲如何优化写入操作 关闭写WAL日志 一般为了保证系统的高可用性,WAL日志默认是开启状态,WAL...建议刚开始的时候预创建Region,可以使用Hbase自带的RegionSplitter 延迟日志flush 默认写入操作,首先写入WAL,并且在1S内写入HDFS,这个时间默认是1S,可以通过参数配置...hbase.regionserver.optionallogflushinterval 可以配置大一点的值,比如5s,这段时间数据会保留在内存中,直到RegionServer周期性的执行flush操作
HBase 优化 JVM调优 内存调优 一般安装好的HBase集群,默认配置是给Master和RegionServer 1G的内存,而Memstore默认占0.4,也就是400MB。...并行回收器(ParallelGC),主要针对年轻带进行优化(JDK 8 默认策略)。 并发回收器(ConcMarkSweepGC,简称CMS),主要针对年老代进行优化。...G1GC回收器,主要针对大内存(32GB以上才叫大内存)进行优化。...如果你不配置这个参数,JVM会按 需索取堆外内存;如果你配置了这个参数,你可以定义JVM可以获得的堆外内存上限。显而易见的,这个参数值必须比 hbase.bucketcache.size大。...最小合并大小的配置项:hbase.hstore.compaction.min.size。如果没设定该配置项,则使用hbase.hregion.memstore.flush.size。
所以HBase支持对Hmaster的高可用配置。 1....内存优化 HBase操作过程中需要大量的内存开销,毕竟Table是可以缓存在内存中的,一般会分配整个可用内存的70%给HBase的Java堆。...基础优化 1....优化HStore文件大小 hbase-site.xml 属性:hbase.hregion.max.filesize 解释:默认值10737418240(10GB),如果需要运行HBase的MR任务...优化hbase客户端缓存 hbase-site.xml 属性:hbase.client.write.buffer 解释:用于指定HBase客户端缓存,增大该值可以减少RPC调用次数,但是会消耗更多内存
修改conf/hbase-site.xml,配置hbase使用的数据文件的位置,默认在/tmp/hbase-[username],此目录是linux的临时目录,可能会被系统清空,所以最好修改一下...修改hbase-site.xml,配置开启完全分布式模式 配置hbase.cluster.distributed为true。...false 配置region服务器,修改conf/regionservers文件, 其中配置所有hbase主机,每个主机名独占一行,hbase启动或关闭时会按照该配置顺序启动或关闭主机中的hbase...Hbase配置文件说明 hbase-env.sh配置HBase启动时需要的相关环境变量 hbase-site.xml配置HBase基本配置信息 HBASE启动时默认使用hbase-default.xml...中的配置,如果需要可以修改hbase-site.xml文件,此文件中的配置将会覆盖hbase-default.xml中的配置 修改配置后要重启hbase才会起作用 启动集群 启动zookeep:.zkServer.sh
第7章 HBase优化 7.1 高可用 在HBase中Hmaster负责监控RegionServer的生命周期,均衡RegionServer的负载,如果Hmaster挂掉了,那么整个HBase集群将陷入不健康的状态...所以HBase支持对Hmaster的高可用配置。...@hadoop102 hbase]$ touch conf/backup-masters 在backup-masters文件中配置高可用HMaster节点 [atguigu@hadoop102 hbase...优化HStore文件大小 hbase-site.xml 属性:hbase.hregion.max.filesize 解释:默认值10737418240(10GB),如果需要运行HBase的MR任务,可以减小此值...优化hbase客户端缓存 hbase-site.xml 属性:hbase.client.write.buffer 解释:用于指定HBase客户端缓存,增大该值可以减少RPC调用次数,但是会消耗更多内存,
另一方面,通过对hbase业务接入场景的了解,发现很多业务在接入hbase的时候都是先将数据写入到kafka,在通过实时流计算消费把kafka中的数据转存到hbase,以起到流量消峰的作用,而如果我们能够把业务原始数据与...MTTR优化 如之前所描述,影响hbase的MTTR时间主要涉及两个方面,分别是服务宕机的发现时间和WAL日志的回放时间。...基于此我们考虑将hbase的整体写链路做一下相应的调整,客户端不在直连hbase进行写入,而是先记录WAL到kafka,再通过实时流计算消费,把kafka中的WAL数据同步到hbase集群。 ?...另外客户端视角的写容错时间也只跟kafka的故障恢复时间有关,而不受到hbase长时间MTTR过程的影响。...这样不同的集群可开启不同的流计算作业去消费kafka中的WAL以便将数据同步到自己的hbase集群,而hbase的机房容灾功能也可转嫁到kafka的数据容灾处理上。
:$PATH 使得配置的环境变量立即生效: # source /etc/profile 3.3 集群配置 进入 ${HBASE_HOME}/conf 目录下,修改配置: 1. hbase-env.sh...3.4 HDFS客户端配置 这里有一个可选的配置:如果您在 Hadoop 集群上进行了 HDFS 客户端配置的更改,比如将副本系数 dfs.replication 设置成 5,则必须使用以下方法之一来使...以上是官方文档的说明,这里解释一下: 第一种 :将 Hadoop 配置文件的位置信息添加到 hbase-env.sh 的 HBASE_CLASSPATH 属性,示例如下: export HBASE_CLASSPATH...core-site.xml 第三种 :如果你只有少量更改,那么直接配置到 hbase-site.xml 中即可。...3.5 安装包分发 将 HBase 的安装包分发到其他服务器,分发后建议在这两台服务器上也配置一下 HBase 的环境变量。
三、配置步骤 接下来主要介绍需要在hbase-site.xml文件内增加哪些配置。最后通过ambari页面将自定义配置加到hbase-site.xml中。...配置HBase daemons 在集群的hbase-site.xml中设置以下属性,配置HBase守护程序以使用由KeyStore文件支持的密钥提供程序或检索集群主密钥。...这是HBase 1.0以后的默认配置。对于以前的版本,请在hbase-site.xml文件中设置以下属性。...hbase.regionserver.wal.encryption=true 配置hbase-site.xml文件的权限。...chmod -R 600 hbase-site.xml 将上述配置添加到自定义hbase-site中,重启HBase服务。 ?
HDFS和Hbase配置同步 hbase的配置中有一些和hdfs关联的配置,当hdfs中修改了,但是hbase中修改了,hbase中是不会知道的,比如dfs.replication,有时候我们想增加备份的数量...那么有什么方法可以使他们的配置文件同步,有三种方法: (1)在hbase-env.sh的HBASE_CLASSPATH环境变量增加HADOOP_CONF_DIR。...(2)在${HBASE_HOME}/conf下放一份hadoop的配置文件hdfs-site.xml (or hadoop-site.xml)。 (3)直接在hbase-site.xml中添加。...从上述三种方法当中,目测是第一种方法比较靠谱,当然要同步配置文件还有别的方法,后续再进行介绍。...---- Hbase配置文件同步的脚本 以下这两个脚本都可以实现集群的hbase配置文件同步,第二个还带有删除之前配置文件的方法,用的时候注意一些 #!
以公司常用的机器配置模版为例,通常每台机器会挂载12块盘,每块盘提供5T存储,因此每台机器可对外提供约60TB的存储容量。...针对cacheOnWrite特性优化了内存使用(详细可参考HBASE-23107) 针对数据读取操作避免重复预热。...读写链路GC优化 针对时延响应要求比较高的java系统,GC往往是最为头疼的问题,如果读写链路有大量的临时对象创建,YGC的执行频率将变得异常频繁。...然而通过对RS进程进行profile发现,整个读写链路的GC优化其实还不够彻底,在很多功能链路上还是遗漏了一些细节,比如: ?...以上便是有关GC链路的一些优化处理,核心思想主要是采用池化管理机制来降低临时对象的空间申请与释放行为,代码层面主要是通过ByteBuffer池来进行空间管理并配合Unsafe的使用来跳过一些边界检查行为
使用hbase的目的是为了海量数据的随机读写,但是在实际使用中却发现针对随机读的优化和gc是一个很大的问题,而且hbase的数据是存储在Hdfs,而Hdfs是面向流失数据访问进行设计的,就难免带来效率的下降...HBase中遇到的一些问题和解决方案。...HBase的设计是分层结构的,依次是DB逻辑层、FS逻辑层、底层系统逻辑层。...注:关于拿Flash/SSD做cache,可以参考HBase BucketBlockCache(HBASE-7404) ?...加州大学圣迭戈分校(UCSD)和微软亚洲研究院(MSRA)都曾经设计专门的数据中心网络拓扑来优化网络I/O负载,相关研究成果在计算机网络顶级会议SIGCOMM上发表了多篇论文,但是由于其对网络路由器的改动伤筋动骨
关于Hbase的cache配置 在hbase中的hfilecache中,0.96版本号中新添加了bucket cache, bucket cache通过把hbase.offheapcache.percentage...配置为0来启用, 假设hbase.offheapcache.percentage的配置值大于0时,直接使用堆外内存来管理hbase的cache, 通过把hfile.block.cache.size...a.首先读取hbase.bucketcache.ioengine配置的值,可配置项为 file:/path/cache.data 基中的/path表示详细的文件路径,也就是SSD这类的快速磁盘...offheap 使用堆外内存 heap 不使用堆外内存 b.通过hbase.bucketcache.size配置cache的大小, 这里注意下规则;假设配置的值是0-1之间的小数时...,表示hbase堆的百分比 否则表示配置的多少个MB的值,如此处配置为1024那么表示配置有1GB的cache float bucketCachePercentage = conf.getFloat
hadoop 2.7.2 安装,参考 http://blog.csdn.net/wzy0623/article/details/50681554 三、安装配置hbase 1....修改三个配置文件 cd hbase/conf vi hbase-env.sh # 添加以下内容 export JAVA_HOME=/home/grid/jdk1.7.0_75 export...HBASE_HOME=/home/grid/hbase export HBASE_LOG_DIR=/tmp/grid/logs export HBASE_MANAGES_ZK=true vi hbase-site.xml...将修改后的 hbase 目录同步到其它节点 scp -r hbase slave1:/home/grid/ scp -r hbase slave1:/home/grid/ 四、启动hbase 1....启动hbase /home/grid/hbase/bin/start-hbase.sh 3.
● 线上配置为true ● 默认值:false hbase.zookeeper.quorum ● zookeeper集群的URL配置,多个host中间用逗号(,)分割 ● 线上配置 <property...● 线上配置:kerberos ● 默认值:空 hbase.security.authorization ● HBase是否开启安全授权机制 ● 线上配置: true ● 默认值: false...Full GC,提高整体性能 ● 线上配置:true ● 默认配置: true hbase.regionserver.maxlogs ● regionserver的hlog数量 ● 线上配置...:10 ● 默认配置:3 hbase.hstore.compaction.max ● 单次minor compact最多的文件个数 ● 线上配置:30 ● 默认配置:10 hbase.hstore.blockingStoreFiles...默认配置:Long.MAX_VALUE hbase.rpc.timeout ● RPC请求timeout时间 ● 线上配置:300000(5min) ● 默认配置:60000(10s) hbase.regionserver.region.split.policy
我们在用hbase的api对hbase进行scan操作的时候,可以设置caching和batch来提交查询效率,那它们之间的关系是啥样的呢,我们又应该如何去设置? 首先是我们的客户端代码。...这就好说啦,这样我们就可以用来优化我们的scan查询了,在查询的时候,按照查询的列数动态设置batch,如果全查,则根据自己所有的表的大小设置一个折中的数值,caching就和分页的值一样就行。
}/bin/hbase mapredcp` (2)永久生效:在/etc/profile配置 #HBASE_HOME export HBASE_HOME=/opt/module/hbase 使/etc/profile...函数进行一些分析操作了 hive (default)> select * from relevance_hbase_emp; 第7章 HBase 优化 7.1 高可用 在 HBase 中 Hmaster...所以 HBase 支持对 Hmaster 的高可用配置。...6.优化 HStore 文件大小 hbase-site.xml 属性:hbase.hregion.max.filesize 解释:默认值10737418240(10GB),如果需要运行 HBase 的 ...7.优化 hbase 客户端缓存 hbase-site.xml 属性:hbase.client.write.buffer 解释:用于指定 HBase 客户端缓存(即 BlockCache 大小),增大该值可以减少
新建 Maven 项目,在 pom.xml 文件中配置 HBase 的 JAR 包依赖,项目会自动下载所需的依赖包,并自动实现依赖导入: ...配置文件 Configuration configuration = HBaseConfiguration.create(); configuration.set("hbase.zookeeper.quorum...预分区实现方法代码: //创建表并进行预分区 public static void hBaseSplit() throws IOException { //HBase 配置文件,配置 Zookeeper...VM options,配置 log4j 的路径: -Dlog4j.configuration=file:/G:/hugo/HBaseDMR/src/main/resources/log4j.properties...图1-3-7:配置 log4j 属性文件路径 注意替换为自己的项目路径。
领取专属 10元无门槛券
手把手带您无忧上云