by

Menginstall Cassandra (Part I)

Sebuah catatan untuk berbagi kepada teman-teman web developer yang ingin menggunakan cassandra sebagai database-nya. Sampai tulisan ini dibuat, saya pun masih belajar develop dalam lingkungan php dan cassandra

I. Install Cassandra dan Thrift

  1. Download Cassandra http://cassandra.apache.org/download/ (yang digunakan dalam contoh ini versi 0.7.x)
  2. Download Thrift http://thrift.apache.org/download/ (yang digunakan dalam contoh ini versi 0.5.0)
  3. Install dependencies untuk thrift

    *Ubuntu:
    sudo apt-get install libboost-dev automake libtool flex bison pkg-config g++

    *RHEL/CentOS/Fedora:
    sudo yum install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel zlib-devel python-devel ruby-devel

    *openSUSE:
    sudo zypper install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel zlib-devel python-devel ruby-devel

  4. Extract file tarball thrift yang telah di download (thrift-0.5.x.tar.gz)
    ./configure
    make
  5. Build interface PHP dengan Cassandra
    ./compiler/cpp/thrift -gen php ../PATH-KE-CASSANDRA/interface/cassandra.thrift
  6. Copy file-file penting ke tempat yang penting
    sudo mkdir -p /usr/share/php/Thrift
    sudo cp -R gen-php/ /usr/share/php/Thrift/packages/
    sudo cp -R lib/php/src/* /usr/share/php/Thrift/

 

II. Membuat Extensi Tambahan Untuk PHP: thrift_protocol.so

  1. Pindah direktori ke PATH-KE-THRIFT/lib/php/src/ext/thrift_protocol
  2. Install dependencies untuk membuat PHP extensions:
    *Ubuntu:
    sudo apt-get install php5-dev
    *CentOS:
    sudo yum install php-devel
    *openSUSE:
    sudo zypper install php-devel
  3. Compile dan make extension php:
    phpize
    ./configure --enable-thrift_protocol
    make
  4. Copy extension .so ke direktori extensions php
    *Ubuntu:
    sudo cp modules/thrift_protocol.so /usr/lib/php5/20060613/
    *64-bit CentOS:
    sudo cp modules/thrift_protocol.so /usr/lib64/php/modules/
    *openSUSE:
    sudo cp modules/thrift_protocol.so /usr/lib/php5/extensions/
  5. Aktifkan extension tersebut di php.
    Buka dan edit file berikut:
    *Ubuntu:
    vim /etc/php5/conf.d/thrift_protocol.ini
    *CentOS:
    vim /etc/php.d/thrift_protocol.ini
    *openSUSE:
    vim /etc/php5/conf.d/thrift_protocol.ini

    Tambahkan line berikut:
    extension=thrift_protocol.so

  6. Cek apakah modul sudah di-load apache:
    php -i | grep -v "PWD" | grep "thrift_protocol"
  7. Restart Apache.
    *Ubuntu:
    sudo /etc/init.d/apache2 restart
    *CentOS:
    sudo /etc/init.d/httpd restart
    *openSUSE:
    sudo /etc/init.d/apache2 restart

 

III. Start Cassandra Server

  1. Pindah ke direktori Cassandra
  2. Install Sun Java runtime.
  3. JIka diperlukan beri permission khusus untuk Cassandra:
    WHOAMI=`whoami`
    sudo mkdir /var/log/cassandra/
    sudo chown $WHOAMI /var/log/cassandra/
    sudo mkdir /var/lib/cassandra
    sudo chown $WHOAMI /var/lib/cassandra/
  4. Start Cassandra:
    ./bin/cassandra -f
  5. Jika tak ada pesan error, bisa dipastikan Cassandra sudah berjalan dengan semestinya
  6. Tes koneksi ke server:
    ./bin/cassandra-cli -host localhost -port 9160
  7. Jika berhasil masuk ke shell cassandra, berarti koneksi sudah aktif dan anda dapat memulai men-deploy database melalui command line interface. Test dengan membuat Keyspace baru:

    # membuat keyspace baru dengan nama 'DatabaseKita'
    create keyspace DatabaseKita;

    # set DatabaseKita sebagai keyspace yang aktif
    use DatabaseKita;

    # membuat column family (CF) dengan nama Users
    create column family Users;

    # insert data baru (column baru) dengan key: abetobing, datanya: nama_lengkap, isi data: "Abe Tobing"
    set Users['abetobing']['nama_lengkap'] = 'Abe Tobing';

    # insert data tambahan ke abetobing, yaitu lokasi
    set Users['abetobing']['lokasi'] = 'Jakarta';
    # insert user baru bernama dengan key: 'mboi_coy', nama_lengkap: 'Boyke Dian', profesi: 'System Administrator'
    set Users['mboi_coy']['nama_lengkap'] = 'Boyke Dian';
    set Users['mboi_coy']['profesi'] = 'System Administrator';

    # ambil data user Abe Tobing, menggunakan key: abetobing
    get Users['abetobing'];

 

 

Sumber: