Saturday, April 30, 2016

HBase Installation Guide

HBase Installation Guide

Environment Setup

  • Install Java 1.6+ version.
  • Install latest Apache stable build.
  • Download HBase stable version.

HBase Installation

Download the stable version of HBase. In our case it is HBase 0.94.16.
  • Execute following command to download HBase 0.94.16
  • Unzip the compressed hbase file by executing the following command:
    tar –xvzf hbase-0.94.16.tar.gz
  • Login as root and create a directory “hbase”, Change the ownership of this directory to the hadoop user “hduser” and group “hadoop”. This is done mainly for our convenience, to differentiate each framework, software and application with different users. Execute the following commands
    cd /usr/local
    mkdir hbase
    chown -R hduser:hadoop /usr/local/hbase
  • Copy the unzipped hbase binaries into /usr/local/hbase folder 
    mv hbase-0.94.16 /usr/local/hbase
  • Start HBase by executing the following command.
    ./bin/start-hbase.sh
    starting Master, logging to logs/hbase-user-master-example.org.out
  • Hbase is now set up and is ready for further use. HBase logs can be found in the logs subdirectory. Check them out especially if it seems HBase had trouble starting.
  • Stop HBase by executing the following command.
    ./bin/stop-hbase.sh
    stopping hbase...............

HBase Shell

Once the HBase server is started, it is ready to be used.
  • Connect to HBase shell by executing the following command
    ./bin/hbase shell
    HBase Shell; enter 'help<RETURN>' for list of supported commands.
    Type "exit<RETURN>" to leave the HBase Shell
    Version 0.94.16, r1557241, Fri Jan 10 20:43:03 UTC 2014 hbase(main):001:0>
  • Create a table named test with columns cf1 and cf2.
    hbase(main):001:0> create 'test', ‘cf’
    0 row(s) in 2.4010 seconds
  • Check if the table is created properly by executing the following command.
    hbase(main):002:0> list 'test'
    TABLE
    test
    1 row(s) in 0.0370 seconds
  • Add data to the table by executing the following command.
    hbase(main):004:0> put 'test', 'row1', 'cf:a', 'value1'
    0 row(s) in 0.0560 seconds
    hbase(main):005:0> put 'test', 'row2', 'cf:b', 'value2
    0 row(s) in 0.0370 seconds
    hbase(main):006:0> put 'test', 'row3', 'cf:c', 'value3'
    0 row(s) in 0.0450 seconds
  • Verify the data insert by running a scan of the table as follows
    hbase(main):007:0> scan 'test'
    ROW COLUMN+CELL
    row1 column=cf:a, timestamp=1288380727188, value=value1
    row2 column=cf:b, timestamp=1288380738440, value=value2
    row3 column=cf:c, timestamp=1288380747365, value=value3
    3 row(s) in 0.0590 seconds
  • To get a single row from table, execute the following command
    hbase(main):008:0> get 'test', 'row1'
    COLUMN CELL
    cf:a timestamp=1288380727188, value=value1
    1 row(s) in 0.0400 seconds
  • To exit from hbase shell, execute the following command
    hbase(main):008:0> exit

Friday, April 15, 2016

Pig Installation Guide

Pig Installation Guide

Environment Setup

  • 1.1 Install latest Apache stable build.
  • 1.2 Download Pig0.11.1 version.

Pig Installation

Download the stable version of Pig. In our case it is Pig 0.11.1. This version works with Hadoop 0.20.x, 0.23.x, 1.x, 2.x.
  • Execute following command to download Hive 01.2
  • Copy the pig binaries into the folder /usr/local/pig, by executing the following command.
    cp -r pig-0.11.1.tar.gz /usr/local/pig
  • Change the directory to /usr/local/pig by executing the following command 
    cd /usr/local/pig
  • Unzip the compressed pig file by executing the following command:
    sudo tar –xvzf pig-0.11.1.tar.gz

  • Update the .bashrc file for hduser, so that certain pig parameters are set, every time the hduser logs in. Edit the .bashrc file and add the entries shown below.
    $ vi .bashrc
    export PIG_HOME='/usr/local/pig/pig-0.11.1'
    export PATH=$HADOOP_HOME/bin:$PIG_HOME/bin:$JAVA_HOME/bin:$PATH
  • Set the environment variable JAVA_HOME to point to the Java installation directory, which Pig uses internally.
    export JAVA_HOME=<<Java_installation_directory>>
  • Compile the .bashrc file by executing the following command.
    ..bashrc
  • Pig is now set up and configured for further use.

