Friday, February 22, 2013

HDFS: Berawal dari Google untuk Big Data


Segala sesuatu mulai dari definisi
HDFS adalah singkatan dari Hadoop Distributed File System. Kalau diterjemahkan mentah-mentah, maka HDFS adalah Sistem File Terdistribusi Hadoop. Hadoop adalah salah satu proyek open source milik Apache. Jadi HDFS adalah sistem file terdistribusi yang dikembangkan oleh Apache dalam proyeknya yang bernama Hadoop. Apache mengembangkan HDFS berdasarkan konsep dari Google File System (detailnya simak: GoogleFile System: Menggotong-royongkan Ribuan Komputer ala Google). Oleh karena itu, HDFS sangat mirip dengan Google File System baik ditinjau dari konsep logikanya, struktur fisik, maupun cara kerjanya. Lalu, sistem file terdistribusi itu apa? Sederhananya, distributed file system (sistem file terdistribusi) adalah file system yang menyimpan data tidak dalam satu hard disk drive (HDD) atau media penyimpanan lainnya, tetapi data dipecah-pecah dan disimpan tersebar dalam suatu cluster yang terdiri atas beberapa komputer, bisa hanya 2 komputer, puluhan bahkan hingga ribuan komputer.


Sebagai distributed file system, HDFS berguna untuk menangani data berukuran raksasa yang disimpan tersebar dalam cluster-nya (disebut Hadoop cluster). Terus, data berukuran raksasa itu sebesar apa? Tepatnya, tidak ada definisi yang baku. Namun demikian, kita dapat mengambil Hadoop cluster yang dijalankan Yahoo! sebagai contoh (Gambar 1. Hadoop cluster di Yahoo!). Yahoo! memiliki Hadoop cluster yang terdiri atas 3500 komputer dan menangani data sebesar 25 petabytes (1 petabyte = 1000 terabytes, 1 terabyte = 1000 gigabytes). Data sebesar ini dapat digolongkan sebagai data berukuran raksasa dan secara volume sudah dapat dikategorikan sebagai Big Data (detailnya simak: Big Data dan Rahasia Kejayaan Google).


Gambar 1. Hadoop cluster di Yahoo!

Model Data dan Struktur HDFS
HDFS menyimpan suatu data dengan cara membelahnya menjadi potongan-potongan data yang berukuran 64 MB, dan potongan-potongan data ini kemudian disimpan tersebar dalam komputer-komputer yang membentuk clusternya. Potongan-potongan data tersebut dalam HDFS disebut block, dan ukurannya tidak terpaku harus 64 MB. Ukuran block dapat diatur sesuai kebutuhan dan selera.
Walaupun data disimpan secara tersebar, dari kacamata client / pengguna, data tetap terlihat seperti halnya kita mengakses file pada satu komputer. File yang secara fisik disimpan tersebar dalam banyak komputer itu pun dapat diperlakukan layaknya memperlakukan file dalam satu komputer (Gambar 2).


Gambar 2. Mengakses data pada HDFS seperti halnya mengakses data pada satu PC.

Sebagai distributed file system, HDFS memiliki komponen-komponen utama berupa NameNode dan DataNode. NameNode adalah sebuah komputer yang bertindak sebagai master, sedangkan DataNode adalah komputer-komputer dalam Hadoop Cluster yang bertugas sebagai slaves atau anak buah. NameNode bertanggungjawab menyimpan informasi tentang penempatan block-block data dalam Hadoop Cluster. Ia bertanggungjawab mengorganisir dan mengontrol block-block data yang disimpan tersebar dalam komputer-komputer yang menyusun Hadoop Cluster. Sedangkan DataNode bertugas menyimpan block-block data yang dialamatkan kepadanya, dan secara berkala melaporkan kondisinya kepada NameNode. Laporan berkala DataNode kepada NameNode ini disebut Heartbeat. Berdasarkan Heartbeat ini NameNode dapat mengetahui dan menguasai kondisi cluster secara keseluruhan. Sebagai balasan atas Heartbeat dari DataNode, NameNode akan mengirimkan perintah kepada DataNode. Jadi, dalam HDFS, NameNode adalah boss yang mengatur dan mengendalikan atau me-manage Hadoop Cluster. Sedangkan, DataNode adalah pekerja atau karyawan yang bertugas menyimpan data dan melaksanakan perintah dari NameNode.

Prosedur Menyimpan dan Membaca Data dalam HDFS
Untuk menyimpan data ke dalam HDFS, kita harus memiliki satu komputer yang sudah terhubung dengan Hadoop Cluster. Komputer ini disebut sebagai Client. Cukup dengan mengetikkan kata-kata perintah pada Command Prompt komputer client, maka file akan ditransfer ke Hadoop cluster dan disimpan tersebar dalam komputer-komputer yang ditugaskan sebagai DataNode. Secara detailnya, pada saat kita mengeksekusi perintah penyimpanan, komputer client akan berkomunikasi dengan NameNode untuk memberitahu bahwa ada file yang hendak disimpan di HDFS dan menanyakan lokasi DataNode yang bisa diakses untuk menyimpan data tersebut. Setelah mendapat daftar nama dan alamat DataNode yang tersedia, komputer client akan secara langsung mentransfer data ke DataNode - DataNode tersebut. Data yang akan ditransfer tersebut tentunya secara otomatis sudah dibelah menjadi block-block data yang berukuran 64 MB atau sesuai setting. Block-block atau kepingan-kepingan data inilah yang disimpan oleh tiap DataNode. Kemudian, setelah mendapat kepingan data dan menyimpannya, tiap DataNode akan mengirimkan laporan kepada NameNode bahwa data sudah diterima dan disimpan normal (Gambar 3).


Gambar 3. Menyimpan data ke dalam HDFS

Sedangkan untuk membaca data, prosedurnya mirip dengan prosedur menyimpan data. Cukup dengan mengeksekusi kata-kata perintah pada Command Prompt komputer client, maka data dalam HDFS akan ditampilkan pada display komputer client. Detailnya adalah sebagai berikut. Pada saat kita mengeksekusi perintah membaca data, komputer client akan berkomunikasi dengan NameNode menanyakan nama dan alamat DataNode yang harus diakses untuk mendapatkan data yang diinginkan. Setelah mendapat informasi tersebut, komputer client akan secara langsung mengakses DataNode yang bersangkutan untuk mendapatkan data yang diinginkan. Kemudian data akan ditampilkan pada display komputer client, atau sesuai perintah pengguna(Gambar 4).


Gambar 4. Membaca data yang tersimpan dalam HDFS

Penutup
Demikian ulasan singkat tentang HDFS, sebuah sistem penyimpanan data terdistribusi yang memungkinkan kita untuk menyimpan data berukuran raksasa. HDFS dikembangkan berdasarkan konsep pada Google File System yang dirilis oleh Google Inc. HDFS mempunyai karakteristik sebagai sistem terdistribusi yang memiliki kapasitas berskala besar dan handal. Namun demikian, ia dikenal cukup sederhana, tidak ribet dan mudah dioperasikan. Untuk menginstal HDFS pun tidak susah. Silakan simak: "MenjalankanHadoop Mode Pseudo-Distributed" untuk menginstal HDFS hanya dalam satu komputer, atau silakan simak: "MenjalankanHadoop Mode Fully Distributed" untuk menginstal HDFS dalam beberapa komputer. Banyak perusahaan besar maupun menengah yang telah menggunakan Hadoop seperti halnya Yahoo!, IBM, Facebook, Twitter, Recruit Japan, Rakuten Japan, Amazon, dan NTT Docomo.