Hadoop merupakan framework open source untuk Big Data yang memungkinkan untuk melakukan komputasi terdistribusi
Hadoop Diciptakan di Yahoo oleh Doug Cutting dan Mike Cafarella pada tahun 2005
Tentunya kemunculan Hadoop dilatarbelakangi oleh para raksasa search engine untuk memproses datanya yang luar biasa besar seperti Google dan Yahoo
Seperti yang kita di artikel sebelumnya bahwa komputasi terdistribusi memudahkan dalam memproses data dalam ukuran besar diproses secara efisien dengan membagi-bagi ke dalam task yang lebih kecil untuk masing-masing mesin
Ada beberapa tantangan dalam pemrosesan Big Data yang dapat dihandel dengan baik oleh Hadoop
Saat ini Hadoop telah dikembangkan ke dalam 3 versi yaitu versi 1.x, 2.x dan 3.x
Perubahan Hadoop versi 1 ke versi 2 ada penambahan untuk cluster resource management yang sangat membantu dan membuat Hadoop menjadi ekosistem yang lebih besar
Ada 2 komponen utama dalam Hadoop yaitu HDFS sebagai data storage dan MapReduce sebagai engine data processing
Hadoop Distributed File System (HDFS)
HDFS adalah file sistem yang menyimpan data secara terdistribusi di Hadoop
HDFS mempunyai 2 komponen utama yaitu Namenode dan Datanode
Konsep Namenode dan Datanode adalah seperti Master dan Slave. Namenode sebagai master dan datanode sebagai slave
Namenode bertanggung jawab untuk menyimpan semua metadata sedangkan Datanode bertugas untuk menyimpan blok data
Jika diilustrasikan adalah Namenode sebagai manajer yang mengerti informasi tentang metadata beserta informasi dimana data direplika dan ditempatkan. Sedangkan Datanode sebagai worker yang bertugas untuk menyimpan data dalam blok
Data dalam HDFS akan dipecah-pecah menjadi lebih kecil yang disebut blok dan setiap blok mempunyai default ukuran yang sama
Secara default, ukuran blok di Hadoop versi 1 adalah 64 MB dan di versi 2 adalah 128 MB
Misalnya kita punya file dengan ukuran 400 MB maka akan dipecah menjadi 3 blok yaitu 128 MB, 128 MB dan 44 MB
Kurang lebih akan seperti ini jika diilustrasikan
kelebihan lainnya adalah setiap blok di Datanode akan direplikasi atau yang dikenal dengan istilah Fault tolerance. Fault tolerance adalah kondisi sistem tetap dapat berjalan walaupun ada kerusakan dalam salah satu komponennya
Misalnya salah satu Datanode rusak karena error atau bencana sehingga semua data hilang akan dengan mudah merecovery karena sudah terduplikasi di blok atau mesin lainnya
Ada beberapa keunggulan HDFS antara lain
Fault Tolerance | Setiap blok direplikasi di 3 mesin |
Space | Space yang mudah ditambahkan |
Scalability | Mudah dilakukan scaling |
Flexibility | Fleksibel untuk semua jenis data |
Perintah untuk operasi data di HDFS mirip dengan perintah di Linux seperti ls, mkdir, cat, cp, move dan lainnya
Berikut beberapa contoh perintah di HDFS
hdfs dfs –ls
hdfs dfs -mkdir <folder name>
hdfs dfs -copyFromLocal <local file path> <dest(present on hdfs)>
hdfs dfs -cat <path>
hdfs dfs -copyToLocal <<srcfile(on hdfs)> <local file dest>
hdfs dfs -cp <src(on hdfs)> <dest(on hdfs)>
hdfs dfs -mv <src(on hdfs)> <src(on hdfs)>
MapReduce
MapReduce adalah framework untuk melakukan pemrosesan data secara terdistribusi. Terdiri dari fungsi Map dan Reduce
Map bertugas untuk mendistribusikan tugas pemrosesan data antara komputer yang berbeda lalu mengurangi hasilnya dalam satu ringkasan yang disebut dengan Reduce
Ada beberapa tahapan dalam MapReduce yaitu splitting, mapping, shuffling dan reducing
splitting | Splitting data menjadi blok |
mapping | Setiap blok diproses untuk mendapatkan key-value |
shuffling | Pengumpulan Key yang sama |
reducing | Agregasi untuk seluruh pasangan key-value |
Berikut adalah contoh kasus MapReduce untuk mencari agregasi kata seperti yang sudah kita bahas di artikel sebelumnya
Kapan Menggunakan Hadoop?
Beberapa kondisi cocok menggunakan Hadoop seperti
- Melakukan processing dengan data yang besar seperti searching, log processing, data warehousing, data analytics
- Lebih cocok untuk read data
- Cocok untuk file berukuran besar
- Untuk batch processing
Sedangkan Hadoop kurang cocok digunakan untuk kondisi
- Low latency data
- Tidak cocok untuk write dan update data
- Banyak file dengan ukuran kecil
- Untuk stream processing