Execution Modes in Pig

Pig has 2 modes of execution, local mode and MapReduce mode Both are described in detail below.

Local Mode

Local mode is used to verify and debug Pig scripts or queries. It is efficient for handling small datasets on a single machine. It runs on a single JVM and accesses the local filesystem.
  • To run in local mode, execute the following command.
    $pig –x local
    As soon as the above command runs, the grunt shell opens up where the user can run pig commands against the local filesystem.
    grunt>

MapReduce Mode

This is the default mode Pig translates the queries into MapReduce jobs, which requires access to a Hadoop cluster and its filesystem.
  • To run in MapReduce mode, execute the following command
    $pig 
    As soon as the above command runs, the grunt shell opens up where
    the user can run pig commands against the hadoop filesystem.
    2013-10-28 11:39:44,767 [main] INFO org.apache.pig.Main –
    Apache Pig version 0.11.1 (r1459641) compiled Mar 22 2013, 02:13:53
    2013-10-28 11:39:44,767 [main] INFO org.apache.pig.Main – 
    Logging error messages to: /home/hduser/pig_1382985584762.log
    2013-10-28 11:39:44,797 [main] INFO org.apache.pig.impl.util.Utils – 
    Default bootup file /home/hduser/.pigbootup not found
    2013-10-28 11:39:45,094 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine– 
    Connecting to hadoop file system at:
    hdfs://Hadoopmaster:54310
    2013-10-28 11:39:45,592 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine– 
    Connecting to map-reduce job tracker at:
    Hadoopmaster:54311
    grunt>
  • On viewing the log reports, you can see the filesystem and job tracker that Pig connects to.
  • Grunt is an interactive shell for running Pig queries and commands.
  • There are 3 ways to run Pig programs, one is to run them via Pig scripts, other is to use grunt shell to run interactive queries, and the 3rd way is to embed a script into a Java code

Wednesday, April 13, 2016

YCSB installation and using as Client to the MongoDB cluster / Standalone



1.       Create 2VMs and install RHEL
2.       Add static IP ( Private IP in our case) to these 2VMs
3.       Assign hostname to 2VMs in /etc/sysconfig/network file
4.       Map 2VMs static IP and Hostname details in the /etc/hosts file.
5.       Disable the firewall (iptables)  /etc/sysconfig/iptables

OpenJDK uninstall and Oracle JDK installation
Uninstall OpenJDK and install Oracle complete JDK , preinstalled OpenJDK does not have compiler installed by default.

Java installed version
root@2daygeek [~]# java -version
java version "1.7.0_72"
Java(TM) SE Runtime Environment (build 1.7.0_72-b14)
Java HotSpot(TM) 64-Bit Server VM (build 24.72-b04, mixed mode)

Java Installed method
root@2daygeek [~]# rpm -qa | grep java
java-1.7.0-openjdk-1.7.0.71-2.5.3.2.el6_6.x86_64

 Verifying JAVA installed
root@2daygeek [~]# rpm -qa | grep jdk
jdk1.8.0_25-1.8.0_25-fcs.x86_64

Remove/Uninstall Openjdk
root@2daygeek [~]# rpm -e (grep output)
root@2daygeek [~]# rpm -e java-1.7.0-openjdk-1.7.0.71-2.5.3.2.el6_6.x86_64
root@2daygeek [~]# java -version
bash: /usr/bin/java: No such file or directory

Download Oracle java jdk rpm and run, this case have installed the latest version of JAVA 8 available during the time testing.
rpm –Uvh jdk-8u73-linux-x64.rpm

Check Java installed and add JAVA_HOME and bin path into environment variables.

