目前我的实际配置是4台8核CPU,装4个regionServer,同时读写CPU load维持在4左右,iostat查看,数据写入率也很低。
所以只能从代码层面粗略分析下:
其实hbase写入的过程大方向还是比较简单的:
1.如果有必要刷新MemStoreMemory,这个过程会短暂的持有锁,因为需要做一些CPU中的计算,(我个人觉得问题不是很大),因为作为大头的compactionRequested是异步线程去执行的。
2.写入到MemStoreMemory,这边会持有splitsAndClosesLock的读锁,不过该锁只在close的时候会去获取写锁。
3.接着持有updatesLock读锁。这把锁就很危险了,因为前面讲过,如果flushcache的事件被触发的话,那么flushRegion的时候就会拿到updatesLock读锁。这边就会卡住很长一段时间了。
4.将数据写入到memStoreMemory,这个过程在begin和complete阶段会对writeQueue进行同步。不过应该不是性能瓶颈的关键。
接下去是分析写的过程:
在读取的时候获取scanner的时候会持有newScannerLock读锁。但是在flushcache的时候会持有newScannerLock写锁,这边也是个严重的问题。
总结:
分析了以上过程,关键的问题还是在于MemStoreMemory太小,不断刷新,在写入的时候导致updatesLock处卡住。读取会在newScannerLock处卡住。
要解决这个问题就得增加MemStoreMemory的大小,并且增加机器数量,否则只能是杯水车薪了。。。
应该是flush影响读和写。
split影响写
那么,我们可以通过减少flush的过程(但是会增加单次flush时间),达到提升读的性能,牺牲部分写入的时间
具体是否这样稍后回去实际跑测一下再回来阐述。
分享到:
相关推荐
这个jar包是eclipse开发hbase相关数据接口的一个关键jar包。
hadoop-0.20.2与hbase-0.20.6为比较稳定的配置版本 HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
Java Hbase jar api hbase-0.20.6.jar hadoop-core-0.20.1.jar commons-logging-1.1.1.jar zookeeper-3.3.0.jar log4j-1.2.91.jar
自己制作的一个简单的HBase的API.便于使用。
HBase 元数据修复工具包。 ①修改 jar 包中的application.properties,重点是 zookeeper.address、zookeeper.nodeParent、hdfs....③开始修复 `java -jar -Drepair.tableName=表名 hbase-meta-repair-hbase-2.0.2.jar`
赠送源代码:phoenix-core-4.7.0-HBase-1.1-sources.jar; 赠送Maven依赖信息文件:phoenix-core-4.7.0-HBase-1.1.pom; 包含翻译后的API文档:phoenix-core-4.7.0-HBase-1.1-javadoc-API文档-中文(简体)版.zip; ...
hbase-sdk是基于hbase-client和hbase-thrift的原生API封装的一款轻量级的HBase ORM框架。 针对HBase各版本API(1.x~2.x)间的差异,在其上剥离出了一层统一的抽象。并提供了以类SQL的方式来读写HBase表中的数据。对...
《Phoenix与HBase的深度解析:基于phoenix-hbase-2.4-5.1.2版本》 在大数据处理领域,Apache HBase和Phoenix是两个至关重要的组件。HBase作为一个分布式、列式存储的NoSQL数据库,为海量数据提供了高效、实时的访问...
总的来说,"phoenix-hbase-1.4-4.16.1-bin"为HBase引入了SQL的便利性,使得大数据分析更为高效。但使用时也需注意其与HBase的交互机制,以及如何优化查询以适应分布式环境。通过深入理解和实践,开发者可以充分利用...
总之,HBase-1.2.1的二进制压缩包提供了在Hadoop环境下部署和运行HBase所需的所有组件,适用于处理大量非结构化或半结构化数据的场景,如实时分析、日志处理、物联网应用等。正确解压并配置后,用户可以充分利用...
"phoenix-5.0.0-HBase-2.0-client.jar" 文件就是Squirrel SQL Client为了连接和操作Phoenix在HBase上的数据所必需的库文件。 Phoenix是一个高性能的关系型SQL层,构建在HBase之上,旨在解决HBase上的复杂查询和大...
总的来说,`phoenix-hbase-2.2-5.1.2-bin.tar.gz`是大数据存储和分析领域的重要工具,它结合了HBase的分布式存储能力和Phoenix的SQL查询能力,为大数据处理提供了一种高效、易用的解决方案。无论是对大数据新手还是...
`hbase-1.2.0-cdh5.14.2.tar.gz` 是针对Cloudera Distribution Including Apache Hadoop (CDH) 5.14.2的一个特定版本的HBase打包文件。CDH是一个流行的Hadoop发行版,包含了多个大数据组件,如HDFS、MapReduce、YARN...
HBase(hbase-2.4.9-bin.tar.gz)是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System...
这个“hbase-2.4.17-bin”安装包提供了HBase的最新稳定版本2.4.17,适用于大数据处理和分析场景。下面将详细介绍HBase的核心概念、安装步骤以及配置和管理。 一、HBase核心概念 1. 表(Table):HBase中的表是由行...
通过深入学习和研究`hbase-2.4.11`的源码,开发者不仅可以理解HBase的基本原理,还能掌握如何优化性能,解决实际应用中的问题,为大数据处理提供更强大的支持。无论是对HBase的开发、运维还是调优,这份源码都是宝贵...
hbase-1.2.6.1-bin.tar.gz,hbase-1.2.6.1-bin.tar.gz,hbase-1.2.6.1-bin.tar.gz,hbase-1.2.6.1-bin.tar.gz,hbase-1.2.6.1-bin.tar.gz,hbase-1.2.6.1-bin.tar.gz,hbase-1.2.6.1-bin.tar.gz,hbase-1.2.6.1-bin.tar.gz
phoenix-client-hbase-2.2-5.1.2.jar
标题中的“hbase-2.4.11-bin.tar.gz”是指HBase的2.4.11稳定版本的二进制压缩包,用户可以通过下载这个文件来进行安装和部署。 HBase的核心设计理念是将数据按照行和列进行组织,这种模式使得数据查询和操作更加...
hbase-client-2.1.0-cdh6.3.0.jar