Skip to content

Commit

Permalink
[kudu] Update bindings (#879)
Browse files Browse the repository at this point in the history
[kudu] Update Kudu binding to 1.1.0, use slf4j for logging, improve table partitioning
  • Loading branch information
danburkert authored and risdenk committed Dec 2, 2016
1 parent b83dd7e commit 70590bb
Show file tree
Hide file tree
Showing 6 changed files with 126 additions and 146 deletions.
37 changes: 21 additions & 16 deletions kudu/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<!--
Copyright (c) 2015 YCSB contributors. All rights reserved.
Copyright (c) 2015-2016 YCSB contributors. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you
may not use this file except in compliance with the License. You
Expand All @@ -17,25 +17,30 @@ LICENSE file.

# Kudu bindings for YCSB

[Kudu](http://getkudu.io) is a storage engine that enables fast analytics on fast data.
[Apache Kudu](https://kudu.apache.org) is a storage engine that enables fast
analytics on fast data.

## Benchmarking Kudu

Use the following command line to load the initial data into an existing Kudu cluster with default
configurations.
Use the following command line to load the initial data into an existing Kudu
cluster with default configurations.

```
bin/ycsb load kudu -P workloads/workloada
```

Additional configurations:
* `kudu_master_addresses`: The master's address. The default configuration expects a master on localhost.
* `kudu_pre_split_num_tablets`: The number of tablets (or partitions) to create for the table. The default
uses 4 tablets. A good rule of thumb is to use 5 per tablet server.
* `kudu_table_num_replicas`: The number of replicas that each tablet will have. The default is 3. Should
only be configured to use 1 instead, for single node tests.
* `kudu_sync_ops`: If the client should wait after every write operation. The default is true.
* `kudu_block_size`: The data block size used to configure columns. The default is 4096 bytes.
* `kudu_master_addresses`: The master's address. The default configuration
expects a master on localhost.
* `kudu_pre_split_num_tablets`: The number of tablets (or partitions) to create
for the table. The default uses 4 tablets. A good rule of thumb is to use 5
per tablet server.
* `kudu_table_num_replicas`: The number of replicas that each tablet will have.
The default is 3. Should only be configured to use 1 instead, for single node tests.
* `kudu_sync_ops`: If the client should wait after every write operation. The
default is true.
* `kudu_block_size`: The data block size used to configure columns. The default
is 4096 bytes.

Then, you can run the workload:

Expand All @@ -45,12 +50,12 @@ bin/ycsb run kudu -P workloads/workloada

## Using a previous client version

If you wish to use a different Kudu client version than the one shipped with YCSB, you can specify on the
command line with `-Dkudu.version=x`. For example:
If you wish to use a different Kudu client version than the one shipped with
YCSB, you can specify on the command line with `-Dkudu.version=x`. For example:

```
mvn -pl com.yahoo.ycsb:kudu-binding -am package -DskipTests -Dkudu.version=0.7.1
mvn -pl com.yahoo.ycsb:kudu-binding -am package -DskipTests -Dkudu.version=1.0.1
```

Note that prior to 1.0, Kudu doesn't guarantee wire or API compability between versions and only the latest
one is officially supported.
Note that only versions since 1.0 are supported, since Kudu did not guarantee
wire or API compatibility prior to 1.0.
25 changes: 11 additions & 14 deletions kudu/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ LICENSE file.

<dependencies>
<dependency>
<groupId>org.kududb</groupId>
<groupId>org.apache.kudu</groupId>
<artifactId>kudu-client</artifactId>
<version>${kudu.version}</version>
</dependency>
Expand All @@ -41,18 +41,15 @@ LICENSE file.
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
</dependencies>
<repositories>
<repository>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>cloudera-repo</id>
<name>Cloudera Releases</name>
<url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
</repository>
</repositories>
</project>
Loading

0 comments on commit 70590bb

Please sign in to comment.