YCSB项目地址和简介: https://github.com/brianfrankcooper/YCSB/wiki YCSB的目标是开发一个框架和通用的workloads来评估不同的key-value和cloud提供的存储服务。 组成:YCSB Client,一个可扩展的workload发生器;Core workloads,一系列的workload场景,由generator来执行。 支持测试不同的数据库包括HBase,Cassandra,Infinispan,MongoDB等等。 通常用来benchmark多个系统,对比它们。比如可以在相同的硬件上面安装不同的系统,然后运行相同的workloads,对比不同系统的性能。
HBase测试 1. Hadoop和HBase都部署完毕且正常启动 比如我使用Hadoop 2.7.0和HBase 1.0.1.1 2. 配置YCSB # git clone git://github.com/brainfrankcooper/YCSB.git # cd YCSB 为YCSB的hbase client程序添加依赖项,原先只有org.apache.hbase的hbase-client依赖包,我们还需要添加org.apache.hadoop以来hadoop-common和hadoop-hdfs包,这里缺少hbase和hadoop依赖包的话,即便编译完成,但是在运行ycsb的时候会报出hdfs或者hbase相关的错误。依赖包的版本根据自己的实际安装情况,参考hbase/lib/目录下的jar包版本。 # vim hbase/pom.xml <modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.yahoo.ycsb</groupId>
<artifactId>root</artifactId>
<version>0.2.0-SNAPSHOT</version>
</parent>
<artifactId>hbase-binding</artifactId>
<name>HBase DB Binding</name>
<dependencies>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>1.0.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.5.1</version>
</dependency>
<dependency>
<groupId>com.yahoo.ycsb</groupId>
<artifactId>core</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies> # cd .. # mvn clean package 没有mvn的话要下载maven: # wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.tar.gz # tar zxf apache-maven-3.3.3-bin.tar.gz # mv apache-maven-3.3.3 /usr/maven # export PARH=$PATH:/usr/maven/bin 编译完毕:
错误1:java.io.IOException: No FileSystem for scheme: hdfs 参考http://*.com/questions/17265002/hadoop-no-filesystem-for-scheme-file和http://blog.csdn.net/eryk86/article/details/19495075 在hbase-site.xml中添加:
<property>
<name>fs.file.impl</name>
<value>org.apache.hadoop.fs.LocalFileSystem</value>
<description>The FileSystem for file: uris.</description></property>
<property>
<name>fs.hdfs.impl</name>
<value>org.apache.hadoop.hdfs.DistributedFileSystem</value>
<description>The FileSystem for hdfs: uris.</description></property>
错误2:Error accessing HBase table: java.io.IOException: java.lang.reflect.InvocationTargetException
成功load数据
5. 运行简单的workloads: # bin/ycsb run hbase -P workloads/workloada -cp $CLASSPATH -p table=usertable -p columnfamily=family -p clientbuffering=true > out.txt 2>&1 将输出结果重定向到out.txt文件中,查看结果,UPDATE和READ总共1000次操作,都Return=0成功了。