Install Maven
apache-maven-3.1.1-bin.tar.gz
sudo tar xzf apache-maven-*-bin.tar.gz -C /usr/local
cd /usr/local
sudo ln -s apache-maven-* maven
sudo vi /etc/profile.d/maven.sh

Add the following to maven.sh
export M2_HOME=/usr/local/maven
export PATH=${M2_HOME}/bin:${PATH}

Reload bash and test mvn
bash
mvn –version

Install YCSB and Setup
Download the latest version of YCSB with MongoDB binder only, no need to download whole YCSB package with all DB binders.

Extract the tar file and place in the home directory (or any place where you maintain the software repository)
curl -O --location https://github.com/brianfrankcooper/YCSB/releases/download/0.7.0/ycsb-0.7.0.tar.gz
tar xfvz ycsb-0.7.0.tar.gz
cd ycsb-0.7.0

Try below commands if it runs successfully then you’re good to proceed if not then necessary python argparse package have to be installed. (RHEL 6 deprecated this this package)

Tar –zxvf argparse-1.4.0.tar.gz
Cd argparse-1.4.0
Python setup.py install

Test YCSB runs successfully
$ ./bin/ycsb shell basic
> help
Commands:
  read key [field1 field2 ...] - Read a record
  scan key recordcount [field1 field2 ...] - Scan starting at key
  insert key name1=value1 [name2=value2 ...] - Insert a new record
  update key name1=value1 [name2=value2 ...] - Update a record
  delete key - Delete a record
  table [tablename] - Get or [set] the name of the table
  quit - Quit

Run YCSB on the MongoDB cluster
Start mongd instance on all the nodes of Recplicaset.

Data Load command
./bin/ycsb load mongodb-async -s -P workloads/workloada -p mongodb.url=mongodb://localhost:27017/ycsb?w=0

To run with the synchronous driver from MongoDB:
./bin/ycsb load mongodb -s -P workloads/workloada -p mongodb.url=mongodb://localhost:27017/ycsb?w=0

Load more data using more threads
./bin/ycsb load mongodb-async -s -P workloads/workloada -p recordcount=10000000 -threads 16 mongodb.url=mongodb://localhost:27017/ycsb?w=0
·         load‘ flag indicates that this is a load run.
·         s‘ flag prints status at 10 sec intervals
·         recordcount‘ is set to 10 million.
·         threads‘ sets the number of client threads to 16.

Run async driver mongodb with operation count same as data load row count and thread 2
./bin/ycsb load mongodb -s -P workloads/workloada -p mongodb.url=mongodb://localhost:27017/ycsb?w=0 -p operationcount=10000000 -threads 2
 

Running the Tests on different workloads.
·         Workload A: Update heavy workload: 50/50% Mix of Reads/Writes
·         Workload B: Read mostly workload: 95/5% Mix of Reads/Writes
·         Workload C: Read only: 100% reads
·         Workload D: Read latest workload: More traffic on recent inserts
·         Workload E: Short ranges: Short range based queries
·         Workload F: Read-modify-write: Read, modify and update existing records

Loading 94Gb data Record count 8000000
[root@ycsb1 ycsb]# ./bin/ycsb load mongodb-async -s -P workloads/workloada -p recordcount=80000000 -threads 16 -p mongodb.url=mongodb://node1.rs05.mongodb:27017/ycsb?w=0
: Count=116769, Max=539135, Min=5, Avg=344.97, 90=25, 99=8511, 99.9=33919, 99.99=256639]
[OVERALL], RunTime(ms), 2266923.0
[OVERALL], Throughput(ops/sec), 35290.126748901486
[CLEANUP], Operations, 16.0
[CLEANUP], AverageLatency(us), 95.5625
[CLEANUP], MinLatency(us), 1.0
[CLEANUP], MaxLatency(us), 1462.0
[CLEANUP], 95thPercentileLatency(us), 11.0
[CLEANUP], 99thPercentileLatency(us), 1462.0
[INSERT], Operations, 8.0E7
[INSERT], AverageLatency(us), 449.2443936
[INSERT], MinLatency(us), 5.0
[INSERT], MaxLatency(us), 1.6097279E7
[INSERT], 95thPercentileLatency(us), 1672.0
[INSERT], 99thPercentileLatency(us), 5351.0
[INSERT], Return=OK, 80000000








