Pada tugas softskill ini akan menjelaskan mengenai Map Reduce dan NoSQL. NoSQL sendiri kurang lebih adalah sebuah memcache dari bagian database sederhana yang berisi key dan
value. Database ini bersifat struktur storage dimana sistem databasenya yang
berbeda dengan sistem database relasional. Nosql tidak membutuhkan skema table
dan menghindari operasi join dan berkembang secara horizontal. Selain itu NoSQL
merupakan suatu bahasan yang jauh dari arti kata yang dibaca. Tidak berarti
tanpa sql query. Melainkan bagaimana suatu sql query digunakan seminimal
mungkin dalam suatu program database. Dengan memanfaatkan teknologi NoSQL ini,
diharapkan mampu mengurangi beban server. Selain itu, hal ini juga memudahkan
programmer dalam membuat suatu program dan proses pengembangannya. Penjelasan
lebih mengenai NoSQL database akan dijelaskan pada sub bab dibawah ini.
Map Reduce danNoSQL (Not Only SQL)
Map
Reduce danNoSQL (Not Only SQL) adalah sebuah pemogramaan framework guna untuk
membantu user mengembangankan sebuah data yang ukuran besar dapat terdistribusi
satu sama lain. Map-Reduce adalah salah satu konsep teknis yang sangat penting
di dalam teknologi cloud terutama karena dapat diterapkannya dalam
lingkungan distributed computing. Dengan demikian akan menjamin skalabilitas
aplikasi kita.
Salah
satu contoh penerapan nyata map-reduce ini dalam suatu produk adalah yang
dilakukan Google. Dengan inspirasi dari functional programming map
dan reduce Google bisa menghasilkan filesystem distributed yang sangat scalable, Google
Big Table. Dan juga terinspirasi dari Google, pada ranah open source
terlihat percepatan pengembangan framework lainnya yang juga bersifat
terdistribusi dan menggunakan konsep yang sama, project open source tersebut
bernama Apache Hadoop.
NoSQL
adalah istilah untuk menyatakan berbagai hal yang didalamnya termasuk database
sederhana yang berisikan key dan value seperti Memcache, ataupun
yang lebih canggih yaitu non-database relational seperti MongoDB, Cassandra, CouchDB,
dan yang lainnya.
Wikipedia
menyatakan NoSQL adalah sistem menejemen database yang berbeda
dari sistem menejemen database relasional yang klasik dalam beberapa hal. NoSQL
mungkin tidak membutuhkan skema table dan umumnya menghindari operasi join dan
berkembang secara horisontal. Akademisi menyebut database seperti ini
sebagai structured storage, istilah yang didalamnya mencakup sistem
menejemen database relasional.
Desain dan
Struktur, MapReduce itu sederhana.
Dari definisinya, MapReduce mungkin terkesan sangat ribet. Untuk
memproses sebuah data raksasa, data itu harus dipotong-potong kemudian
dibagi-bagikan ke tiap komputer dalam suatu cluster. Lalu proses Map dan proses
Reduce pun harus dibagi-bagikan ke tiap komputer dan dijalankan secara paralel.
Terus hasil akhirnya juga disimpan secara terdistribusi. Benar-benar terkesan
merepotkan.
Beruntunglah, MapReduce telah didesain sangat sederhana alias
simple. Untuk menggunakan MapReduce, seorang programer cukup membuat dua
program yaitu program yang memuat kalkulasi atau prosedur yang akan dilakukan
oleh proses Map dan Reduce. Jadi tidak perlu pusing memikirkan bagaimana
memotong-motong data untuk dibagi-bagikan kepada tiap komputer, dan
memprosesnya secara paralel kemudian mengumpulkannya kembali. Semua proses ini
akan dikerjakan secara otomatis oleh MapReduce yang dijalankan diatas Google
File System (Gambar 1).
Gambar 1. Map
dan Reduce
Program yang memuat kalkulasi yang akan dilakukan dalam proses Map
disebut Fungsi Map, dan yang memuat kalkulasi yang akan dikerjakan oleh proses
Reduce disebut Fungsi Reduce. Jadi, seorang programmer yang akan menjalankan
MapReduce harus membuat program Fungsi Map dan Fungsi Reduce.
Fungsi Map bertugas untuk membaca input dalam bentuk pasangan
Key/Value, lalu menghasilkan output berupa pasangan Key/Value juga. Pasangan
Key/Value hasil fungsi Map ini disebut pasangan Key/Value intermediate.
Kemudian, fungsi Reduce akan membaca pasangan Key/Value intermediate hasil
fungsi Map, dan menggabungkan atau mengelompokkannya berdasarkan Key tersebut.
Lain katanya, tiap Value yang memiliki Key yang sama akan digabungkan dalam
satu kelompok. Fungsi Reduce juga menghasilkan output berupa pasangan
Key/Value.
Untuk memperdalam pemahaman, mari kita simak satu contoh. Taruhlah
kita akan membuat program MapReduce untuk menghitung jumlah tiap kata dalam
beberapa file teks yang berukuran besar (Gambar 2). Dalam program ini, fungsi
Map dan fungsi Reduce dapat didefinisikan sebagai berikut:
map(String key, String
value):
//key : nama file
teks.
//value: isi file
teks tersebut.
for each word W
in value:
emitIntermediate(W,"1");
reduce(String key,
Iterator values):
//key : sebuah
kata.
//values : daftar
yang berisi hasil hitungan.
int result = 0;
for each v in
values:
result+=ParseInt(v);
emit(AsString(result));
Hasil akhir dari program
ini adalah jumlah dari tiap kata yang terdapat dalam file teks yang dimasukkan
sebagai input program ini.
Gambar 2.
Menghitung jumlah tiap kata dalam suatu dokumen.
Menjalankan
Contoh Program MapReduce
Untuk lebih jelasnya lagi, kita bisa menjalankan langsung program
ini di PC kita sendiri. Tetapi, bukan dengan software MapReduce milik Google.
Sampai saat ini Google tidak pernah mendistribusikan software MapReduce
miliknya. Namun demikian, Apache telah merilis software open source yang
dikenal dengan nama Hadoop untuk mengebangkan dan menjalankan aplikasi
MapReduce. Secara garis besar Hadoop terdiri atas HDFS (Hadoop Distributed File
System) dan Hadoop MapReduce. HDFS adalah versi open source-nya GFS (Google
File System), dan Hadoop MapReduce adalah versi open source dari Google
MapReduce.
Ada tiga cara untuk menjalankan aplikasi MapReduce dengan
menggunakan Hadoop, yaitu:
1. Dengan menggunakan
Hadoop mode Standalone pada 1 PC Windows.
2. Dengan menggunakan
Hadoop mode Pseudo-Distributed pada 1 PC Linux.
3. Dengan menggunakan
Hadoop mode Terdistribusi Penuh pada beberapa PC Linux.
Cara yang paling mudah mungkin cara yang pertama, karena dapat
dilakukan pada satu PC Windows dan tidak memerlukan setting pada file
konfigurasi Hadoop.
Referensi:
“MapReduce: Simplified Data Processing on Large Clusters”, Jeffrey
Dean and Sanjay Ghemawat, Google Corp. 2004.