Removing nodes entirely


You can take a node out of the cluster with nodetool decommission to a live node, or nodetool removetoken (to any other machine) to remove a dead one. This will assign the ranges the old node was responsible for to other nodes, and replicate the appropriate data there. If decommission is used, the data will stream from the decommissioned node. If removetoken is used, the data will stream from the remaining replicas.


No data is removed automatically from the node being decommissioned, so if you want to put the node back into service at a different token on the ring, it should be removed manually.

원문: http://wiki.apache.org/cassandra/Operations#Removing_nodes_entirely



 

removetoken 

decomission 

 명령 실행 대상

클러스터에서 대상 노드를 제외하고

남아 있는 노드중 하나

decommission 대상 노드 

Replica 재조정 

남아 있는 노드들이 Replica 재생성 

decommission 노드가 데이터 스트림 수행

 제거 대상 노드 상태

Down 

Up 


Wiki 가이드 내용을 요약하면 표와 같다.


정리하자면, 제거 대상 노드가 살아 있을 경우, decommission이 유리하고, 그렇지 않을 경우에 removetoken을 사용해야 할 것으로 예상된다.


이유는, 아무래도, 없어진 replica에 대해서 누군가로부터 읽어서, 그리고 노드간 송/수신이 일어나야 복원이 되는 removetoken에 비해, decommission의 경우 탈퇴/제거 당시 시점까지의 데이타는 모두 가지고 있기 때문에 속했던 클러스터로 데이타를 주기만 하며, 클러스트에서 계속 서비스 중인 노드들은 이제는 외부로부터 데이타를 받기만 하면 되기 때문이다.


여튼저튼, decommission명령에 더이상 서비스는 담당하지 않겠다는, disable thrift, disable gossip과 같은 행위가 수반되는지를 Source Code로부터 확인은 해봐야 겠지만, 위 정보만으로 우선 메모 해둠...

(최근 발표된 cassandra 1.2.x는 virtual-node 방식이라, decommission은 어떻게 작용할지 의문이나, removetoken은 더이상 의미가 없을 것 같다.)


추후, 확인 하고 내용 추가 예정...

Posted by 사랑줍는거지
,
http://redmine.nehome.net/redmine/projects/nosql/wiki/HowTo_-_YCSB_for_Cassandra


HowTo - YCSB for Cassandra

Install/Configuration

설치/설정이라고 하지만, 특별한게 없다. Cassandra(v1.1.4) 및 JDK는 설치 되어 있다는 전제하에서 YCSB를 다운로드 하고 압축을 해제하는 것으로 완료.

<진행 환경>
  • Machines: node1(172.21.81.139), node2(172.21.81.127)
  • OS: Ubuntu 11.10 (oneiric) x86_64
  • Cassandra: 1.1.4 (설치 위치: /usr/local/cassandra)
  • JDK Version: "1.6.0_27"
  • 테스트 작업 위치: /usr/local/src
# cd /usr/local/src/
# wget https://github.com/downloads/brianfrankcooper/YCSB/ycsb-0.1.4.tar.gz
# tar zxvf ycsb-0.1.4.tar.gz

YCSB 테스트를 위한 Cassandra 준비

YCSB & Cassandra 테스트를 위해서, Cassandra에 "usertable"라는 Keyspace에, data라는 Column Family가 필요하다.

KS/CF 생성

# /usr/local/cassandra/bin/cassandra-cli
# create keyspace usertable;
# use usertable;
# create column family data;

YCSB 테스트 실행

ycsb에 포함된 workload 들을 이용해 간단한 테스트를 실습을 수행 해본다.

ycsb의 Usage 및 Commands/Options 확인

# cd /usr/local/src/ycsb-0.1.4
# ./bin/ycsb
Usage: ./bin/ycsb command database [options]

Commands:
    load          Execute the load phase
    run           Execute the transaction phase
    shell         Interactive mode

Databases:
    basic         https://github.com/brianfrankcooper/YCSB/tree/master/basic
    cassandra-10  https://github.com/brianfrankcooper/YCSB/tree/master/cassandra
    cassandra-7   https://github.com/brianfrankcooper/YCSB/tree/master/cassandra
    cassandra-8   https://github.com/brianfrankcooper/YCSB/tree/master/cassandra
    gemfire       https://github.com/brianfrankcooper/YCSB/tree/master/gemfire
    hbase         https://github.com/brianfrankcooper/YCSB/tree/master/hbase
    infinispan    https://github.com/brianfrankcooper/YCSB/tree/master/infinispan
    jdbc          https://github.com/brianfrankcooper/YCSB/tree/master/jdbc
    mapkeeper     https://github.com/brianfrankcooper/YCSB/tree/master/mapkeeper
    mongodb       https://github.com/brianfrankcooper/YCSB/tree/master/mongodb
    nosqldb       https://github.com/brianfrankcooper/YCSB/tree/master/nosqldb
    redis         https://github.com/brianfrankcooper/YCSB/tree/master/redis
    voldemort     https://github.com/brianfrankcooper/YCSB/tree/master/voldemort

Options:
    -P file       Specify workload file
    -p key=value  Override workload property
    -s            Print status to stderr
    -target n     Target ops/sec (default: unthrottled)
    -threads n    Number of client threads (default: 1)

Workload Files:
    There are various predefined workloads under workloads/ directory.
    See https://github.com/brianfrankcooper/YCSB/wiki/Core-Properties
    for the list of workload properties.

Load 테스트 수행 (Execute the load phase: 초기 데이타 등록)

  • Cassandra 1.1.4이므로, Database로 cassandra-10을 선택.
  • 테스트 노드로 2개 장비 모두 사용. (hosts=172.21.81.139,172.21.81.127)
  • 기타 추가 옵션 지정은 hosts와 마찬가지로 "-p" 옵션을 이용해, key=value형태로 지정/추가 해준다.
  • Cassandra Database에 관련된 특화 옵션은 Usage에서 확인되는 git 웹페이지에서 확인 가능. (하단 <부록> 섹션 참고)
# ./bin/ycsb load cassandra-10 -P workloads/workloada -p hosts=172.21.81.139,172.21.81.127 -p cassandra.connectionretries=1 -p cassandra.operationretries=1
java -cp /usr/local/src/ycsb-0.1.4/slf4j-jdk14-1.7.2.jar:/usr/local/src/ycsb-0.1.4/slf4j-api-1.7.2.jar:/usr/local/src/ycsb-0.1.4/hbase-binding/conf:/usr/local/src/ycsb-0.1.4/voldemort-binding/conf:/usr/local/src/ycsb-0.1.4/nosqldb-binding/conf:/usr/local/src/ycsb-0.1.4/gemfire-binding/conf:/usr/local/src/ycsb-0.1.4/core/lib/core-0.1.4.jar:/usr/local/src/ycsb-0.1.4/cassandra-binding/lib/cassandra-binding-0.1.4.jar:/usr/local/src/ycsb-0.1.4/jdbc-binding/conf:/usr/local/src/ycsb-0.1.4/infinispan-binding/conf com.yahoo.ycsb.Client -db com.yahoo.ycsb.db.CassandraClient10 -P workloads/cassandra -p hosts=172.21.81.139 -p cassandra.connectionretries=1 -p cassandra.operationretries=1 -load
YCSB Client 0.1
Command line: -db com.yahoo.ycsb.db.CassandraClient10 -P workloads/cassandra -p hosts=172.21.81.139 -p cassandra.connectionretries=1 -p cassandra.operationretries=1 -load
Loading workload...
Starting test.
[OVERALL], RunTime(ms), 8666.0
[OVERALL], Throughput(ops/sec), 1153.9349180706208
[INSERT], Operations, 10000
[INSERT], AverageLatency(us), 820.3828
[INSERT], MinLatency(us), 147
[INSERT], MaxLatency(us), 35981
[INSERT], 95thPercentileLatency(ms), 1
[INSERT], 99thPercentileLatency(ms), 2
[INSERT], Return=0, 10000
[INSERT], 0, 6016
[INSERT], 1, 3877
[INSERT], 2, 47
[INSERT], 3, 30
[INSERT], 4, 5
[INSERT], 5, 8
[INSERT], 6, 4
[INSERT], 7, 1
[INSERT], 8, 2
[INSERT], 9, 4
[INSERT], 10, 2
[INSERT], 11, 0
[INSERT], 12, 0
[INSERT], 13, 0
[INSERT], 14, 0
[INSERT], 15, 1
[INSERT], 16, 0
[INSERT], 17, 0
[INSERT], 18, 0
[INSERT], 19, 0
[INSERT], 20, 1
[INSERT], 21, 0
[INSERT], 22, 0
[INSERT], 23, 0
[INSERT], 24, 0
[INSERT], 25, 1
[INSERT], 26, 0
[INSERT], 27, 0
[INSERT], 28, 0
.
.
(중략)
.
.
[INSERT], 987, 0
[INSERT], 988, 0
[INSERT], 989, 0
[INSERT], 990, 0
[INSERT], 991, 0
[INSERT], 992, 0
[INSERT], 993, 0
[INSERT], 994, 0
[INSERT], 995, 0
[INSERT], 996, 0
[INSERT], 997, 0
[INSERT], 998, 0
[INSERT], 999, 0
[INSERT], >1000, 0

Run 테스트 수행 (Execute the transaction phase)

# ./bin/ycsb run cassandra-10 -P workloads/cassandra -p hosts=172.21.81.139,172.21.81.127 -p cassandra.connectionretries=1 -p cassandra.operationretries=1
java -cp /usr/local/src/ycsb-0.1.4/slf4j-jdk14-1.7.2.jar:/usr/local/src/ycsb-0.1.4/slf4j-api-1.7.2.jar:/usr/local/src/ycsb-0.1.4/hbase-binding/conf:/usr/local/src/ycsb-0.1.4/voldemort-binding/conf:/usr/local/src/ycsb-0.1.4/nosqldb-binding/conf:/usr/local/src/ycsb-0.1.4/gemfire-binding/conf:/usr/local/src/ycsb-0.1.4/core/lib/core-0.1.4.jar:/usr/local/src/ycsb-0.1.4/cassandra-binding/lib/cassandra-binding-0.1.4.jar:/usr/local/src/ycsb-0.1.4/jdbc-binding/conf:/usr/local/src/ycsb-0.1.4/infinispan-binding/conf com.yahoo.ycsb.Client -db com.yahoo.ycsb.db.CassandraClient10 -P workloads/cassandra -p hosts=172.21.81.139,172.21.81.127 -p cassandra.connectionretries=1 -p cassandra.operationretries=1 -t
YCSB Client 0.1
Command line: -db com.yahoo.ycsb.db.CassandraClient10 -P workloads/cassandra -p hosts=172.21.81.139,172.21.81.127 -p cassandra.connectionretries=1 -p cassandra.operationretries=1 -t
Loading workload...
Starting test.
[OVERALL], RunTime(ms), 13476.0
[OVERALL], Throughput(ops/sec), 742.0599584446423
[INSERT], Operations, 5039
[INSERT], AverageLatency(us), 1280.7376463584044
[INSERT], MinLatency(us), 259
[INSERT], MaxLatency(us), 202840
[INSERT], 95thPercentileLatency(ms), 2
[INSERT], 99thPercentileLatency(ms), 4
[INSERT], Return=0, 5039
[INSERT], 0, 2774
[INSERT], 1, 1840
[INSERT], 2, 289
[INSERT], 3, 66
[INSERT], 4, 20
[INSERT], 5, 10
[INSERT], 6, 5
[INSERT], 7, 6
[INSERT], 8, 5
[INSERT], 9, 3
[INSERT], 10, 6
[INSERT], 11, 1
[INSERT], 12, 2
[INSERT], 13, 2
[INSERT], 14, 2
[INSERT], 15, 1
[INSERT], 16, 0
[INSERT], 17, 1
[INSERT], 18, 1
[INSERT], 19, 0
[INSERT], 20, 1
[INSERT], 21, 0
[INSERT], 22, 0
[INSERT], 23, 1
[INSERT], 24, 0
[INSERT], 25, 1
[INSERT], 26, 0
.
.
(중략)
.
.
[INSERT], 994, 0
[INSERT], 995, 0
[INSERT], 996, 0
[INSERT], 997, 0
[INSERT], 998, 0
[INSERT], 999, 0
[INSERT], >1000, 0
[READ], Operations, 4961
[READ], AverageLatency(us), 1323.8699858899415
[READ], MinLatency(us), 298
[READ], MaxLatency(us), 61646
[READ], 95thPercentileLatency(ms), 2
[READ], 99thPercentileLatency(ms), 4
[READ], Return=0, 4961
[READ], 0, 2226
[READ], 1, 2260
[READ], 2, 362
[READ], 3, 57
[READ], 4, 13
[READ], 5, 7
[READ], 6, 7
[READ], 7, 7
[READ], 8, 4
[READ], 9, 1
[READ], 10, 3
[READ], 11, 2
[READ], 12, 3
[READ], 13, 3
[READ], 14, 1
[READ], 15, 0
[READ], 16, 2
[READ], 17, 0
.
.
(중략)
.
.
[READ], 989, 0
[READ], 990, 0
[READ], 991, 0
[READ], 992, 0
[READ], 993, 0
[READ], 994, 0
[READ], 995, 0
[READ], 996, 0
[READ], 997, 0
[READ], 998, 0
[READ], 999, 0
[READ], >1000, 0