Wednesday, April 6, 2016

Quick Start Guide to Run YCSB on MongoDB

Quick Start Guide to Run YCSB on MongoDB

Note: The below process was tested on Standalone MongoDB instance only.
1.     Install and Start MongoDB
Please refer MongoDB Standalone Installation best practice and reference guide

2.     Install Java
Bydefault on RHEL6 java version "1.7.0_65" / OpenJDK Runtime Environment (rhel-2.5.1.2.el6_5-x86_64 u65-b17) is installed.
You can use the same or can also install latest Java version from Oracle, YCSB works on both.

rpm –Uvh jdk-8u73-linux-x64.rpm

or install using yum
yum install java-devel

update JAVA_HOME and PATH variables in the .bash_profile of root or any user you login with.

3.     Install Maven
wget http://ftp.heanet.ie/mirrors/www.apache.org/dist/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.tar.gz
sudo tar xzf apache-maven-*-bin.tar.gz -C /usr/local
cd /usr/local
sudo ln -s apache-maven-* maven
sudo vi /etc/profile.d/maven.sh
Add the following to maven.sh
export M2_HOME=/usr/local/maven
export PATH=${M2_HOME}/bin:${PATH}
Reload bash and test mvn
bash
mvn –version

4.     Install YCSB and Setup
Download the YCSB zip file and compile:
curl -O --location https://github.com/brianfrankcooper/YCSB/releases/download/0.5.0/ycsb-0.5.0.tar.gz
tar xfvz ycsb-0.5.0.tar.gz
cd ycsb-0.5.0

Try below commands if it runs successfully then you’re good to proceed if not then necessary python argparse package have to be installed. (RHEL 6 deprecated this this package)

$ ./bin/ycsb shell basic
> help
Commands:
  read key [field1 field2 ...] - Read a record
  scan key recordcount [field1 field2 ...] - Scan starting at key
  insert key name1=value1 [name2=value2 ...] - Insert a new record
  update key name1=value1 [name2=value2 ...] - Update a record
  delete key - Delete a record
  table [tablename] - Get or [set] the name of the table
  quit - Quit


Run YCSB
Now you are ready to run! First, use the asynchronous driver to load the data:
./bin/ycsb load mongodb-async -s -P workloads/workloada > outputLoad.txt




[root@localhost YCSB]# more outputLoad.txt
YCSB Client 0.1
Command line: -db com.yahoo.ycsb.db.AsyncMongoDbClient -s -P workloads/workloada -load
mongo connection created with mongodb://localhost:27017/ycsb?w=1
14:46:49.257 [Thread-1] DEBUG c.a.m.c.c.b.BootstrapConnectionFactory - Simple MongoDB bootstrap to localhost/127.0.0.1:27017.
14:46:50.348 [Thread-1] DEBUG c.a.mongodb.client.ClientImpl - MongoDB Connection closed: MongoDB(49021-->localhost/127.0.0.1:2701
7)
[OVERALL], RunTime(ms), 1521.0
[OVERALL], Throughput(ops/sec), 657.4621959237344
[CLEANUP], Operations, 1.0
[CLEANUP], AverageLatency(us), 2207.0
[CLEANUP], MinLatency(us), 2206.0
[CLEANUP], MaxLatency(us), 2207.0
[CLEANUP], 95thPercentileLatency(us), 2207.0
[CLEANUP], 99thPercentileLatency(us), 2207.0
[INSERT], Operations, 1000.0
[INSERT], AverageLatency(us), 1113.879
[INSERT], MinLatency(us), 416.0
[INSERT], MaxLatency(us), 382207.0
[INSERT], 95thPercentileLatency(us), 1451.0
[INSERT], 99thPercentileLatency(us), 2131.0
[INSERT], Return=OK, 1000


