YCSB(Yahoo Cloud Serving Benchmark)で DynamoDB On-Demand に負荷をかける手順。
準備
DynamoDBにテーブルを作成する
Maven のインストール
- OpenJDK をインストールする。
$ sudo yum -y install java-1.8.0-openjdk-devel.x86_64
- Maven をインストールする。
$ curl -OL https://archive.apache.org/dist/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz $ tar xzvf apache-maven-3.5.2-bin.tar.gz $ sudo mv apache-maven-3.5.2 /opt/ $ sudo ln -s /opt/apache-maven-3.5.2 /opt/apache-maven
$ vi .bash_profile PATH=$PATH:$HOME/.local/bin:$HOME/bin:/opt/apache-maven/bin JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-0.amzn2.x86_64 export JAVA_HOME $ source .bash_profile
- Maven のバージョンを確認する。
$ mvn --version Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T07:58:13Z) Maven home: /opt/apache-maven Java version: 1.7.0_201, vendor: Oracle Corporation Java home: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.201.x86_64/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "4.14.77-70.59.amzn1.x86_64", arch: "amd64", family: "unix"
YCSBのインストールと設定
- YCSBのダウンロードとビルド
$ sudo yum -y install git $ git clone https://github.com/brianfrankcooper/YCSB.git $ cd YCSB/ $ mvn clean package
- DynamoDBの接続設定
$ vi ~/YCSB/dynamodb/conf/dynamodb.properties dynamodb.awsCredentialsFile = dynamodb/conf/AWSCredentials.properties dynamodb.primaryKey = firstname dynamodb.endpoint = http://dynamodb.ap-northeast-1.amazonaws.com
- クレデンシャルを設定する。
$ vi ~/YCSB/dynamodb/conf/AWSCredentials.properties accessKey = <記述する> secretKey = <記述する>
- YCSB/workloads/workload1 を作成する。
$ cp workloada workload1 $ vi workload1 recordcount=1 table=ycsb1 operationcount=10000000 workload=com.yahoo.ycsb.workloads.CoreWorkload readallfields=true readproportion=1 updateproportion=0 scanproportion=0 insertproportion=0
ベンチマークをかける
- データをロードする。
$ cd ~/YCSB $ ./bin/ycsb load dynamodb -P workloads/workload1 -P dynamodb/conf/dynamodb.properties $ ./bin/ycsb load dynamodb -P workloads/workload2 -P dynamodb/conf/dynamodb.properties $ ./bin/ycsb load dynamodb -P workloads/workload3 -P dynamodb/conf/dynamodb.properties $ ./bin/ycsb load dynamodb -P workloads/workload10 -P dynamodb/conf/dynamodb.properties $ ./bin/ycsb load dynamodb -P workloads/workload100 -P dynamodb/conf/dynamodb.properties $ ./bin/ycsb load dynamodb -P workloads/workload1000 -P dynamodb/conf/dynamodb.properties $ ./bin/ycsb load dynamodb -P workloads/workload10000 -P dynamodb/conf/dynamodb.properties $ ./bin/ycsb load dynamodb -P workloads/workload100hotspot -P dynamodb/conf/dynamodb.properties
- 負荷をかける。
$ ./bin/ycsb run dynamodb -P workloads/workload1 -P dynamodb/conf/dynamodb.properties -threads 50 $ ./bin/ycsb run dynamodb -P workloads/workload2 -P dynamodb/conf/dynamodb.properties -threads 100 $ ./bin/ycsb run dynamodb -P workloads/workload3 -P dynamodb/conf/dynamodb.properties -threads 150 $ ./bin/ycsb run dynamodb -P workloads/workload10 -P dynamodb/conf/dynamodb.properties -threads 200 $ ./bin/ycsb run dynamodb -P workloads/workload100 -P dynamodb/conf/dynamodb.properties -threads 300 $ ./bin/ycsb run dynamodb -P workloads/workload1000 -P dynamodb/conf/dynamodb.properties -threads 400 $ ./bin/ycsb run dynamodb -P workloads/workload10000 -P dynamodb/conf/dynamodb.properties -threads 500 $ ./bin/ycsb run dynamodb -P workloads/workload100hotspot -P dynamodb/conf/dynamodb.properties -threads 200
確認ポイント
補足
- YCSB/dynamodb/conf/dynamodb.properties
dynamodb.consistentReads = true dynamodb.awsCredentialsFile = dynamodb/conf/AWSCredentials.properties dynamodb.primaryKey = firstname dynamodb.endpoint = http://dynamodb.ap-northeast-1.amazonaws.com
- YCSB/workloads/workload1
recordcount=1 table=ycsb1 operationcount=10000000 workload=com.yahoo.ycsb.workloads.CoreWorkload readallfields=true readproportion=1 updateproportion=0 scanproportion=0 insertproportion=0
- YCSB/workloads/workload2
recordcount=2 table=ycsb2 以降、workload1 と同じ
- YCSB/workloads/workload3
recordcount=3 table=ycsb3 以降、workload1 と同じ
- YCSB/workloads/workload10
recordcount=10 table=ycsb10 以降、workload1 と同じ
- YCSB/workloads/workload100
recordcount=100 table=ycsb100 以降、workload1 と同じ
- YCSB/workloads/workload100hotspot
recordcount=100 table=ycsb100 requestdistribution=hotspot 以降、workload1 と同じ
- YCSB/workloads/workload1000
recordcount=1000 table=ycsb1000 以降、workload1 と同じ
参考
- YCSBでNoSQLのベンチマーク その2 - 工場長のブログ
- Core Properties · brianfrankcooper/YCSB Wiki · GitHub
- Amazon DynamoDB メトリクスとディメンション - Amazon DynamoDB
- Brian Cooper
- YCSB/dynamodb at master · brianfrankcooper/YCSB · GitHub
- http://cgi.di.uoa.gr/~ad/M155/Papers/p143-cooper.pdf
- https://www2.cs.duke.edu/courses/fall13/cps296.4/838-CloudPapers/ycsb.pdf