workload

기본적으로 제공되는 workload는 하기와 같이 6가지가 제공된다.
(각각이 추구하는 목적은 링크 https://github.com/brianfrankcooper/YCSB/wiki/Core-Workloads 참조)

  • workloada
  • workloadb
  • workloadc
  • workloadd
  • workloade
  • workloadf

workload 예제 설명

예제로 workloadf를 살펴보자

recordcount=1000
operationcount=1000
workload=com.yahoo.ycsb.workloads.CoreWorkload

readallfields=true

readproportion=0.5
updateproportion=0
scanproportion=0
insertproportion=0
readmodifywriteproportion=0.5

requestdistribution=zipfian

위와 같은 내용을 담고 있으며, 각각의 역할을 명칭에서 드러난다.
[Note] File 참조가 싫으면, 하기와 유사하게 "-p" 옵션을 이용해 하나 하나 지정해줘도 된다. 
예를 들어 하기와 같이, 각자의 테스트 목적에 부합되게 설정하여 사용하면 될 것이다.

# ./bin/ycsb \ 
run \ 
cassandra-10 \
-s \ 
-p recordcount=10000 \
-p operationcount=10000 \
-p workload=com.yahoo.ycsb.workloads.CoreWorkload \
-p readallfields=true \
-p readproportion=0.5 \
-p updateproportion=0 \
-p scanproportion=0 \
-p insertproportion=0.5 \
-p readmodifywriteproportion=0 \
-p requestdistribution=zipfian \
-p hosts=172.21.81.139,172.21.81.127 \
-p cassandra.connectionretries=1 \
-p cassandra.operationretries=1 \
-p cassandra.readconsistencylevel=ALL \
-p cassandra.writeconsistencylevel=ALL \
-p cassandra.deleteconsistencylevel=ALL \
-threads 10 
  • 전체 몇개의 Count로 테스트를 할 것인지...
  • 전체 테스트 Count에서 read/update/scan/insert/readmodifywrite의 비율은 어떻게 할 것인지...

부록

Cassandra Database 특화 옵션

Source:https://github.com/brianfrankcooper/YCSB/blob/master/cassandra/src/main/java/com/yahoo/ycsb/db/CassandraClient10.java

  public static final String CONNECTION_RETRY_PROPERTY = "cassandra.connectionretries";
  public static final String CONNECTION_RETRY_PROPERTY_DEFAULT = "300";

  public static final String OPERATION_RETRY_PROPERTY = "cassandra.operationretries";
  public static final String OPERATION_RETRY_PROPERTY_DEFAULT = "300";

  public static final String USERNAME_PROPERTY = "cassandra.username";
  public static final String PASSWORD_PROPERTY = "cassandra.password";

  public static final String COLUMN_FAMILY_PROPERTY = "cassandra.columnfamily";
  public static final String COLUMN_FAMILY_PROPERTY_DEFAULT = "data";

  public static final String READ_CONSISTENCY_LEVEL_PROPERTY = "cassandra.readconsistencylevel";
  public static final String READ_CONSISTENCY_LEVEL_PROPERTY_DEFAULT = "ONE";

  public static final String WRITE_CONSISTENCY_LEVEL_PROPERTY = "cassandra.writeconsistencylevel";
  public static final String WRITE_CONSISTENCY_LEVEL_PROPERTY_DEFAULT = "ONE";

  public static final String SCAN_CONSISTENCY_LEVEL_PROPERTY = "cassandra.scanconsistencylevel";
  public static final String SCAN_CONSISTENCY_LEVEL_PROPERTY_DEFAULT = "ONE";

  public static final String DELETE_CONSISTENCY_LEVEL_PROPERTY = "cassandra.deleteconsistencylevel";
  public static final String DELETE_CONSISTENCY_LEVEL_PROPERTY_DEFAULT = "ONE";

http://zopub.com/download?doc_id=519

Posted by 사랑줍는거지
,


YCSB 사용할 일이 반복적으로 많아 질것 같아 Script 처리를 하면 좀 편해질까 싶어 막스크립트 작성중... 우선은 Cassandra가 직접적으로 관련이 있어 cassandra-10만 우선 지원.(cassnadra-7,8도 동일하게 가능할듯...)


기능은 단순하다.

- ycsb 명령 줄의 parameter들을 다이얼로그 형태로 지원하는 것일 뿐....

- 그일 첨 시작이라 테스트 해보고 써억~ 편의점이 없다면 과감히 휴지통으로 고고~


실행 예)



