Anda di halaman 1dari 7

Map reduce

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)

tetapi bagaimana mengoptiamlkan skalabilitas dan toleransi kesalahan saat pengeksekusian


data pada aplikasi.
Desain dan striktur
Untuk memproses sebuah data raksasa, data itu harus dipotong-potong kemudian dibagibagikan 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. 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. Gambar dibwah ini merupakan salahs atu sturktur
mapreduce yanhg di terapkan google dimana mapreduce pada google bekerja adi atas Google
File Sytem (GFS).

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.

function reduce(String word, Iterator partialCounts):


// word: a word
// partialCounts: a list of aggregated partial counts
sum = 0
for each pc in partialCounts:
sum += pc
emit (word, sum)
Fungsi Reduce

Fungsi Reduce di atas digunakan untuk melakukan pengelompokkan kata sehingga di


hasilkan data seperti dibawah ini.

Contoh lain dengan skala data lebih besar dapat di lihat pada gambar di bawah ini.

Contoh Penggunaan MapReduce

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.

Count of URL Access Frequency

Fungsi map untuk memproses log dari web request dan output Hurl, 1i. Fungsi
reduce menambahkan secara bersamaan nilai untuk URL yang sama dan

memghasilkan hURL, total pair.


ReverseWeb-LinkGraph
Fungsi map mengeluarkan ouput berupa (target, source) pasang unruk setiap link
URL ke target yang di peroleh, pada halaman dengan nama source. Fungsi
reduce menghasilkana (target, list(source))

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

Anda mungkin juga menyukai