1. Download and extract Cassandra http://archive.apache.org/dist/cassandra/2.0.16/apache-cassandra-2.0.16-bin.tar.gz Note that my test version is Cassandra-2.0.16. We will denote the path to which the file is extracted as CASSANDRA_BIN 2. Setup environment for cassandra mkdir -p run_cassandra/cassandra_conf/triggers - Download cassandra-env.sh, cassandra.yaml, log4j-server.properties from my mail attachement and then copy those files in run_cassandra/cassandra_conf - Search for /home/nehaag/hugetmpfs in these files and change this to a local directory mounted as tmpfs. Let’s say that is CASSANDRA_DATA. A folder named "cassandra" will be automatically created (For example: CASSANDRA_DATA/cassandra) when running Cassandra. - Please note that these scripts will need modifications if you use Cassandra version other that 2.0.16 - Download create-ycsb-table.cql.j2 from my email attachment and copy it in run_cassandra/ 3. JAVA setup, get JRE: openjdk v1.7.0_101 (sudo apt-get install openjdk-7-jre for Ubuntu) 4. Setup YCSB Load generator: - Clone ycsb from: https://github.com/brianfrankcooper/YCSB.git. Let’s say this is downloaded to YCSB_ROOT - You need to have maven 3 installed (`sudo apt-get install maven’ in ubuntu) - Create a script (say run-cassandra.sh) in run_cassandra as follows: input_file=run_cassandra/create-ycsb-table.cql.j2 cassandra_cli=${CASSANDRA_BIN}/bin/cassandra-cli host=”127.0.0.1” #Ip address of the machine running cassasndra server $cassandra_cli -h $host --jmxport 7199 -f create-ycsb-table.cql cd ${YCSB_ROOT} # Load dataset ${YCSB_ROOT}/bin/ycsb -cp ${YCSB_ROOT}/cassandra/target/dependency/slf4j-simple-1.7.12.jar:${YCSB_ROOT}/cassandra/target/dependency/slf4j-simple-1.7.12.jar load cassandra-10 -p hosts=$host -threads 20 -p fieldcount=20 -p recordcount=5000000 -P ${YCSB_ROOT}/workloads/workloadb -s # Run benchmark ${YCSB_ROOT}/bin/ycsb -cp ${YCSB_ROOT}/cassandra/target/dependency/slf4j-simple-1.7.12.jar:${YCSB_ROOT}/cassandra/target/dependency/slf4j-simple-1.7.12.jar run cassandra-10 -p hosts=$host -threads 20 -p fieldcount=20 -p operationcount=50000000 -p recordcount=5000000 -p readproportion=0.05 -p updateproportion=0.95 -P ${YCSB_ROOT}/workloads/workloadb -s 5. Run the cassandra server on host machine: rm -r ${CASSANDRA_DATA}/cassandra && CASSANDRA_CONF=run_cassandra/cassandra_conf JRE_HOME=/usr/lib/jvm/java-7-openjdk-amd64/jre ${CASSANDRA_BIN}/bin/cassandra -f 6. Run load generator on same/some other machine: ./run-cassandra.sh YCSB periodcally spits out the throughput and latency number At the end overall throughput and latency will be printed out