# ./ycsb_runner.workloads.20130108.sh 


 === 'Green' is supported ===


 [a] basic

 [b] cassandra-10

 [c] cassandra-7

 [d] cassandra-8

 [e] gemfire

 [f] hbase

 [g] infinispan

 [h] jdbc

 [i] mapkeeper

 [j] mongodb

 [k] nosqldb

 [l] redis

 [m] voldemort


 -> Select Database: b



 -> Title(Name): test


===============================================


 -> hosts (Not Null, ex:192.168.1.52,192.168.1.53): 172.21.81.139,172.21.81.127


 -> cassandra.username (Default: Null): 


 -> cassandra.password (Default: Null): 


 -> cassandra.connectionretries (Default: 300): 


 -> cassandra.operationretries (Default: 300): 


 -> cassandra.columnfamily (Default: data): 


 -> fieldcount (Default: 10): 


 -> fieldlength (Default: 200): 


 -> cassandra.readconsistencylevel (Default: ONE): 


 -> cassandra.writeconsistencylevel (Default: ONE): 


 -> cassandra.scanconsistencylevel (Default: ONE): 


 -> cassandra.deleteconsistencylevel (Default: ONE): 


 -> threads - Number of client threads (Default: 1):


ycsb_runner.sh

#!/bin/bash



### by call518@gmail.com (Jung-In.Jung)


### ChangeLog

#* 2013-01-03 : created, support and tested cassandra-10




# [YCSB]

# Usage: ./bin/ycsb command database [options]

# Commands:

#     load          Execute the load phase

#     run           Execute the transaction phase

#     shell         Interactive mode

# Databases:

#     basic         https://github.com/brianfrankcooper/YCSB/tree/master/basic

#     cassandra-10  https://github.com/brianfrankcooper/YCSB/tree/master/cassandra

#     cassandra-7   https://github.com/brianfrankcooper/YCSB/tree/master/cassandra

#     cassandra-8   https://github.com/brianfrankcooper/YCSB/tree/master/cassandra

#     gemfire       https://github.com/brianfrankcooper/YCSB/tree/master/gemfire

#     hbase         https://github.com/brianfrankcooper/YCSB/tree/master/hbase

#     infinispan    https://github.com/brianfrankcooper/YCSB/tree/master/infinispan

#     jdbc          https://github.com/brianfrankcooper/YCSB/tree/master/jdbc

#     mapkeeper     https://github.com/brianfrankcooper/YCSB/tree/master/mapkeeper

#     mongodb       https://github.com/brianfrankcooper/YCSB/tree/master/mongodb

#     nosqldb       https://github.com/brianfrankcooper/YCSB/tree/master/nosqldb

#     redis         https://github.com/brianfrankcooper/YCSB/tree/master/redis

#     voldemort     https://github.com/brianfrankcooper/YCSB/tree/master/voldemort

# Options:

#     -P file       Specify workload file

#     -p key=value  Override workload property

#     -s            Print status to stderr

#     -target n     Target ops/sec (default: unthrottled)

#     -threads n    Number of client threads (default: 1)

# Workload Files:

#     There are various predefined workloads under workloads/ directory.

#     See https://github.com/brianfrankcooper/YCSB/wiki/Core-Properties

#     for the list of workload properties.


trap "rm -f $tmp_file; reset_color; echo; exit 99" 2


now_time() {

date +"%Y-%m-%d__%H-%M-%S"

}


reset_color() {

tput sgr0

}


color_green="\033[1;32m"

color_red="\033[1;31m"

color_blue="\033[1;34m"

color_yellow="\033[1;33m"

color_cyan="\033[1;36m"


tmp_file="/dev/shm/$RANDOM.tmp"


CASSANDRA_CLI="/usr/local/cassandra/bin/cassandra-cli"


YCSB_BIN="/usr/local/src/ycsb-0.1.4/bin/ycsb"