In MongoDB
[root@localhost ~]# mongo
MongoDB shell version: 2.6.11
connecting to: test
> show dbs
admin  (empty)
local  0.078GB
ycsb   0.078GB
> use ycsb
switched to db ycsb
> show collections
system.indexes
usertable
> db.usertable.find().limit(1).pretty()
{
        "_id" : "user6284781860667377211",
        "field5" : BinData(0,"PE85LUUrJjF2Jzh+PSwsOSBwN0Z/Ljk6OEo1OFd5PzAuKC18J1tpJ0AhOlRpOkIhLzg0NSouLz1+K14lMlYrNSRyJjF+MlhtKyUsIDRoL0RrOyMuJFBjO0g/LzByLiM+OSlsNw=="),
        "field4" : BinData(0,"JipgKiFoIkcxLVBrLUM7NFQhLEotICBgPzZqJjcqMzVwN0w/Ky16JyMiJjooPVBtPD40MDhkIzA0KE9nPkRxMzp0Ol4jMFAlKiN+PlB3KVY3JCcwOV4rNTt8LDZ6NiVgNU5jMg=="),
        "field3" : BinData(0,"LDZ+OkEvPkFxLj1wOz8sNTd2PUkrKF01IUJxL0w9OEZjPyFuIEV/P15pKkxtJjlqOTUkMEZ1KD8+OS0iOCYuNT5gPSQmKFo5OVFjP1tjPUknPC96P0opJCl8J15xJ0IjKkVlPg=="),
        "field2" : BinData(0,"KC4mNT4uPUxxIy9yPjt8LldvMytkJkU3LyN4NjV8J09vIlJ3LTJkOzAqJDsqJVAxISEiOER/Pk9jMjkyLDh4J1s9NUZ7MkNxKllvL10vOl57Mzs8MVI3PTAwLjAyIUozJz52Kg=="),
        "field9" : BinData(0,"LVU3KUozJjkyJFktKS9qIlY3PS94Nlp/IjEiPC1gOzd6IyIqNkU1MC8oJjUkPCRoJS9uKiEyPiY8OFdhPkp7Ojw4K141LTYkJ0s5JDEoKF8tJDAwKiY2MVojOTFoKy4uIj9gOw=="),
        "field8" : BinData(0,"Okc7OFhhJVwtMSs2LkIjJFtnOyQ2KVpxKV0nIVJ/P0w1IUMpM1B1NlcrJltvKjkuNlN7L0krNEZtPkE3L1RjJ1gxL0svODgkIjIwIEFrLkclOV9vOlJ/Ji4+NjF2JzZmIEhzIg=="),
        "field7" : BinData(0,"J1MnJUE3MFspNCg+O0YhKVl9LF0vLCswMjpkL1QpJ1J7J0F7OyxiM0JrOzs6MDRsOjNqM1cxIiEwJVxhOjw2MVRjMzIwLFxnKyY+JElhJzVyI0plIldtLlwnPDN6KlV9MEdjOg=="),
        "field6" : BinData(0,"LyUmKVctK1V3OyRmOCx2K0VtPSloPypsPSIqNUsvPD5+LkIvMDZqLlN9L14hKCJ4MVNzOzB2MV53O0EhMEIpIUl9MkctMDo8PTY+JUtpP1orNUI7NF9nPyp0Ij4iJVYhOTQsNA=="),
        "field1" : BinData(0,"NDBuMkVlIzpyLl0lNCh0Ny9sMzV0J1hhIy4gMEV1OzR8LyosNiQ6NTEgKSU8PEx3P1EtOSE0Lj1yJk1vNCEwOV99Oj96Iy1+JStqKy42LDk8LCpwPU1jKjF+OkdhI14lP1p/Pw=="),
        "field0" : BinData(0,"IS5kM1RvJjYwNTQ8JkcjMEVzJ1knNC4qIkI3IFInLjZ2OlJ3NzkgPUozKlopPDE4Ijl4K0srIl05PCpyOkEtPVwrLjc6MCwuKkl5IkUpIyBgOit8IEcrMS0oNjguNEBzKStmMg==")
}
> db.usertable.count()
1000
> 


Then, run the workload:
./bin/ycsb run mongodb-async -s -P workloads/workloada > outputRun.txt




[root@localhost YCSB]# more outputRun.txt
YCSB Client 0.1
Command line: -db com.yahoo.ycsb.db.AsyncMongoDbClient -s -P workloads/workloada -t
mongo connection created with mongodb://localhost:27017/ycsb?w=1
15:34:18.338 [Thread-1] DEBUG c.a.m.c.c.b.BootstrapConnectionFactory - Simple MongoDB bootstrap to localhost/127.0.0.1:27017.
15:34:19.021 [Thread-1] DEBUG c.a.mongodb.client.ClientImpl - MongoDB Connection closed: MongoDB(49027-->localhost/127.0.0.1:2701
7)
[OVERALL], RunTime(ms), 848.0
[OVERALL], Throughput(ops/sec), 1179.245283018868
[CLEANUP], Operations, 1.0
[CLEANUP], AverageLatency(us), 2020.0
[CLEANUP], MinLatency(us), 2020.0
[CLEANUP], MaxLatency(us), 2020.0
[CLEANUP], 95thPercentileLatency(us), 2020.0
[CLEANUP], 99thPercentileLatency(us), 2020.0
[READ], Operations, 520.0
[READ], AverageLatency(us), 580.0365384615385
[READ], MinLatency(us), 237.0
[READ], MaxLatency(us), 71359.0
[READ], 95thPercentileLatency(us), 669.0
[READ], 99thPercentileLatency(us), 853.0
[READ], Return=OK, 520
[UPDATE], Operations, 480.0
[UPDATE], AverageLatency(us), 755.9708333333333
[UPDATE], MinLatency(us), 397.0
[UPDATE], MaxLatency(us), 10263.0
[UPDATE], 95thPercentileLatency(us), 964.0
[UPDATE], 99thPercentileLatency(us), 4767.0
[UPDATE], Return=OK, 480


TRAP::
Everytime drop the Collection and rerun the benchmark as data already inserted, load step will throw      Duplicate exception.
[root@localhost YCSB]# ./bin/ycsb load mongodb -s -P workloads/workloada > outputLoad.txt
java -cp /root/YCSB/mongodb-binding/conf:/root/YCSB/conf:/root/YCSB/lib/jackson-mapper-asl-1.9.4.jar:/root/YCSB/lib/HdrHistogram-2.1.4.jar:/root/YCSB/lib/core-0.7.0.jar:/root/YCSB/lib/jackson-core-asl-1.9.4.jar:/root/YCSB/mongodb-binding/lib/logback-classic-1.1.2.jar:/root/YCSB/mongodb-binding/lib/mongodb-binding-0.7.0.jar:/root/YCSB/mongodb-binding/lib/mongodb-async-driver-2.0.1.jar:/root/YCSB/mongodb-binding/lib/slf4j-api-1.6.4.jar:/root/YCSB/mongodb-binding/lib/mongo-java-driver-3.0.3.jar:/root/YCSB/mongodb-binding/lib/logback-core-1.1.2.jar com.yahoo.ycsb.Client -db com.yahoo.ycsb.db.MongoDbClient -s -P workloads/workloada -load
Loading workload...
Starting test.
2016-03-10 15:42:49:871 0 sec: 0 operations; est completion in 0 seconds
DBWrapper: report latency for each error is false and specific error codes to track for latency are: []
Exception while trying bulk insert with 0
com.mongodb.MongoWriteException: insertDocument :: caused by :: 11000 E11000 duplicate key error index: ycsb.usertable.$_id_  dup key: { : "user6284781860667377211" }
        at com.mongodb.MongoCollectionImpl.executeSingleWriteRequest(MongoCollectionImpl.java:487)
        at com.mongodb.MongoCollectionImpl.insertOne(MongoCollectionImpl.java:277)
        at com.yahoo.ycsb.db.MongoDbClient.insert(MongoDbClient.java:270)
        at com.yahoo.ycsb.DBWrapper.insert(DBWrapper.java:208)
        at com.yahoo.ycsb.workloads.CoreWorkload.doInsert(CoreWorkload.java:579)
        at com.yahoo.ycsb.ClientThread.run(Client.java:346)
