为了与Redis的群集启用选项启动YCSB负荷(To start YCSB load with cl

2019-10-21 06:04发布

我表演YCSB板凳的Redis集群上的标记。 我创建的Redis集群,其具有以下条件的工作。

如果我指定要启用的Redis与-c参数客户机集群模式。 该块被正确地移动。

./redis-cli -h -c "host ip" -p "port"

如果我不指定-c参数,它移动错误块

./redis-cli -h "host ip" -p "port"

所以在YCSB加载选项,我不知道如何启用集群选项(-c参数)。

目前我使用以下conmmand没有-c选项

./bin/ycsb load redis -s -P workloads/workloada -p "redis.host=host ip" -p "redis.port=port" > outputLoad.txt

它返回一个错误。 你能帮我解决这个问题?

Answer 1:

不知道,如果你想通这个问题,或者没有。

但基本上,如果你想使用YCSB上的Redis集群,您需要实现一个YCSB Redis的集群客户端。 这是非常相似YCSB对Redis的客户端。 您可以复制并粘贴Redis的(单实例),并改变在init()的代码。 配置和使用Maven,那么你可以通过Redis的集群客户端运行YCSB编译。

更多详情:

由于YCSB使用Java,所以我们需要使用jedis。 有一个在jedis称为JedisCluster的事情,我们需要使用,为了使YCSB和Redis的集群之间的连接。 更多详情可上jedis github上找到。

对于Maven的一部分,记得要改变的pom.xml在客户端代码的文件夹,并在您的YCSB根文件夹中添加客户端模块(也pom.xml中,下的NoSQL)。


事情值得一提:

我使用YCSB做实验的Redis集群。 该设置是标准的,未经复制4个节点,8芯机,8 GB MEM,从另一台计算机具有相同的设置与6个线程工人运行YCSB。

Redis的集群是3倍 - 比Redis的单实例慢的各个方面4倍。 (主要用于阈值比较,其中,可以通过无法通过调整-target参数被撞更高)

我真的不知道这是否是我的问题,或者它jedis / jedisCluster / YCSB / Redis的集群/等的问题。

如果您已成功运行的Redis集群的YCSB,请告诉我结果。 我会在你的结果非常好奇。

谢谢



Answer 2:

YCSB / Redis的/ src目录/主/ JAVA / COM /雅虎/ YCSB / DB / RedisClient.java和内

public void init() throws DBException

加上下面几行

Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();
//Jedis Cluster will attempt to discover cluster nodes automatically
jedisClusterNodes.add(new HostAndPort(host, port));
jedis = new JedisCluster(jedisClusterNodes);

注释掉

jedis.connect(); 

jedis.disconnect();

另外,不要忘记导入RedisClient.java以下

import redis.clients.jedis.Protocol;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import java.util.HashSet;

运行与您运行Redis的测试相同的命令测试,它应该工作。



文章来源: To start YCSB load with cluster enabled option for REDIS