Monday, December 7, 2009

Hadoop


Hadoop adalah framework software berbasis Java dan opensource yang berfungsi untuk mengolah data yang sangat besar secara terdistribusi dan berjalan di atas cluster yang terdiri dari beberapa komputer yang saling terhubung. Hadoop dapat mengolah data dalam jumlah yang sangat besar hingga petabyte dan dijalankan di atas ribuan komputer. Terinspirasi dari whitepaper Google yang membahas tentang MapReduce dan Google File System .
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.
Inti dari hadoop adalah terdiri dari :
1. HDFS (Hadoop Distributed File System) - Data yang terdistribusi
2. MapReduce - Framework dari aplikasi yang terdistribusi


HDFS adalah filesystem yang berbasis Java, yang meyimpan file dalam jumlah besar dan disimpan secara terdistribusi didalam banyak komputer yang saling berhubungan (file dipecah dalam bentuk block sebesar 64MB - bisa diconfigure besarnya). Data direplikasi umumnya ke dalam 3 node, dua di rack yang sama dan satu di rack yang berbeda, hal ini bertujuan untuk menjaga realibility dari HDFS. Filesystem ini membutuhkan server induk yang dinamakan masternode, berfungsi untuk menyimpan metadata dari data yang ada didalam HDFS. Datanya sendiri disimpan didalam server-server yang dinamakan datanode yang dapat diakses dengan menggunakan protokol HTTP. Data nodes ini bisa saling berkomunikasi satu sama lain untuk menjaga konsistensi data dan memastikan proses replikasi data berjalan dengan baik.
Kelemahan dari HDFS ini adalah masternode masih bersifat Single Point of Failure sehingga apabila server masternode mati maka data akan hilang. Memang didalam HDFS ada yang dinamakan secondary namenode yang seringkali menimbulkan kesalahpahaman pengertian bahwa apabila primary namenode mati maka akan langsung digantikan oleh secondary namenode. Padahal secondary namenode ini hanya menyimpan informasi terbaru dari struktur direktori pada primary namenode. Salah satu jalan untuk mengantisipasi problem SPOF pada primary namenode adalah dengan membuat cloning dari server namenode ini di server yang berbeda, sehingga apabila server primary namenode mengalami masalah/mati dapat langsung digantikan oleh cloningnya.

MapReduce adalah framework software yang diperkenalkan oleh Google dan digunakan untuk mendukung distributed computing yang dijalankan di atas data yang sangat besar dan dijalankan secara simultan dibanyak komputer. Framework ini terinspirasi oleh konsep fungsi map dan reduce yang biasa digunakan di functional programming.
Proses "Map" :
masternode menerima input, kemudian input tersebut dipecah menjadi beberapa sub problem yang kemudian didistribusikan ke worker nodes. Worker nodes ini akan memproses sub problem yang diterimanya untuk kemudian apabila problem tersebut sudah diselesaikan, maka akan dikembalikan ke masternode.
Proses "Reduce" :
Masternode menerima jawaban dari semua sub problem dari banyak data nodes, menggabungkan jawaban-jawaban tersebut menjadi satu jawaban besar untuk mendapatkan penyelesaian dari permasalahan utama.
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.
Didalam hadoop, mapreduce engine ini terdiri dari satu jobtracker dan satu/banyak tasktracker. JobTracker adalah server penerima job dari client, sekaligus akan mendistribusikan jobs tersebut ke tasktracker yang akan mengerjakan sub job sesuai yang diperintahkan jobtracker. Strategi ini akan mendekatkan pengolahan data dengan datanya sendiri, sehingga ini akan sangat signifikan mempercepat proses pengolahan data.
HDFS filesystem tidak hanya bisa digunakan untuk map/reduce. Ada beberapa project lain yang related dengan hadoop yang dapat dijalankan diatas HDFS seperti HBase, Pig, Hive, dll.
Hadoop ditujukan sebagian besar adalah untuk mengolah data dalam jumlah besar secara cepat dan efisien. Prosesnya sendiri adalah dengan menggunakan batch processing dan belum ditujukan untuk realtime processing, meskipun sekarang banyak aplikasi yang berjalan diatas hadoop yang sudah memungkinkan proses mendekati realtime.

Penggunaan hadoop saat ini sudah semakin luas, diantaranya adalah :
Yahoo :
Terdiri dari 24.000 server di 17 cluster. Lebih dari 10 petabytes data user. Mengerjakan ratusan ribu jobs tiap bulannya. Digunakan untuk news, search dan mail.
New York Times :
Menggunakan hadoop untuk mengkonversi artikel NYTimes menjadi pdf dari tahun 1851 s/d 1922. Berjalan di atas 100 server Amazon EC2 selama 24 jam. Input data sebesar 4TB, output 1.5TB.
Facebook :
Digunakan untuk Data Mining dan Data Warehousing, Ad Hoc User Data Analysis, Summarize jumlah impression/clicks dari ads. Dijalankan di 600 server (Nov '08).

Saat ini implementasi dari hadoop tidak hanya hadoop core saja tetapi sudah meluas ke aplikasi yang berjalan di atas hadoop, seperti :
Pig :
Platform untuk menganalisa data dengan menggunakan high level language.
Digunakan secara intensif di Yahoo.
HBase :
Distributed Database seperti Google BigTable. Dikembangkan secara intensif di powerset.
Hive :
System yang digunakan untuk query dan manage data yang disimpan diatas MapReduce dan Hadoop, bahasanya sudah sangat mirip dengan SQL. Digunakan secara intensif di Facebook.

Roadmap hadoop masih sangat panjang dan karena berbasis opensource sehingga sangat terbuka kemungkinan untuk menerima kontribusi dari developer di seluruh dunia. Lebih lengkapnya bisa dilihat di http://hadoop.apache.org/.

source :http://hugid.org/pages/posts/tentang-hadoop8.php

No comments: