Selama lima tahun terakhir, para teknisi di Google telah menerapkan ratusan perhitungan
dengan tujuan untuk memproses sejumlah besar data mentah, seperti crawled dokumen,
permintaan web log, dll dari berbagai jenis data yang di didapat. Kebanyakan perhitungan
tersebut secara konseptual sederhana. Namun, input data biasanya besar dan perhitungan
harus didistribusikan di ratusan atau ribuan mesin sehingga komputasi dapat di selesaikan
dengan waktu yang tidak terlalu lama. Permasalahan yang muncul adalah bagaiamana
memparalelkan perhitungan, pendistribusian data, menangani pengakaburan komputasi
dengan kode begitu kompleks. MapReduce muncu sebagai solusi dalam dalam megelola
perintah dan tugas yang bersifat parallel. Diaman framework MapReduce akan mengurus
transportasi data/kode, node koordinas dan lain-lain.
Definisi
MapReduce adalah model pemrograman rilisan Google yang ditujukan untuk memproses
data berukuran raksasa secara terdistribusi dan paralel dalam cluster yang terdiri atas ribuan
komputer. Dalam memproses data, secara garis besar MapReduce dapat dibagi dalam dua
proses yaitu proses Map dan proses Reduce. Kedua jenis proses ini didistribusikan atau
dibagi-bagikan ke setiap komputer dalam suatu cluster (kelompok komputer yang salih
terhubung) dan berjalan secara paralel tanpa saling bergantung satu dengan yang lainnya.
Proses Map bertugas untuk mengumpulkan informasi dari potongan-potongan data yang
terdistribusi dalam tiap komputer dalam cluster. Hasilnya diserahkan kepada proses Reduce
untuk diproses lebih lanjut. Hasil proses Reduce merupakan hasil akhir yang dikirim ke
pengguna. 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.
Map-Reduce adalah salah satu konsep teknis yang sangat penting di dalam
teknologi cloud terutama karena dapat diterapkannya dalam lingkungan distributed
computing. Model mapreduce ini terinspirasi dari fungsi map dan reduce yang umum
digunakan dalam pemrograman fungsional. meskipun tujuan MapReduce tidak sama dengan
fungsi map dan reduce yang terdapat pada fungsi-funsi pada umumnya. Kontribusi utama
dari framework mapreduce tidak hanya sekdar pemetaan (map) dan pengelompokan (reduce)
Struktur mapreduce.
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. Dengan kata lain,
tiap Value yang memiliki Key yang sama akan digabungkan dalam satu kelompok. Fungsi
Reduce juga menghasilkan output berupa pasangan Key/Value.
Key/value intermediate hasil fungsi map di masukkan kedalam fungsi reduce sehingga
menghasilkan volme baru untuk setiap key.
Contoh Program MapReduce
Seabagai contoh, akan membuat program MapReduce untuk menghitung jumlah tiap kata
dalam beberapa file teks yang berukuran besar. Dalam program ini, fungsi Map dan fungsi
Reduce dapat didefinisikan sebagai berikut:
function map(String name, String document):
// name: document name
// document: document contents
for each word w in document:
emit (w, 1)
Fungsi Map
Fungsi Map di atas adalah memecah sekumpulan kalimat menjadi kata, seperti pada contoh di
bawah:
Dimana fichero merupakan nama dokumen dan text to pass to wc merupakan kalimat
yang di MapReduce.
Selenjutnya hasil mapping di group kedalam beberapa group, proses bisa di sebut proses
intermediate, dimana pengelompok data disasarka pada kata kunci yaitu masing masing kata.
Contoh lain dengan skala data lebih besar dapat di lihat pada gambar di bawah ini.
Distributed Grep
Fungsi map mengeluarkan garis jika cocok dengan pola yang disediakan. Fungsi
reduce sebagai fungsi identitas yang hanya menyalin data dari intermediat ke output.
Fungsi map untuk memproses log dari web request dan output Hurl, 1i. Fungsi
reduce menambahkan secara bersamaan nilai untuk URL yang sama dan
Keuntungan MapReduce
Keuntungan dari MapReduce ini adalah proses map and reduce dijalankan secara
terdistribusi. Dalam setiap proses mapping bersifat independen sehingga proses dapat
dijalankan secara simultan dan paralel. Demikian pula dengan proses reducer dapat dilakukan
secara paralel diwaktu yang sama, selama output dari operasi mapping mengirimkan key
value yang sesuai dengan proses reducernya. Proses MapReduce ini dapat diaplikasikan di
cluster server yang jumlahnya sangat banyak sehingga dapat mengolah data dalam jumlah
petabyte hanya dalam waktu beberapa jam.
Kekurangan MapReduce
1.
Map reduce hanya bisa berjalan secara serial untuk mengolah data. Artinya tidak bisa
dilakukan pemrosesan data secara paralel. Hal ini sangat terasa dengan Hadoop versi 1.X.
Untuk Hadoop versi 2.X sudah ada teknologi baru yang ditambahkan yaitu YARN. lebih
lengkap akan dibahas di post lainnya.
2.
Map Reduce hanya bisa berjalan dalam batch atau secara periodik dan tidak bisa terus
menerus secara realtime. Hal ini membuat Map Reduce tidak bisa mengolah data dalam
bentuk streaming tanpa henti seperti misalnya tweet dari twitter.
3.
Latency adalah keterlambatan data untuk diambil dari HDFS, dengan menggunakan
Map Reduce, ke level aplikasi misalnya web app. Bagi yang sudah pernah menjalankan
map reduce di Hadoop akan merasakan adanya kelambatan dalam mengolah data.
Kelambatan ini selain karena sifat map reduce yang berdasarkan batch, juga karena
ukuran data yang relatif sangat besar.
HADOOP FRAMEWORK
Dibuat oleh Doug Cutting dan nama hadoop ini berasal dari boneka gajah milik
anaknya. Asal muasalnya hadoop ini adalah sub project dari Nutch yang digunakan untuk
Search Engine. Hadoop bersifat open source dan berada dibawah bendera Apache Software
Foundation.
Hadoop merupakan framework software berbasis Java dan open source yang
berfungsi untuk mengolah data yang memiliki ukuran yang besar secara terdistribusi dan
berjalan diatas cluster yang terdiri dari beberapa komputer yang saling terhubung (parallel
computing). Secara kasar, Hadoop merupakan salah satu implementasi dari MapReduce.
Hadoop dapat mengolah data dalam jumlah yang sangat besar hingga petabyte (1 petabyte =
10245 bytes) dan dijalankan di atas ratusan bahkan ribuan komputer. Hadoop dibuat oleh
Doug Cutting yang pada asalnya Hadoop ini adalah sub project dari Nutch yang digunakan
untuk search engine. Hadoop bersifat open source dan berada di bawah bendera Apache
Software Foundation.
Arsitektur Hadoop
Hadoop terdiri dari common Hadoop yang berguna dalam menyediakan akses ke
dalam file system yang didukung oleh Hadoop. Common Hadoop ini berisi paket yang
diperlukan oleh JAR file, skrip yang dibutuhkan untuk memulai Hadoop dan dokumentasi
pekerjaan yang telah dilakukan oleh Hadoop.
Bedasarkan inti dari Hadoop adalah terdiri dari:
1. Hadoop Distributed File System (HDFS) Untuk data yang terdistribusi.
2. MapReduce Framework untuk aplikasi dan programming yang terdistribusi.
Gambar 2.1 Inti Hadoop (a) komponen HDFS (b) komponen MapReduce
Gambar 2.1 menggambarkan bagian inti Hadoop yang terdiri dari HDFS dan MapReduce.
Pada Gambar 2.1 (a) menggambarkan komponen dari HDFS yang terdiri dari NameNode,
DataNode, dan Secondary NameNode dan Gambar 2.1 (b) menggambarkan komponen dari
MapReduce yang terdiri dari JobTracker dan TaskTracker.
Sebuah cluster kecil pada Hadoop dapat terdiri dari satu master node dan beberapa
slave node. Master node ini terdiri dari NameNode dan JobTracker, sedangkan slave node
terdiri dari DataNode dan TaskTracker. Hadoop membutuhkan JRE 1.6 atau JRE dengan versi
yang lebih tinggi. Dalam menjalankan dan menghentikan sistem pada Hadoop dibutuhkan ssh
yang harus dibentuk antar node pada sebuah cluster