Coder Social home page Coder Social logo

cassandra-qoe's Introduction

Cassandra-QoE

chmod 777 up.sh

git add --all . git commit -m "minor update" -a git push origin master

There is a front-end clients queue manager

  • client.cassandra-qoe.cs331-uc.emulab.net

There is a replica selector

  • selector.cassandra-qoe.cs331-uc.emulab.net

There are 3 Cassandra nodes:

  • cass-1.cassandra-qoe.cs331-uc.emulab.net
  • cass-2.cassandra-qoe.cs331-uc.emulab.net
  • cass-3.cassandra-qoe.cs331-uc.emulab.net

Open 8 SSH terminal :

  • 2 cass-1 (for inserting the CSV data and running cassandra)
  • 1 cass-2 (for running cassandra)
  • 1 cass-3 (for running cassandra)
  • 1 selector (for waiting a request that will ask a replica address)
  • 3 client (for sending rabbit-mq request, receiving rabbit-mq request, and asking the replica address to Selector)

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

Open SSH to all nodes Install Java8 on cassandra nodes

sudo apt-get update
printf "Y" | sudo apt-get install software-properties-common
printf "\n" | sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-set-default

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

run in cass-1

cd /tmp/
git clone https://github.com/daniarherikurniawan/Cassandra-QoE.git
cd /tmp/Cassandra-QoE/apache-cassandra-3.0.17
cp conf/cassandra1.yaml conf/cassandra.yaml 
cd bin
sudo chmod 777 cassandra
cd /tmp/Cassandra-QoE/apache-cassandra-3.0.17/bin/
./cassandra -f

run in cass-2

cd /tmp/
git clone https://github.com/daniarherikurniawan/Cassandra-QoE.git
cd /tmp/Cassandra-QoE/apache-cassandra-3.0.17
cp conf/cassandra2.yaml conf/cassandra.yaml 
cd bin
sudo chmod 777 cassandra
cd /tmp/Cassandra-QoE/apache-cassandra-3.0.17/bin/
./cassandra -f

run in cass-3 (run this after running cass-1 and cass-2)

cd /tmp/
git clone https://github.com/daniarherikurniawan/Cassandra-QoE.git
cd /tmp/Cassandra-QoE/apache-cassandra-3.0.17
cp conf/cassandra3.yaml conf/cassandra.yaml 
cd bin
sudo chmod 777 cassandra
cd /tmp/Cassandra-QoE/apache-cassandra-3.0.17/bin/
./cassandra -f

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

open a new ssh on any node to check the status of Cassandra cluster

cd /tmp/Cassandra-QoE/apache-cassandra-3.0.17/bin
sudo chmod 777 nodetool
./nodetool status

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

preparation for running cqlsh on any cassandra node

