HBase配置优化

内存总是不够???| hbase内存优化配置 hbase是个比较吃内存的大数据组件,虽然数据存在hdfs中,但是不像mysql或者elasearch那样有索引的优势,只能用内存缓存数据来实现快速存取。 hbase安装时候,通常都需要修改配置文件,默认配置通常是8G内存的配置。 配置文件有问题的话,后果是:hbase集群启动,直接报错,启动失败。所以说,一个好的hbase内存配置,很重要。 数据组hbase好端端的,老是不够,然后非常协调... 阅读详情

hbase配置修改:

(split是因为hfile过多,进行split,split之后进行compact  

可以可能要有人喷了,hfile多了应该compact才对啦。贴出0.98.1的代码,大致逻辑是region没有block的compact(优先级大于等于1的),则进行split)

private boolean flushRegion(final FlushRegionEntry fqe) {    HRegion region = fqe.region;    if (!region.getRegionInfo().isMetaRegion() &&        isTooManyStoreFiles(region)) {//这个函数使用了参数      if (fqe.isMaximumWait(this.blockingWaitTime)) {        LOG.info("Waited " + (System.currentTimeMillis() - fqe.createTime) +          "ms on a compaction to clean up 'too many store files'; waited " +          "long enough... proceeding with flush of " +          region.getRegionNameAsString());      } else {        // If this is first time we've been put off, then emit a log message.        if (fqe.getRequeueCount() <= 0) {          // Note: We don't impose blockingStoreFiles constraint on meta regions          LOG.warn("Region " + region.getRegionNameAsString() + " has too many " +            "store files; delaying flush up to " + this.blockingWaitTime + "ms");          if (!this.server.compactSplitThread.requestSplit(region)) {//这里是关键的逻辑,逻辑是region没有block的compact(优先级大于等于1的),则进行split;否则进行compact            try {              this.server.compactSplitThread.requestSystemCompaction(                  region, Thread.currentThread().getName());            } catch (IOException e) {              LOG.error(                "Cache flush failed for region " + Bytes.toStringBinary(region.getRegionName()),                RemoteExceptionHandler.checkIOException(e));            }          }        }        // Put back on the queue.  Have it come back out of the queue        // after a delay of this.blockingWaitTime / 100 ms.        this.flushQueue.add(fqe.requeue(this.blockingWaitTime / 100));        // Tell a lie, it's not flushed but it's ok        return true;      }    }    return flushRegion(region, false);  }


hbase.hstore.blockingStoreFiles hfile数量上限,如果超过,则进行阻塞写,进行split | compact

hbase.hstore.blockingWaitTime 阻塞写的时间上限 ,到时间没进行split或compact(就是没锁上,则继续)


最大region 500G,禁止常规的split情况

 <property>

 <name>hbase.hregion.max.filesize</name>

 <value>536870912000</value>

 </property>


 一个store中30个hfile的上限

 <property>

<name>hbase.hstore.blockingStoreFiles</name>

<value>30</value>

 </property>


一分半的写的阻塞上限

<property>

<name>hbase.hstore.blockingWaitTime</name>

<value>90000</value>

</property>


hbase.regionserver.regionSplitLimit region包含的最大region数, split需要检查现有region不大于这个compact Priority逻辑


 初始化为int.minvalue,user为1,被block>1


 -----------------------------------------------


  DEBUG [LruStats #0] hfile.LruBlockCache: Total=11.78 GB, free=1.01 GB, max=12.79 GB,

 memcache设置256

 memcache使用mslb


使用mslb


<property>

<name>hbase.hregion.memstore.mslab.enabled</name>

<value>true</value>

</property>


memcash的flush的条件256M

<property>

<name>hbase.hregion.memstore.flush.size</name>

<value>268435456</value>

</property>

 

安全检查memstore使用region_heap的百分比 , 强制flush

</property> 

base.regionserver.global.memstore.lowerLimit 

<property> 

    <name>hbase.regionserver.global.memstore.lowerLimit</name> 

    <value>0.36</value> 

    <description> 

        一个RS中所有的memstore的总容量超过堆的该百分比限制后,将被强制flush到磁盘。 

        Maximum size of all memstores in a region server before flushes are forced. Defaults to 35% of heap. 这个值与 

        hbase.regionserver.global.memstore.upperLimit相等,以减小由于到达该值触发flush的几率,因为这种flush会block写请求 

    </description> 

</property> 


安全检查memstore使用region_heap的百分比 , 强制flush,并阻塞写请求

<property> 

    <name>hbase.regionserver.global.memstore.upperLimit</name> 

    <value>0.4</value> 

    <description> 

        一个region中所有memstore的总大小超过堆的该百分比限制时,会发生强制flush,并block更新请求。 

        默认是堆大小的40%。更新会被阻塞,并发生强制flush,直到所有memstore的大小达到 

        hbase.regionserver.global.memstore.lowerLimit的限制。 

    </description> 

</property> 


达到flushsize指定倍数时,会强制flush,并阻塞请求

<property> 

    <name>hbase.hregion.memstore.block.multiplier</name> 

    <value>2</value> 

    <description> 

        当一个region的memstore达到hbase.hregion.memstore.block.multiplier * hbase.hregion.flush.size的指定倍数时,阻塞写请求。 

        这是一个避免在写请求高峰时期避免memstore耗尽的有效设置。如果没有上限限制,memstore被填满后发生flush时, 

        会消耗大量的时间来处理合并和分割,甚至导致OOM。 

    </description> 

</property> 


----------------------------------------------------


 gc的问题

  3.5分钟挂掉

  11 分钟

 (70)提前gc,减少每个gc耗时

 hbase-env.sh中

 export HBASE_REGIONSERVER_OPTS="-Xmx16g -Xms16g -Xmn128m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:$HBASE_HOME/logs/gc-hbase.log"


 ----------------------------------------------------


 compact时间是否过长??

 compact的时候gc过长

2015-02-25 11:54:50,670 WARN  [regionserver60020.periodicFlusher] util.Sleeper: We slept 565427ms instead of 10000ms, this is likely due to a long garbage collecting pause and it's usually bad, se


e http://hbase.apache.org/book.html#trouble.rs.runtime.zkexpired


2015-02-25 11:54:50,670 WARN  [DataStreamer for file /hbase/WALs/host64,60020,1422073827259/host64%2C60020%2C1422073827259.1424835178059 block BP-1540478979-192.168.5.117-1409220943611:blk_1097821

214_24084365] hdfs.DFSClient: Error Recovery for block BP-1540478979-192.168.5.117-1409220943611:blk_1097821214_24084365 in pipeline 192.168.5.64:50010, 192.168.5.95:50010: bad datanode 192.168.5.

64:50010

2015-02-25 11:54:50,670 WARN  [regionserver60020.compactionChecker] util.Sleeper: We slept 565427ms instead of 10000ms, this is likely due to a long garbage collecting pause and it's usually bad,

see http://hbase.apache.org/book.html#trouble.rs.runtime.zkexpired

2015-02-25 11:54:50,670 INFO  [regionserver60020-SendThread(host141:42181)] zookeeper.ClientCnxn: Client session timed out, have not heard from server in 577669ms for sessionid 0x44add78c8664fdb,

closing socket connection and attempting reconnect


 转为手动compact,需要逐步手动compact

 <property>

<name>hbase.hregion.majorcompaction</name>

<value>0</value>

</property> 


------------------------------------------------------


regionserver里的handler数量 50

<property>

<name>hbase.regionserver.handler.count</name>

<value>50</value>

<source>hbase-site.xml</source>

</property>


--------------------------------------------------


wal大小,影响memcash flush

当前hbase.regionserver.hlog.blocksize * hbase.regionserver.maxlogs   128*32=4G

但是hbase.regionserver.global.memstore.lowerLimit * HBASE_HEAPSIZE   0.38*32=12.16G

    hbase.regionserver.global.memstore.upperLimit * HBASE_HEAPSIZE   0.4*32=12.8

    注意:确保hbase.regionserver.hlog.blocksize * hbase.regionserver.maxlogs 比hbase.regionserver.global.memstore.lowerLimit * HBASE_HEAPSIZE的值只高那么一点点。. 

改为

<property>

<name>hbase.regionserver.maxlogs</name>

<value>104</value>

</property>


<property>

<name>hbase.regionserver.global.memstore.lowerLimit</name>

<value>0.36</value>

</property>


128*105=13G

0.36*32=11.52G

0.4*32=12.8G

原则是让memflush不阻塞,禁止因为wal触发的flush,wal会进行多region flush,并且阻塞,这是最坏的情况


---------------------------------------------------


blockcache是读取时使用内存

<property>

<name>hfile.block.cache.size</name>

<value>0.4</value>

</property>


----------------------------------------------------


超时时间待验证,设置或过长

<property>

       <name>hbase.rowlock.wait.duration</name>

       <value>90000</value>

       <description> 

        每次获取行锁的超时时间,默认为30s

       </description> 

</property>

<property>

<name>hbase.regionserver.lease.period</name>

<value>180000</value>

<description> 

客户端每次获得rs一次socket时间

</description> 

</property>


<property>

       <name>hbase.rpc.timeout</name>

       <value>180000</value>

<description> 

rpc超时时间

</description> 

</property>


<property>

       <name>hbase.client.scanner.timeout.period</name>

       <value>180000</value>

<description> 

客户端每次scan|get的超时时间

</description> 

</property>


<property>

        <name>hbase.client.scanner.caching</name>

        <value>100</value>

<description> 

客户端每次scan的一个next,获得多少行,默认1

</description> 

</property>


华为昇腾服务器npu中安装paddle,pytorch等环境,训练代码迁移适配等问题记录 参考文档:https://github.com/PaddlePaddle/PaddleCustomDevice/blob/develop/backends/npu/README_cn.md 阅读详情

相关推荐

Windows10 使用Apple Studio Display显示器的设置

AppleStudioDisplay显示器购买花了近1.5wRMB,由于为windows台式机,显卡为NVIDAGTX-1660,而AppleStudioDisplay只有雷电接口,尝试了很多种转接方式,均以失败告终,最终使用贝尔金VR线成功,,附图如下这边也测试过NVIDARTX-2060Super、NVIDAGTX-1650显卡,都是能点亮的,NVIDA1650存在关机重启后黑屏,不稳定现象,2060也存在关机重启后不亮现象,后面发现1660s很稳定。...

爱意随风起,人生不可弃。 1万+

hbase 配置优化

hbase的优化的一点经验,一直没做这个笔记,是因为hbase自身也有设计缺陷,所以有些配置不能说优化,只能说因为hbase自身缺陷可以将就着用,不说废话了,以下就是优化的一点笔记   hbase配置修改: (split是因为hfile过多,进行split,split之后进行compact   可以可能要有人喷了,hfile多了应该compact才对啦。贴出0.98.1的代码,大致逻辑...

199

基于STM32 FOC下桥三电阻采样方式的电机相电流重构方法

如何提高三电阻采样的调制率

wanrenqi的博客 9191

【分布式数据库】HBase性能调优(二)

NameNode的元数据备份使用SSD、定时备份 NameNode 上的元数据,每小时或者每天备份,如果数据极其重要,可以5~10分钟备份一次。备份可以通过定时任务复制元数据目录即可。2、为NameNode指定多个元数据目录,使用dfs.name.dir或者dfs.namenode.name.dir指定。一个指定本地磁盘,一个指定网络磁盘。这样可以提供元数据的冗余和健壮性,以免发生故障。

康师傅没有眼泪 3618

PCIe Crosslink

PCIe Crosslink(交叉连接)是一种特殊的PCIe链路连接方式,允许两个PCIe设备(通常是Root Complex或Endpoint)是指两个PCIe设备(如两个CPU、两个FPGA或两个GPU)通过PCIe链路直接连接,形成点对点(P2P)通信通道。:两个Intel/AMD CPU通过PCIe Crosslink直接通信(替代UPI/Infinity Fabric)。:主板需提供PCIe Crosslink连接(如特定插槽支持x16/x8 Crosslink)。

zly8865372的博客 1636

RK3588+TRL8367s 四网口千兆交换机配置与优化实战

本文详细介绍了基于RK3588高性能SoC与TRL8367s千兆交换芯片构建四网口交换机的完整实战流程。内容涵盖硬件连接、设备树配置、内核驱动加载、性能优化及常见问题排查,重点解析了RGMII时序调试、DSA架构配置等关键步骤,为嵌入式网络设备开发提供实用指南。

weixin_29266647的博客 669

hbase优化

hbase split条件: 1、split策略 2、flush之前会检测区域中HStoreFile数目是否超过hbase.hstore.blockingStoreFiles,如果超过且没有等待超时会调用CompactSplitThread.requestSplit(HRegion) https://blog.youkuaiyun.com/gingerredjade/article/details/63696842 ...

程序员里的小女生 586

别再为电路自激发愁了:手把手教你用吸波材料搞定微波腔体谐振(附HFSS仿真设置)

本文详细解析了微波腔体谐振问题的工程解决方案,重点介绍了吸波材料的选型、安装工艺及HFSS仿真设置。通过实际案例和计算工具,帮助射频工程师有效抑制腔体自激,提升系统稳定性。特别适用于35GHz毫米波雷达等高频电路设计场景。

weixin_42662293的博客 383

hbase参数调优

HBase参数调优 hbase.regionserver.handler.count 该设置决定了处理RPC的线程数量,默认值是10,通常可以调大,比如:150,当请求内容很大(上MB,比如大的put、使用缓存的scans)的时候,如果该值设置过大则会占用过多的内存,导致频繁的GC,或者出现OutOfMemory,因此该值不是越大越好。 hbase.hregion.max.filesize 配置region大小,默认是10G,region大小一般控制在几个G比较合适,可以在建表时规划好region数量

weixin_44077750的博客 3190

Win7 x64位系统下几乎完美使用安装RTX3050 6G显卡驱动详细教程

RTX3050 6G显卡驱动安装指南:由于该显卡发布时间晚于驱动,需手动修改安装文件。首先在NVIDIA官网下载驱动并解压,通过设备管理器获取硬件ID(PCI\VEN_10DE&DEV_2584),然后在解压目录的.inf文件中添加对应的设备标识。安装完成后可能出现设备管理器感叹号问题,推荐通过命令提示符启用测试模式(bcdedit /set testsigning on)解决,此方法无需每次启动按F8,但会显示测试模式水印。文中提供了详细的图文操作步骤和两种解决方案。

m0_67194883的博客 2886

利用R语言通过holtwinters模型进行预测

使用Holt-Winters模型进行预测的第一步是对模型进行拟合。该函数需要两个参数:您的时间序列数据和一个“seasonal”参数,该参数指示您的数据的周期性(例如,如果您的数据按月记录,则应将“seasonal”参数设置为12,因为一年有12个月)。拟合模型后,您可以使用“forecast()”函数进行预测。该函数需要两个参数:您的拟合模型以及您要进行预测的时间段的长度。要使用Holt-Winters模型,您需要安装并加载“forecast”包。以下是进行Holt-Winters模型预测的示例代码。

Mrrunsen的博客 1696

HBase系列——HBase总结

HBase 1.1 HBase写数据 1.1.1 写数据流程 client发送写的请求,获取meta region路由信息--------->zk集群; zk返回meta region的路由信息(HRegionServer1)---------->client client获取根据rowkey获取在meta表中的region信息----->HRegionServer1 HRegionServer1返回region信息(HRegionServer2)-------------->cli

qq_32961283的博客 1171

第五章 TTM 后备管理:5.6系统内存域

系统内存域由 TTM 内置资源管理器管理,通过 ttm_tt 承载页信息,依赖 ttm_pool 提供物理页。ttm_tt 管理页数组、缓存属性与状态标志,支持外部页与换出机制。初始化分 ttm_tt_init 与 ttm_sg_tt_init,生命周期包括创建、填充、释放与销毁。页池针对 write-combined、uncached 及一致性 DMA 分配的页进行缓存,提升性能并减少 TLB 刷新。分配时高阶优先、批量设置缓存属性,回收时清零后归还池中,确保高效复用。

图形/计算GPU的驱动与虚拟化技术分享园地 2557

HBase高级优化配置

hbase.regionserver.optionalcacheflushinterval 默认是1hour,regionserver每个region上的memstore会每个小时flush一次,这也是flush的触发条件之一,代码在PeriodicMemstoreFlusher中   hbase.regionserver.regionSplitLimit 一个regionserver上的...

进一步有一步的欢喜 1747

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

HBase核心优化配置参数

Region hbase.hregion.max.filesize 默认10G,简单理解为Region中任意HStore所有文件大小总和大于该值就会进行分裂。 解读:实际生产环境中该值不建议太大,也不能太小。太大会导致系统后台执行compaction消耗大量系统资源,一定程度上影响业务响应;太小会导致Region分裂比较频繁(分裂本身其实对业务读写会有一定影响),另外单个RegionServer中必然存在大量Region,太多Region会消耗大量维护资源,并且在rs下线迁移时比较费劲。综合考虑,建议线上

路飞 936

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

hbase参数配置优化

hbase.rootdir   这个目录是region server的共享目录,用来持久化Hbase。URL需要是’完全正确’的,还要包含文件系统的scheme。例如,要表示hdfs中的/hbase目录,namenode运行在namenode.example.org的9090端口。则需要设置为hdfs://namenode.example.org:9000 /hbase。默认:file:///tmp/hbase-${user.name}/hbase hbase.master.port   Hbase...

BigData 1141

HBase内存配置及JVM优化

本文从HBase的内存布局说起,先充分了解HBase的内存区的使用与分配,随后给出了不同业务场景下的读写内存分配规划,并指导如何分析业务的内存使用情况,以及在使用当中写内存Memstore及读内存扩展bucketcache的一些注意事项,最后为了保障群集的稳定性减少和降低GC对于集群稳定性的影响,研究及分享了一些关于HBase JVM配置的一些关键参数机器作用和范例,希望这些不断充实的经验能确保HBase集群的稳定性能更上一个台阶,大家有任何的想法和建议也欢迎一起讨论。

mnasd的博客 2750

hbase 优化(配置优化)

因官方Book Performance Tuning部分章节没有按配置项进行索引,不能达到快速查阅的效果。所以我以配置项驱动,重新整理了原文,并补充一些自己的理解,如有错误,欢迎指正。 配置优化 zookeeper.session.timeout 默认值:3分钟(180000ms) 说明:RegionServer与Zookeeper间的连接超时时间。当超时时间到后,ReigonServ

mllhxn的专栏 478

hbase配置优化

HBASE性能调优总结  配置优化 zookeeper.session.timeout 默认值:3分钟(180000ms) 说明:RegionServer与Zookeeper间的连接超时时间。当超时时间到后,ReigonServer会被Zookeeper从RS集群清单中移除,HMaster收到移除通知后,会对这台server负责的regions重新balance,让其他存活的 Regi

lzshentibang的专栏 557

HBase入门篇3-hbase 配置文件参数设置及优化

前两篇文件分别说到了我在学习HBase中的一些入门经验,而《HBase 入门3》这篇文章浅显的从几个方面谈谈HBase的一些优化技巧,只能作为我学习笔记的一部分,因为学多了怕忘,留给自己以后看看。 1 修改 linux 系统参数      Linux系统最大可打开文件

豹先生 5421

Hbase-之操作性能优化配置-RPC优化

Hbase-之操作性能优化配置-RPC优化 1 调整Hbase server的RPC处理能力 这里的server只要指的是regionserver,因为毕竟Hbase实际搞事情的还是regionserver,我们可以在hbase-site.xml中配置 主要取决你集群中regionserver中的核数,x可以配置hbase.regionserver.handler.count = x 可选的配置,按照不同的服务将读、写请求队列分别划分成不同的请求队列,参数为hbase.ipc.server.call

shufangreal的博客 1498

Trafodion 安装之HBase配置优化

Trafodion安装后,建议对HBase的配置参数做一些调整,如TimeOut相关,这些参数的调整可以减少甚至避免某些因为超时而导致的错误。Trafodion的安装脚本中已经做了部分HBase的配置调整,但可能不够全面,本文列出相关需要调整的参数,帮助大家在下次需要相关因为配置不当导致错误的时候可以做为借鉴。 参数 推荐值 hbase.master.distributed.log.spl

数据源的港湾 1527

java 配置hbase_hbase参数配置及优化

hbase参数配置及优化接触hbase已有半年的时间,查了很多资料,也参考了很多别人心得,也希望把自己的心得以及理解写出来,我把配置hbase必调的几个参数写一下,以及它们的意义。zookeeper.session.timeout这个参数的意义是regionserver在zookeeper的会话过期时间,默认是3分钟,如果regionserver 在zookeeper.session.timeou...

weixin_29758513的博客 654
上一篇: 6种Java序列化框架
下一篇: JUnit的各种断言
架构师的清醒
博客等级 码龄14年 291粉丝 397原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值