写在前面

本文只讲一个很简单的问题,YCSB对HBase集群的测试。虽然网上有很多介绍YCSB测试HBase的文章,但都是针对本地HBase伪分布式集群的。大家都知道,稍微正式一些的压测都会要求测试客户端与目标集群分离部署,而且伪分布式集群通常不会在生产环境下使用,本身也没有太大的压测意义。本文会着重介绍一下压测远程HBase完全分布式集群的不同之处。

正文

YCSB是Yahoo开源的性能测试工具,支持很多种类的NoSQL数据库测试,这里既包括了经典的HBase/Cassandra/MongoDB,也有近两年新推出的Spanner/Kudu等。此外,YCSB最大的特点是其灵活性,对于尚未纳入官方支持的NoSQL数据库,可以快速进行二次开发。如果你正在进行NoSQL数据库选型或者研发一款定制版Nosql数据库,那么YCSB一定是你居家旅行必备良药。

二次开发工作主要是com.yahoo.ycsb.DB的基础上定义自己的接口实现。DB是一个抽象类,定义了NoSQL数据库的5类典型操作,包括insert/update/delete/read/scan。你需要为自己的Nosql实现该上述方法。当然还有一些初始化(init)和收尾工作(cleanup)也要有相应的处理。

HBase是YCSB较早支持的NoSQL数据库,目前在主线版本上支持0.98/1.0/1.2/1.4/2.0几个版本(后两个版本是在2018-03-23增加的)。这些版本的主要差别在于对DB类的不同实现,阅读源码可以发现,在1.0版本后,DB的实现类并没有发生变化,1.2/1.4/2.0三个版本都是直接继承了1.0版,没有重载任何方法。从这点上来说,Ivan认为使用其中哪个版本测试应该都是OK的。

使用YCSB进行HBase完全分布式集群测试,主要是以下几个步骤。

1、搭建HBase分布式集群

Ivan的HBase版本为1.2.6,部署HBase集群具体步骤略去。

2、下载YCSB版本

Ivan选择的是YCSB0.13版本,如果使用master应该也是OK的,前文已经说过,这两个版本中HBase的访问接口是一样的。

wget https://github.com/brianfrankcooper/YCSB/archive/0.13.0-staging.zip
3、编译YCSB

执行进行编译。

mvn clean package

由于YCSB支持了很多NoSQL数据库,所以在编译时依赖的Jar包也比较多。Ivan尝试了几次编译,都由于下载依赖包超时失败,尤其是在cassandra部分。看了下maven的输出信息,超时的部分都是测试相关的。所以调整命令如下

mvn clean package -Dmaven.test.skip=true

编译顺利完成。

4、添加HBase配置

本文的重点来了!!!很多人容易犯晕的地方。

事实上,如果YCSB与HBase伪分布式集群合并部署时,这部分的配置是可以忽略的。YCSB通过上下文全局变量可以直接得到HBase的信息,实现压测。可能这就是网上很多文章并不去介绍配置的原因。

我们还是从YCSB官方文档找答案,在0.94/0.98/1.0三个版本中给出的配置方式完全不同,仔细阅读发现1.0版本实际上是特别针对Google BigTable的配置文件。这由于BigTable提供了对HBase的兼容API,YCSB将其作为一种NoSQL云服务也纳入了进来。但是此处的配置没有参考意义。在1.2版本中,虽然接口代码继承自1.0版本,但readme中明确提到配置文件要参考0.98版本,后续1.4/2.0的readme基本是照抄。

阅读0.98版本的readme,发现其实设置非常简单,我们只需要将HBase集群master节点下的hbase-site.xml文件拷贝到YCSB节点的某个位置,并在稍后的命令中指定即可。

网上有的文章会提到其他配置甚至脚步文件,这里Ivan明确的说,只需要hbase-site.xml,不需要其他文件!!!

Ivan的hbase-site.xml文件内容如下。

<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/bigdata/zookeeper-3.4.11/zkData</value>
</property>
</configuration>

事实上,YCSB主要是从中读取zookeeper的节点信息。

Ivan将hbase-site.xml拷贝到/home/ycsb-hbase/conf(也可根据你的环境定义其他路径)目录下

所以相应的,请修改YCSB本地的hosts文件,将机器名与IP的对应关系维护进去。

5、创建目标表

创建usertable表,这个是YCSB测试的前置条件,测试脚本中不会自动创建

create 'usertable','family'
6、执行测试命令

最后一步,只需要在命令行中增加 -cp 参数指定hbase-site.xml的路径即可。

例如以下命令。

1)加载数据

bin/ycsb load hbase10 -P workloads/workloada -cp /home/ycsb-hbase/conf -p table=usertable -p columnfamily=family -threads 100

2)执行scan测试

bin/ycsb run hbase10 -P workloads/workloade -cp /home/ycsb-hbase/conf -p table=usertable -p columnfamily=family -threads 100

打完收工。

最后啰嗦一句,YCSB测试HBase完全分布式集群的主要差异在于配置文件,即hbase-site.xml和修改本地hosts文件,目的是为了连接zookeeper集群。

更多YCSB介绍与测试命令可参考前文 NoSQL性能测试工具YCSB-Running a Workload

