Tulisan ini merupakan kelanjutan dari tulisan sederhana tentang basis data graf sebelumnya. Kali ini saya akan menuliskan sedikit tentang memulai menggunakan Titan [1] yang merupakan basis data graf dengan kapabilitas penyimpanan dan pemrosesan data masif (web scale atau big data). Titan adalaha softwae bebas dengan lisensi Apache [2].
Titan sebenarnya terdiri atas 2 bagian:
Distribusi Titan
Titan bisa diperoleh dari repositori Titan [3]. Versi rilis terakhir adalah 0.3.1. Hasil download adalah sebagai berikut:
Mendownload distribusi ini saja tidak cukup, karena distribusi ini "hanya" menyediakan core dari Titan, tidak ada komponen dari software yang berfungsi sebagai native storage backend. Secara umum, penggunaan Titan meliputi aktivasi storage backend (baik secara lokal maupun cluster) kemudian mengkonfigurasi Titan untuk menggunakan storage backend tersebut.
Storage Backend
Titan menggunakan basis data lainnya sebagai "tempat" untuk menyimpan data. Software yang bisa digunakan untuk keperluan ini adalah:
1. Apache Cassandra [4]
2. Apache HBase [5]
3. Oracle BerkeleyDB [6]
Mempelajari Titan saja tidak cukup, pemahaman yang memadai tentang storage backend juga diperlukan. Titan adalah basis data untuk data yang masif sehingga storage backend-nya pun juga software basis data kelas berat. Tingkat kompleksitas dari storage backend bervariasi, tetapi Apache HBase barangkali merupakan storage backend yang paling kompleks.
Memulai Storage Backend
Storage backend yang akan digunakan disini adalah Apache Cassandra. Versi yang digunakan adalah versi terakhir saat tulisan ini ditulis: 1.2.6. Langkah untuk memulai Apache Cassandra sangat mudah dan pada dasarnya hanya meliputi konfigurasi PATH serta file konfigurasi cassandra.yaml. Tarball dari Apache Cassandra pada tulisan ini akan diekstrak di $HOME/software/apache-cassandra-1.2.6 (direktori ini akan dirujuk dengan variabel $CASSANDRA_HOME). Data akan disimpan di $HOME/db/cassandra. Konfigurasi:
$HOME/.bash_profile
cassandra.yaml
Ada banyak konfigurasi yang bisa diatur pada file ini [7], tetapi pada bagian ini hanya 4 saja yang akan saya ubah:
Catatan: direktori-direktori diatas dibuat dulu jika belum ada.
Setelah itu, untuk memulai Apache Cassandra, login ke shell baru, setelah itu:
Argumen -f digunakan untuk menampilkan hasil eksekusi di latar depan sehingga kita bisa melihat jika terjadi masalah. Hasilnya nanti akan banyak sekali, saya tampilkan bagian akhirnya saja:
Titan
Setelah men-donwload Titan, ekstrak hasil download tersebut di suatu direktori tertentu (penulis menempatkan di $HOME/software/titan, selanjutnya akan disebut $TITAN_HOME). Saya juga menempatkan variabel lingkungan PATH di .bash_profile sebagai berikut:
Titan mendukung penuh TinkerPop stack sehingga kita bisa menggunakan tools dari TinkerPop stack, baik untuk REPL (menggunakan Gremlin) maupun dalam source code. Contoh sesi REPL dari Gremlin adalah sebagai berikut:
Jika ingin membuat program yang memanfaatkan Titan dan storage backend-nya ini, pengetahuan yang diperlukan akan lebih kompleks dan memerlukan tulisan tersendiri. We'll talk about it later. Stay tune.
Proses Selanjutnya
Setelah berbagai setting ini, jika komputer mati (untuk server seharusnya tidak :-D), setiap kali login, kita sudah bisa langsung mengeksekusi Apache Cassandra, setelah itu mengaktifkan Titan (tidak perlu konfigurasi ribet lagi):
Hanya itu saja, kecuali anda ingin coding, tentu perlu langkah lain.
So, Enjoy big data!
Referensi
[1] http://titan.thinkaurelius.com
[2] http://www.apache.org/licenses/LICENSE-2.0.html
[3] http://s3.thinkaurelius.com/downloads/titan/titan-all-0.3.1.zip
[4] http://cassandra.apache.org
[5] http://hbase.apache.org
[6] http://www.oracle.com/technetwork/database/berkeleydb/overview/index-093405.html
[7] http://wiki.apache.org/cassandra/StorageConfiguration
Titan sebenarnya terdiri atas 2 bagian:
- Distribusi Titan
- Storage backend
Distribusi Titan
Titan bisa diperoleh dari repositori Titan [3]. Versi rilis terakhir adalah 0.3.1. Hasil download adalah sebagai berikut:
$ ls total 74744 drwxr-xr-x 2 bpdp bpdp 4096 Jul 11 06:57 . drwxr-xr-x 25 bpdp bpdp 4096 Jul 18 10:37 .. -rw-r--r-- 1 bpdp bpdp 76521205 May 14 22:48 titan-all-0.3.1.zip -rw-r--r-- 1 bpdp bpdp 64 Jun 24 12:43 url $ cat url http://s3.thinkaurelius.com/downloads/titan/titan-all-0.3.1.zip $
Mendownload distribusi ini saja tidak cukup, karena distribusi ini "hanya" menyediakan core dari Titan, tidak ada komponen dari software yang berfungsi sebagai native storage backend. Secara umum, penggunaan Titan meliputi aktivasi storage backend (baik secara lokal maupun cluster) kemudian mengkonfigurasi Titan untuk menggunakan storage backend tersebut.
Storage Backend
Titan menggunakan basis data lainnya sebagai "tempat" untuk menyimpan data. Software yang bisa digunakan untuk keperluan ini adalah:
1. Apache Cassandra [4]
2. Apache HBase [5]
3. Oracle BerkeleyDB [6]
Mempelajari Titan saja tidak cukup, pemahaman yang memadai tentang storage backend juga diperlukan. Titan adalah basis data untuk data yang masif sehingga storage backend-nya pun juga software basis data kelas berat. Tingkat kompleksitas dari storage backend bervariasi, tetapi Apache HBase barangkali merupakan storage backend yang paling kompleks.
Memulai Storage Backend
Storage backend yang akan digunakan disini adalah Apache Cassandra. Versi yang digunakan adalah versi terakhir saat tulisan ini ditulis: 1.2.6. Langkah untuk memulai Apache Cassandra sangat mudah dan pada dasarnya hanya meliputi konfigurasi PATH serta file konfigurasi cassandra.yaml. Tarball dari Apache Cassandra pada tulisan ini akan diekstrak di $HOME/software/apache-cassandra-1.2.6 (direktori ini akan dirujuk dengan variabel $CASSANDRA_HOME). Data akan disimpan di $HOME/db/cassandra. Konfigurasi:
$HOME/.bash_profile
... ... $CASSANDRA_HOME=$HOME/software/apache-cassandra-1.2.6 export PATH=$PATH:$CASSANDRA_HOME/bin ... ...
cassandra.yaml
Ada banyak konfigurasi yang bisa diatur pada file ini [7], tetapi pada bagian ini hanya 4 saja yang akan saya ubah:
cluster_name: 'KintamaniCluster' data_file_directories: - /home/bpdp/db/cassandra/data # commit log commitlog_directory: /home/bpdp/db/cassandra/commitlog saved_caches_directory: /home/bpdp/db/cassandra/saved_caches
Catatan: direktori-direktori diatas dibuat dulu jika belum ada.
Setelah itu, untuk memulai Apache Cassandra, login ke shell baru, setelah itu:
$ cassandra -f
Argumen -f digunakan untuk menampilkan hasil eksekusi di latar depan sehingga kita bisa melihat jika terjadi masalah. Hasilnya nanti akan banyak sekali, saya tampilkan bagian akhirnya saja:
... ... INFO 05:07:53,670 Node localhost/127.0.0.1 state jump to normal INFO 05:07:53,686 Startup completed! Now serving reads. INFO 05:07:53,948 Starting listening for CQL clients on localhost/127.0.0.1:9042... INFO 05:07:54,010 Binding thrift service to localhost/127.0.0.1:9160 INFO 05:07:54,083 Using TFramedTransport with a max frame size of 15728640 bytes. INFO 05:07:54,090 Using synchronous/threadpool thrift server on localhost : 9160 INFO 05:07:54,090 Listening for thrift clients... INFO 05:12:51,681 Compacting [SSTableReader(path='/home/bpdp/db/cassandra/data/system/schema_columnfamilies/system-schema_columnfamilies-ic-15-Data.db'), SSTableReader(path='/home/bpdp/db/cassandra/data/system/schema_columnfamilies/system-schema_columnfamilies-ic-13-Data.db'), SSTableReader(path='/home/bpdp/db/cassandra/data/system/schema_columnfamilies/system-schema_columnfamilies-ic-16-Data.db'), SSTableReader(path='/home/bpdp/db/cassandra/data/system/schema_columnfamilies/system-schema_columnfamilies-ic-14-Data.db')] INFO 05:12:52,233 Compacted 4 sstables to [/home/bpdp/db/cassandra/data/system/schema_columnfamilies/system-schema_columnfamilies-ic-17,]. 20,712 bytes to 6,933 (~33% of original) in 550ms = 0.012021MB/s. 10 total rows, 4 unique. Row merge counts were {1:2, 2:0, 3:0, 4:2, }
Titan
Setelah men-donwload Titan, ekstrak hasil download tersebut di suatu direktori tertentu (penulis menempatkan di $HOME/software/titan, selanjutnya akan disebut $TITAN_HOME). Saya juga menempatkan variabel lingkungan PATH di .bash_profile sebagai berikut:
... ... $TITAN_HOME=$HOME/software/titan export PATH=$PATH:$TITAN_HOME/bin ... ...
Titan mendukung penuh TinkerPop stack sehingga kita bisa menggunakan tools dari TinkerPop stack, baik untuk REPL (menggunakan Gremlin) maupun dalam source code. Contoh sesi REPL dari Gremlin adalah sebagai berikut:
$ gremlin.sh \,,,/ (o o) -----oOOo-(_)-oOOo----- gremlin> conf = new BaseConfiguration(); ==>org.apache.commons.configuration.BaseConfiguration@13015e8 gremlin> conf.setProperty("storage.backend","cassandra"); ==>null gremlin> conf.setProperty("storage.hostname","127.0.0.1"); ==>null gremlin> g = TitanFactory.open(conf); 13/07/20 06:29:02 INFO impl.ConnectionPoolMBeanManager: Registering mbean: com.netflix.MonitoredResources:type=ASTYANAX,name=ClusterTitanConnectionPool,ServiceType=connectionpool 13/07/20 06:29:02 INFO impl.CountingConnectionPoolMonitor: AddHost: 127.0.0.1 13/07/20 06:29:02 INFO impl.ConnectionPoolMBeanManager: Registering mbean: com.netflix.MonitoredResources:type=ASTYANAX,name=KeyspaceTitanConnectionPool,ServiceType=connectionpool 13/07/20 06:29:02 INFO impl.CountingConnectionPoolMonitor: AddHost: 127.0.0.1 ==>titangraph[cassandra:127.0.0.1] gremlin> bambang = g.addVertex(null); ==>v[360004] gremlin> domain = g.addVertex(null); ==>v[360008] gremlin> bambang.setProperty("name", "Bambang Purnomosidi"); ==>null gremlin> domain.setProperty("name", "Pragmatic Web"); ==>null gremlin> e = g.addEdge(null, bambang, domain, "researching"); ==>e[7ygD-1vEw-2F0LaTPQTs][360004-researching->360008] gremlin> print e.getVertex(Direction.OUT).getProperty("name") + "---" + e.getLabel() + "-->" + e.getVertex(Direction.IN).getProperty("name"); Bambang Purnomosidi---researching-->Pragmatic Web==>null gremlin>
Jika ingin membuat program yang memanfaatkan Titan dan storage backend-nya ini, pengetahuan yang diperlukan akan lebih kompleks dan memerlukan tulisan tersendiri. We'll talk about it later. Stay tune.
Proses Selanjutnya
Setelah berbagai setting ini, jika komputer mati (untuk server seharusnya tidak :-D), setiap kali login, kita sudah bisa langsung mengeksekusi Apache Cassandra, setelah itu mengaktifkan Titan (tidak perlu konfigurasi ribet lagi):
$ cassandra -f $ gremlin.sh
Hanya itu saja, kecuali anda ingin coding, tentu perlu langkah lain.
So, Enjoy big data!
Referensi
[1] http://titan.thinkaurelius.com
[2] http://www.apache.org/licenses/LICENSE-2.0.html
[3] http://s3.thinkaurelius.com/downloads/titan/titan-all-0.3.1.zip
[4] http://cassandra.apache.org
[5] http://hbase.apache.org
[6] http://www.oracle.com/technetwork/database/berkeleydb/overview/index-093405.html
[7] http://wiki.apache.org/cassandra/StorageConfiguration
Basis Data Graf: Titan dengan Apache Cassandra Sebagai Storage Backend