#csh
bash
cd /tmp/Cassandra-QoE/
chmod 777 scripts/*
myIP="$(./scripts/getIP.sh)"
echo $myIP
cd /tmp/Cassandra-QoE/apache-cassandra-3.0.17/bin
chmod 777 cqlsh
./cqlsh $myIP

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

Prepare the data and insert test data

CREATE KEYSPACE CassDB
	WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3};

USE CassDB;

CREATE TABLE users(
   id UUID PRIMARY KEY,
   name text,
   address text,
   salary int,
   phone text
   );

select * from users;

INSERT INTO users (id, name, address,
   salary, phone) VALUES(now(),'ram', 'Hyderabad', 50000, '9848022338');

INSERT INTO users (id, name, address,
   salary, phone) VALUES(now(),'robin', 'Hyderabad', 40000, '9848022339');

INSERT INTO users (id, name, address,
   salary, phone) VALUES(now(),'rahman', 'Chennai', 45000, '9848022330');

select * from users;

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

Insert dataset from CSV

./cqlsh $myIP
USE CassDB;

COPY CassDB.users (id,name,address,salary,phone) FROM '../../dataset/data-users-1.csv' WITH DELIMITER='|' AND HEADER=TRUE;

COPY CassDB.users (id,name,address,salary,phone) FROM '../../dataset/data-users-2.csv' WITH DELIMITER='|' AND HEADER=TRUE;
COPY CassDB.users (id,name,address,salary,phone) FROM '../../dataset/data-users-3.csv' WITH DELIMITER='|' AND HEADER=TRUE;
COPY CassDB.users (id,name,address,salary,phone) FROM '../../dataset/data-users-4.csv' WITH DELIMITER='|' AND HEADER=TRUE;
COPY CassDB.users (id,name,address,salary,phone) FROM '../../dataset/data-users-5.csv' WITH DELIMITER='|' AND HEADER=TRUE;
COPY CassDB.users (id,name,address,salary,phone) FROM '../../dataset/data-users-6.csv' WITH DELIMITER='|' AND HEADER=TRUE;
COPY CassDB.users (id,name,address,salary,phone) FROM '../../dataset/data-users-7.csv' WITH DELIMITER='|' AND HEADER=TRUE;
COPY CassDB.users (id,name,address,salary,phone) FROM '../../dataset/data-users-8.csv' WITH DELIMITER='|' AND HEADER=TRUE;
COPY CassDB.users (id,name,address,salary,phone) FROM '../../dataset/data-users-9.csv' WITH DELIMITER='|' AND HEADER=TRUE;
COPY CassDB.users (id,name,address,salary,phone) FROM '../../dataset/data-users-10.csv' WITH DELIMITER='|' AND HEADER=TRUE;

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

run in server (selector)

cd /tmp/
git clone https://github.com/daniarherikurniawan/Cassandra-QoE.git
cd /tmp/Cassandra-QoE/
python replica-selector/server.py

run in client for rabbitMQ

apt-key adv --keyserver "hkps.pool.sks-keyservers.net" --recv-keys "0x6B73A36E6026DFCA"

sudo tee /etc/apt/sources.list.d/bintray.rabbitmq.list <<EOF
deb https://dl.bintray.com/rabbitmq-erlang/debian xenial erlang
deb https://dl.bintray.com/rabbitmq/debian xenial main
EOF

sudo apt-get update
sudo apt-get install rabbitmq-server

<!-- =================== -->
// check the status of rabbitMQ, it should be automatically started

sudo invoke-rc.d rabbitmq-server start
systemctl status rabbitmq-server.service

<!-- =================== -->
// if rabbit-mq is ready, then:

bash
export LC_ALL=C
pip install pika

<!-- =================== -->
// run rabbit-mq receiver

python /tmp/Cassandra-QoE/rabbit-mq/receive.py

run in client for preparing sending request to replica selection

cd /tmp/
git clone https://github.com/daniarherikurniawan/Cassandra-QoE.git
cd /tmp/Cassandra-QoE/
sudo apt-get update
printf 'Y' | sudo apt-get install python-pip
pip -V

bash
export LC_ALL=C
pip install cassandra-driver
pip install Faker

// run rabbit-mq sender

python /tmp/Cassandra-QoE/rabbit-mq/send.py

Make sure these files are running

  • replica-selector/server.py (selector)
  • rabbit-mq/receive.py (client)
  • rabbit-mq/send.py (client)

Note: You just need to edit the send.py and the algorithm at server.py

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

Installing pandas on client node

bash
export LC_ALL=C

sudo apt install python3-pip --reinstall
pip3 install pandas
pip3 install matplotlib
pip3 install datetime
/tmp/Cassandra-QoE/dataset
python3

Python script for preparing the library

import pandas as pd
import io
import matplotlib.pyplot as plt
import numpy as np
import datetime
from datetime import timedelta
from datetime import datetime

Python script for getting the random uuid

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

Another Query

./cqlsh $myIP
USE CassDB;

UPDATE users SET address='Delhi',salary=50000
   WHERE id=e9454d00-fc01-11e8-add1-35de7ed92caa;

SELECT name, salary from users;

CREATE INDEX ON users(salary);
SELECT * FROM users WHERE salary=50000;

DELETE FROM users WHERE id=3e9454d00-fc01-11e8-add1-35de7ed92caa;

SELECT * FROM users WHERE salary>1000 ALLOW FILTERING;

DROP TABLE users;
TRUNCATE CassDB.users;
DESCRIBE TABLES;

SELECT * FROM users LIMIT 10;

SELECT COUNT(*) FROM users;

exit

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

Insert test data using python driver

sudo apt-get update
printf 'Y' | sudo apt-get install python-pip
pip -V
export LC_ALL=C
pip install cassandra-driver
pip install Faker

cd /tmp/Cassandra-QoE/
python scripts/generateTestData.py

Random

// reduce .git size
git reflog expire --all --expire=now
git gc --prune=now --aggressive

cassandra-qoe's People

Contributors

daniarherikurniawan avatar

Watchers

Nagaraj Lakkarasu avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.