YCSB测试HBase远程完全分布式集群的更多相关文章

  1. HBase HA的分布式集群部署(适合3、5节点)

    本博文的主要内容有: .HBase的分布模式(3.5节点)安装    .HBase的分布模式(3.5节点)的启动 .HBase HA的分布式集群的安装 .HBase HA的分布式集群的启动    .H ...

  2. HBase 1.2.6 完全分布式集群安装部署详细过程

    Apache HBase 是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,是NoSQL数据库,基于Google Bigtable思想的开源实现,可在廉价的PC Server上搭建大规模结构化存 ...

  3. 基于HBase0.98.13搭建HBase HA分布式集群

    在hadoop2.6.0分布式集群上搭建hbase ha分布式集群.搭建hadoop2.6.0分布式集群,请参考“基于hadoop2.6.0搭建5个节点的分布式集群”.下面我们开始啦 1.规划 1.主 ...

  4. Hadoop+Hbase分布式集群架构“完全篇”

    本文收录在Linux运维企业架构实战系列 前言:本篇博客是博主踩过无数坑,反复查阅资料,一步步搭建,操作完成后整理的个人心得,分享给大家~~~ 1.认识Hadoop和Hbase 1.1 hadoop简 ...

  5. 暑假第二弹:基于docker的hadoop分布式集群系统的搭建和测试

    早在四月份的时候,就已经开了这篇文章.当时是参加数据挖掘的比赛,在计科院大佬的建议下用TensorFlow搞深度学习,而且要在自己的hadoop分布式集群系统下搞. 当时可把我们牛逼坏了,在没有基础的 ...

  6. Windows和Linux的Jmeter分布式集群压力测试

    Windows的Jmeter分布式集群压力测试 原文:https://blog.csdn.net/cyjs1988/article/details/80267475 在使用Jmeter进行性能测试时, ...

  7. 基于HBase Hadoop 分布式集群环境下的MapReduce程序开发

    HBase分布式集群环境搭建成功后,连续4.5天实验客户端Map/Reduce程序开发,这方面的代码网上多得是,写个测试代码非常容易,可是真正运行起来可说是历经挫折.下面就是我最终调通并让程序在集群上 ...

  8. 分布式实时日志系统(四) 环境搭建之centos 6.4下hbase 1.0.1 分布式集群搭建

    一.hbase简介 HBase是一个开源的非关系型分布式数据库(NoSQL),它参考了谷歌的BigTable建模,实现的编程语言为 Java.它是Apache软件基金会的Hadoop项目的一部分,运行 ...

  9. CentOS6安装各种大数据软件 第六章:HBase分布式集群的配置

    相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...

随机推荐

  1. Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE

    1 错误描述 19:15:34 call sp_store_insert(90) Error Code: 1175. You are using safe update mode and you tr ...

  2. freemarker自定义标签报错(六)

    freemarker自定义标签 1.错误描述 freemarker.core.ParseException: Encountered "\"\u4f60\u597d\uff01\& ...

  3. freemarker中的left_pad和right_pad

    freemarker中的left_pad和right_pad 1.简易说明 (1)left_pad 距左边 (2)right_pad 距右边 (3)当仅仅只有一个参数时,插入的是空白:当有两个参数时, ...

  4. vxWorks下dosFs文件系统的创建

    .cdromFs:允许系统从按照ISO9660标准文件系统格式化的CD-ROM上读取设备: 通常文件系统驱动位于磁盘(块存取)设备驱动和IO系统之间,这一点在VxWorks中也不例外,但它在此基础上扩 ...

  5. 启动就加载(一)----注解方式实现的。static项目启动的时候就加载进来(一般用于常用参数)

    一,案例 1.1,图片分析 1.2,代码 1.2.1,编写加载系统参数的servlet public class SysInitServlet extends HttpServlet { public ...

  6. WRT 版本说明

    std_generic 标准通用版nokaid 是不带XBOX支持的(Kai代表连接游戏平台到网络上.)virtual** 表示支持虚拟专用网络的版本VOIP 带VOIP表示支持网络电话的版本.meg ...

  7. RobotFramework下HttpLibrary库其它关键字

    关键字 使用描述 DELETE 向服务器端发送http delete请求,该请求接收一个参数[ url ],请求的方式和post请求非常类似,示例: DELETE /_utils/config.htm ...

  8. Python编程核心内容之二——切片、迭代和列表生成式

    Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ 最近太忙啦.很多事情需要自己处理,感觉时间不够用啊~~~~今后,博客更新时间可能会慢下来,哈哈,正所谓"人 ...

  9. 【洛谷1129】 [ZJOI2007]矩阵游戏

    题面 题目描述 小Q是一个非常聪明的孩子,除了国际象棋,他还很喜欢玩一个电脑益智游戏――矩阵游戏.矩阵游戏在一个N*N黑白方阵进行(如同国际象棋一般,只是颜色是随意的).每次可以对该矩阵进行两种操作: ...

  10. mysql mariadb 删除表中的数据时数据库变大

    删除表中数据以前 [root@RM uar3]# du -sh * 3.3G apache-tomcat-7.0.54 150M instalRM4UAR 0 mariadb 903M mariadb ...