HBase写的初步测试中的表现

第四年HBase。在上线的机HBase集群做一个初步的测试写入性能。下面具体说明做测试内容。

说明

HBase周围环境

0.96版本号,8台region server。默认配置

写数据说明

单column family。两个column qualifier的值为字符串+随机8位正整数,Row Key为两个quailifer值相连后串上随机Long

比方:val1 = dd1977285, val2 =cc6549921, rowkey = rondom.nextLong() + val1 + val2

測试涵盖到的维度

单线程、多线程比較

Rowkey不hash、Rowkey MD5 Hash (hash后每份rowkey等长,分发Region Server时随机性更好)

单Put写(每次Put一次RPC)、批量写(带write buffer的刷写)

批量写情况下write buffer的大小设置

測试未涵盖到的维度

WAL是开启的(线上应用不推荐关闭WAL来换取写速度)

备份数没有改(3份)

每台Region Server的RPC handler数目没有设定(本次单机測试中,RPC响应肯定不会是瓶颈)

没有使用压缩(数据量小)

没有比較ColumnQualifier数目增长

关于Region Server很多其它的系统设置都是默认的(请求数分布、region文件块大小设置及Compaction影响、Split文件数阀值等等)

结果

測试结果比較:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGVsaWNr/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" />

总结

批量写性能提升不少

线上应用最好是禁用buffer刷写功能的。即每个Put一次RPC写。只是看到这样的情况下写速度慢。考虑到机器、网络环境的区别的话。预计能上1K

启用buffer刷写功能的话,要避免未flush的put记录丢失。(HTable在close的时候最后是会自己主动flush,我们在写服务节点故障的时候也须要flush一次)

Rowkey哈希后性能有小量提升

Rowkey Hash之后对写性能的确有小量提升,但假设要基于rowkey做范围查找的话,rowkey可能不适合hash,具体看业务场景再考虑。

单线程每秒上万行写能力

本机上单线程在开启writerbuffer刷写后,每秒写行数轻松上万。

多线程下,本机上每个线程最多到每秒7K行的速度,相信考虑到机器、网络环境的区别的话,也能上万。

并发写能力乐观

本机没有模拟到多个节点上百线程的并发写场景。只是依据前一点看的话,还是乐观的。并且本次測试的集群级别的设置都是默认的,集群规模也一般,有非常多集群级别的优化手段。

等项目开发到一定阶段时候,会測试多节点上百线程并发写的场景,且依据对HBase逐步的了解,之后会有很多其它经验,相关測试报告再具体产出,这份初步的測试就大致先了解下。

掌声 :)

版权声明:本文博主原创文章,博客,未经同意不得转载。

时间: 2025-01-01 21:28:42

HBase写的初步测试中的表现的相关文章

HBase写性能初步测试

背景 刚接触HBase,在本机上对线下HBase集群做了初步的写性能测试,下面对测试内容做详细说明. 说明 HBase环境 0.96版本,8台region server,默认配置 写数据说明 单column family,两个column qualifier的值为字符串+随机8位正整数,Row Key为两个quailifer值相连后串上随机Long 比如:val1 = dd1977285, val2 =cc6549921, rowkey = rondom.nextLong() + val1 +

Cgroup和Namespace在测试中的使用(上)

Cgroup和Namespace在测试中的使用(上) 很多时候需要测试程序在资源受限情况下的表现,普通的做法可能是不断对系统加压使能够分配给目标程序的资源变少,换另一个思路思考,可以尝试限制分配给目标程序的资源总数,使得机器状态健康的情况下让程序资源使用达到饱和. 作为一个正在做着容器项目的人,知道容器技术是依靠Cgroup和Namespace来实现的.在容器中,cpu和内存资源是使用Cgroup来控制,PID.IPC.网络等资源是通过Namespace来划分.在程序没有部署在容器的情况下,我们

Hbase写数据,存数据,读数据的详细过程

转自:http://www.aboutyun.com/thread-10886-1-1.html 附HBase 0.94之后Split策略: http://www.aboutyun.com/thread-11211-1-1.html 1.Client写入需要哪些过程?2.Hbase是如何读取数据的? Client写入 -> 存入MemStore,一直到MemStore满 -> Flush成一个StoreFile,直至增长到一定阈值 -> 出发Compact合并操作 -> 多个Sto

主流浏览器开发人员工具(F12)在安全测试中的优与劣

<!--本文所指主流浏览器为Chrome.Firefox.IE--> <!-- 0x01 场景假设 0x02 Chrome 0x03 Firefox 0x04 IE 0x05 结论 --> 0x01 场景假设 三款浏览器开发人员工具的使用及页面调试等技能,本文不做描述,只说在安全测试中遇到情况. 考虑如下场景:现在要对一个Web应用做安全测试,客户端/服务端使用HTTPS双向认证,客户端使用U盾一类的工具. 根据上述场景:缺少证书的任意一环,通信无法发生:客户端私钥写在硬件中,无法

众包测试中的游戏化

Mahesh Gudipati有超过10年的测试经验,参与过不少不同领域的项目.他在数据仓库/BI测试,需求预测测试,大数据测试和产品测试方面有丰富的经验.他在多个ETL/DW测试项目中实现了自动化技术,并因为开发出了ETL/DW测试的端对端解决方案获得了一项专利.他是一名获PMP认证的项目经理,还管理过多个数据仓库测试项目.他帮助建立公司内部的群体测试流程,最近还一直在开发数据项目中的技术的测试解决方案. Jaya Bhagavathi Bhallamudi在IT行业干了超过16年.她是一名C

游戏测试中的sql语句

基本的内容在这里就不写了. 游戏测试中经常使用到1个复合条件的 游戏内一般要查下用户剩余多少钱.例如有个字段为energy代表体力 表名为db_role 关键字段 id,name(唯一) 要查询条件为 energy在1500一档,然后二档是500~1000之间的 语句为 select id,name,energy from db_name where energy=1500 OR(energy >=500 and energy<1000) 喜欢as的话 可以再要看的列之前加as  select

【转】移动App测试中的最佳做法

一说起软件测试,测试员想到肯定是去检查文件,功能,API,性能并确定软件是否安全,以及关于软件特定部分的其他事项.但是对于移动测试,测试员不得不基于用户移动使用模式考虑移动相关的功能. 本文是基于我的工作经验而写的.作为一名敏捷软件开发团队的软件质量保证经理,我一心投入iPhone,Android,WindowsPhone7的移动apps和移动webapps.在XING移动团队的日常工作以及与其他移动测试专家交流的过程中,我深刻了解了移动测试工作的困难.渐渐地,我明确了什么是帮助改进同事们和我的

Cgroup和Namespace在测试中的使用(下)

Cgroup和Namespace在测试中的使用(下) Namespace介绍 使用Namespace又叫做命名空间,可以让每个进程组具有独立的PID.IPC和网络空间等,也就是说这些系统资源不再是全局性的,而是属于特定的Namespace,每个Namespace里面的资源对其他Namespace都是透明的,从而达到资源的隔离效果. 目前namespace的种类如下 分类 系统调用参数 Mount namespaces CLONE_NEWNS UTS namespaces CLONE_NEWUTS

[转]移动App测试中的最佳做法

Daniel Knott 用过各种不同编程语言和软件质量保证工具.他在软件开发和测试方面干了七年,自2010年起,他一直在德国汉堡的XING AG公司就职,几个项目里,比如XING调查和XING建议,他负责测试管理,测试自动化和测试执行.Daniel现在是XING移动和XING API团队的质量保证团队负责人.在XING移动团队中,他还负责XING安卓和iPhone Apps的测试管理和测试自动化.Daniel在包括像Robotium, KIF (Keep It Functional), Sel