Error inserting, not retrying any more. number of attempts: 1Insertion Retry Limit: 0
2016-03-10 15:42:50:674 0 sec: 0 operations; est completion in 106751991167300 days 15 hours [CLEANUP: Count=1, Max=2087, Min=2086, Avg=2087, 90=2087, 99=2087, 99.9=2087, 99.99=2087] [INSERT-FAILED: Count=1, Max=78143, Min=78080, Avg=78112, 90=78143, 99=78143, 99.9=78143, 99.99=78143] [INSERT: Count=0, Max=0, Min=9223372036854775807, Avg=�, 90=0, 99=0, 99.9=0, 99.99=0]

Dropping usertable collection
> db.usertable.drop()
true
> 


Similarly, to use the synchronous driver from MongoDB Inc. we load the data:
./bin/ycsb load mongodb -s -P workloads/workloada > outputLoad.txt




outputLoad.txt
[OVERALL], RunTime(ms), 1735.0
[OVERALL], Throughput(ops/sec), 576.3688760806916
[CLEANUP], Operations, 1.0
[CLEANUP], AverageLatency(us), 2169.0
[CLEANUP], MinLatency(us), 2168.0
[CLEANUP], MaxLatency(us), 2169.0
[CLEANUP], 95thPercentileLatency(us), 2169.0
[CLEANUP], 99thPercentileLatency(us), 2169.0
[INSERT], Operations, 1000.0
[INSERT], AverageLatency(us), 1305.7
[INSERT], MinLatency(us), 692.0
[INSERT], MaxLatency(us), 67263.0
[INSERT], 95thPercentileLatency(us), 2181.0
[INSERT], 99thPercentileLatency(us), 5415.0
[INSERT], Return=OK, 1000

In The MongoDB
> show collections
system.indexes
usertable
> db.usertable.count()
1000
> 


Then, run the workload:
./bin/ycsb run mongodb -s -P workloads/workloada > outputRun.txt



outputRun.txt
[OVERALL], RunTime(ms), 1776.0
[OVERALL], Throughput(ops/sec), 563.063063063063
[CLEANUP], Operations, 1.0
[CLEANUP], AverageLatency(us), 2067.0
[CLEANUP], MinLatency(us), 2066.0
[CLEANUP], MaxLatency(us), 2067.0
[CLEANUP], 95thPercentileLatency(us), 2067.0
[CLEANUP], 99thPercentileLatency(us), 2067.0
[READ], Operations, 504.0
[READ], AverageLatency(us), 1201.1170634920634
[READ], MinLatency(us), 767.0
[READ], MaxLatency(us), 16199.0
[READ], 95thPercentileLatency(us), 1751.0
[READ], 99thPercentileLatency(us), 1929.0
[READ], Return=OK, 504
[UPDATE], Operations, 496.0
[UPDATE], AverageLatency(us), 1509.0645161290322
[UPDATE], MinLatency(us), 839.0
[UPDATE], MaxLatency(us), 79679.0
[UPDATE], 95thPercentileLatency(us), 1995.0
[UPDATE], 99thPercentileLatency(us), 3913.0
[UPDATE], Return=OK, 496

Diff between Synchronize and Asynchronize driver usage
While the usability of the driver is critical, its primary reason for existing is to enable maximum performance from a MongoDB server. A series of benchmarks have been created to measure the performance of the Asynchronous driver relative to the MongoDB Inc. supported (legacy) driver.
YCSB (Yahoo! Cloud Server Benchmark) provides a standard set of workloads to try and compare the performance of various data stores. Instead of benchmarking different data stores we have used the benchmark to compare the relative performance of the legacy MongoDB Java Driver and the MongoDB Asynchronous Java Driver. The YCSB results show MongoDB Asynchronous Java Driver has lower latencylower variability in latency and higher throughput across all of the benchmark scenarios. In addition, this driver has a much lower slope for increasing latency as contention for the available connections increases

Running Workload  < To be updated >
6 things to keep in mind
·         Set up the database system to test
·         Choose the appropriate DB interface layer
·         Choose the appropriate workload
·         Choose the appropriate runtime parameters (number of client threads, target throughput, etc.)
·         Load the data
·         Execute the workload

If followed above steps as it is and have installed all the apps using root then