WORKLOAD_DIR="/usr/local/src/ycsb-0.1.4/workloads"


RUN_PATH=`pwd`

LOG_DIR="$RUN_PATH/logs"


mkdir -p $LOG_DIR


if [ -z $YCSB_BIN ]; then

YCSB_BIN=`which ycsb`

if [ -z $YCSB_BIN ]; then

echo

echo -e "$color_red Not found ycsb command!!!"

reset_color

echo

echo -n " -> Input YCSB Command Path: "

read YCSB_BIN

if [ ! -f $YCSB_BIN ] || [ -z $YCSB_BIN ]; then

echo

echo -e "$color_red Invalid path or not found. retry!!"

echo

reset_color

exit 101

fi

fi

fi


if [ ! -d $WORKLOAD_DIR ]; then

echo -e "$color_red Not found workloads directory command!!!"

reset_color

exit 101

fi


###############################################################

basic() {

echo -e "$color_green TBD"

echo

}


cassandra_10() {

echo -n "

 -> Title(Name): "

read title

if [ -z $title ]; then

echo -e "$color_red title is Invalid of Null. retry!!"

echo

reset_color

exit 101

fi


#echo -n "

# [a] load

# [b] run

#

# -> Select Command: "

#

#read command

#case $command in

# a|A)

# command="load"

# ;;

# b|B)

# command="run"

# ;;

#esac

command="run"


echo

echo "==============================================="


echo -n -e "$color_red

 -> hosts (Not Null, ex:192.168.1.52,192.168.1.53): "

reset_color

read hosts

if [ -z $hosts ];then

echo

echo -e "$color_red Hosts is Null !!! retry!!!"

echo

reset_color

exit 105

fi


echo -n "

 -> cassandra.username (Default: Null): "

read cassandra_username


echo -n "

 -> cassandra.password (Default: Null): "

read cassandra_password


echo -n "

 -> cassandra.connectionretries (Default: 300): "

read cassandra_connectionretries

if [ -z $cassandra_connectionretries ]; then cassandra_connectionretries="300"; fi


echo -n "

 -> cassandra.operationretries (Default: 300): "

read cassandra_operationretries

if [ -z $cassandra_operationretries ]; then cassandra_operationretries="300"; fi


echo -n "

 -> cassandra.columnfamily (Default: data): "

read cassandra_columnfamily

if [ -z $cassandra_columnfamily ]; then cassandra_columnfamily="data"; fi


echo -n "

 -> fieldcount (Default: 10): "

read fieldcount

if [ -z $fieldcount ]; then fieldcount="10"; fi


echo -n "

 -> fieldlength (Default: 200): "

read fieldlength

if [ -z $fieldlength ]; then fieldlength="200"; fi


echo -n "

 -> cassandra.readconsistencylevel (Default: ONE): "

read cassandra_readconsistencylevel


echo -n "

 -> cassandra.writeconsistencylevel (Default: ONE): "

read cassandra_writeconsistencylevel

if [ -z $ ]; then =""; fi


echo -n "

 -> cassandra.scanconsistencylevel (Default: ONE): "

read cassandra_scanconsistencylevel


echo -n "

 -> cassandra.deleteconsistencylevel (Default: ONE): "

read cassandra_deleteconsistencylevel


echo -n "

 -> threads - Number of client threads (Default: 1): "

read threads


echo -n "

 -> target - Target ops/sec (Default: unthrottled): "

read target


args="a b c d e f"


TIMESTAMP=`now_time`

for arg in $args

do

host_one=`echo $hosts | awk -F',' '{print $1}'`

echo "create keyspace usertable;

use usertable;

drop column family $cassandra_columnfamily;

create column family $cassandra_columnfamily;" > $tmp_file

$CASSANDRA_CLI -h $host_one -p 9160 < $tmp_file > /dev/null

rm -f $tmp_file


CMD="$YCSB_BIN $command $db -s -P workloads/workload$arg -p hosts=$hosts"


if [ ! -z $cassandra_username ]; then CMD="$CMD -p cassandra.username=$cassandra_username"; fi

if [ ! -z $cassandra_password ]; then CMD="$CMD -p cassandra.password=$cassandra_password"; fi

if [ ! -z $cassandra_connectionretries ]; then CMD="$CMD -p cassandra.connectionretries=$cassandra_connectionretries"; fi

if [ ! -z $cassandra_operationretries ]; then CMD="$CMD -p cassandra.operationretries=$cassandra_operationretries"; fi

if [ ! -z $cassandra_columnfamily ]; then CMD="$CMD -p cassandra.columnfamily=$cassandra_columnfamily"; fi

if [ ! -z $fieldlength ]; then CMD="$CMD -p fieldlength=$fieldlength"; fi

if [ ! -z $fieldcount ]; then CMD="$CMD -p fieldcount=$fieldcount"; fi

if [ ! -z $cassandra_readconsistencylevel ]; then CMD="$CMD -p cassandra.readconsistencylevel=$cassandra_readconsistencylevel"; fi

if [ ! -z $cassandra_writeconsistencylevel ]; then CMD="$CMD -p cassandra.writeconsistencylevel=$cassandra_writeconsistencylevel"; fi

if [ ! -z $cassandra_scanconsistencylevel ]; then CMD="$CMD -p cassandra.scanconsistencylevel=$cassandra_scanconsistencylevel"; fi

if [ ! -z $cassandra_deleteconsistencylevel ]; then CMD="$CMD -p cassandra.deleteconsistencylevel=$cassandra_deleteconsistencylevel"; fi

if [ ! -z $threads ]; then

CMD="$CMD -threads $threads"

fi

if [ ! -z $target ]; then

CMD="$CMD -target $target"

fi

echo -e "$color_cyan"

echo "=== [ YCSB Benchamrk Command ] ==="

echo

echo "# $CMD"

#echo -n "$color_blue

#Press any key to continue..... "

#read tmp

LOG_FILE="$LOG_DIR/$title--workload$arg---$TIMESTAMP.log"


echo "[Start]: `now_time`" > $LOG_FILE

echo >> $LOG_FILE

echo "[Running] # $CMD" >> $LOG_FILE

echo >> $LOG_FILE

$CMD 2>&1 | tee -a $LOG_FILE

echo >> $LOG_FILE

echo "[END]: `now_time`" >> $LOG_FILE

done

reset_color


echo

}


cassandra_7() {

echo -e "$color_green TBD"

echo

}


cassandra_8() {

echo -e "$color_green TBD"

echo

}


gemfire() {

echo -e "$color_green TBD"

echo

}


hbase() {

echo -e "$color_green TBD"

echo

}


infinispan() {

echo -e "$color_green TBD"

echo

}


jdbc() {

echo -e "$color_green TBD"

echo

}


mapkeeper() {

echo -e "$color_green TBD"

echo

}


mongodb() {

echo -e "$color_green TBD"

echo

}


nosqldb() {

echo -e "$color_green TBD"

echo

}


redis() {

echo -e "$color_green TBD"

echo

}


voldemort() {

echo -e "$color_green TBD"

echo

}

###############################################################


clear


echo

echo -e "$color_green === 'Green' is supported ==="; reset_color

echo

echo " [a] basic"; reset_color

echo -e "$color_green [b] cassandra-10"; reset_color

echo " [c] cassandra-7"; reset_color

echo " [d] cassandra-8"; reset_color

echo " [e] gemfire"; reset_color

echo " [f] hbase"; reset_color

echo " [g] infinispan"; reset_color

echo " [h] jdbc"; reset_color

echo " [i] mapkeeper"; reset_color

echo " [j] mongodb"; reset_color

echo " [k] nosqldb"; reset_color

echo " [l] redis"; reset_color

echo " [m] voldemort"; reset_color

echo

echo -n " -> Select Database: "


read db

echo


case $db in

a|A)

db="basic"

basic

;;

b|B)

db="cassandra-10"

cassandra_10

;;

c|C)

db="cassandra-7"

cassandra_7

;;

d|D)

db="cassandra-8"

cassandra_8

;;

e|E)

db=gemfire

gemfire

;;

f|F)

db="hbase"

hbase

;;

g|G)

db="infinispan"

infinispan

;;

h|H)

db="jdbc"

jdbc

;;

i|I)

db="mapkeeper"

mapkeeper

;;

j|J)

db="mongodb"

mongodb

;;

k|K)

db="nosqldb"

nosqldb

;;

l|L)

db="redis"

redis

;;

m|M)

db="voldemort"

voldemort

;;

*)

echo

echo -e "$color_red Invalid Selection. Retry!!"

echo

reset_color

exit 100

;;

esac


reset_color


Posted by 사랑줍는거지
,