GFS: Menggotong-royongkan Ribuan Komputer ala Google


Dengan teknologi crawler-nya Google telah mampu mendownload seluruh web page yang ada di dunia maya Internet dan terus-menerus meng-update-nya. Lalu, dimana dan bagaimana Google bisa menyimpan dan mengolah file berukuran super besar ini? Apakah Google menyimpannya dalam Hard Disk Drive (HDD) yang super besar juga? Jawabannya, tentu tidak. Solusinya bukan HDD super besar tapi gotong-royong. Gotong-royong dapat membuat pekerjaan yang besar menjadi lebih ringan, dan budaya ini sudah biasa dilakukan bangsa kita sejak ratusan tahun yang lalu. Pertanyaannya, bagaimana komputer bisa bergotong-royong?

Dalam artikel "Big Data dan Rahasia Kejayaan Google" telah disebutkan bahwa Google menggunakan teknologi yang disebut Google File System (GFS), Google MapReduce dan Google Bigtable untuk mengolah dan memberdayakan Big Data. Kemudian MapReduce dibahas lebih detail pada artikel "Google MapReduce: Besar dan Powerful tapi tidak Ribet". Pada kesempatan ini kita akan berbincang tentang Google File System, sebuah teknologi yang bisa menggotong-royongkan ribuan komputer.

Segala sesuatu mulai dari definisi.
Google File System adalah salah satu jenis dari media penyimpanan data seperti halnya hard disk drive (HDD), flash disk, DVD-R dan sebagainya. Bedanya, GFS menyimpan data-nya secara terdistribusi pada komputer-komputer dalam suatu cluster. Lalu cluster itu apa? Cluster dalam konteks ini adalah network atau jaringan komputer yang terdiri atas ratusan atau bahkan ribuan komputer. Yang namanya network berarti komputer yang ada didalamnya sudah dalam kondisi saling berhubungan, bisa saling berkomunikasi, bisa saling tukar data. Berkat kemampuannya yang bisa menyimpan data secara terdistribusi ini GFS bisa menyimpan data super besar yang tidak bisa disimpan dalam suatu HDD paling besar sekalipun.

Struktur dan Unsur-unsur Dasar.
GFS memiliki tiga entitas / unsur utama, yaitu: Master Servers, Chunkservers, dan Clients. Master Servers adalah server central yang mengendalikan dan memonitor kondisi GFS secara keseluruhan. Chunkservers adalah bagian yang bertanggungjawab menyimpan dan membaca file ke/dari HDD tiap node (node: satu komputer yang berada dalam cluster GFS). Chunkservers yang jumlahnya banyak ini berada dibawah kendali Master Servers. Terakhir, Clients adalah aplikasi yang menggunakan GFS yang menyimpan dan membaca file ke/dari GFS (Gambar 1). Tiap chunk (blok data) akan direplikasi secara otomatis dan disimpan dalam tiga Chunkservers. Ini berguna sebagai cadangan jika terdapat Chunkservers yang rusak. Kemudian Master Servers akan mengatur distribusi chunks (block-block data) ke tiap Chunkservers sedemikian rupa sehingga terdistribusi secara merata. Tidak ada yang mendapat chunk berlebih, juga tidak ada yang mendapat terlalu sedikit.


Gambar 1. Tiga unsur utama Google File System

Pada saat membaca data, GFS akan memilih servers yang terdekat, sedangkan pada saat menulis/menyimpan data, GFS akan melakukannya dalam beberapa servers sekaligus. GFS tidak memfasilitasi penyimpanan / penulisan data secara bersamaan, melainkan dilakukan secara atomic. Artinya, selama data masih dalam proses penyimpanan / penulisan oleh suatu aplikasi, maka data tersebut beserta lokasinya dalam memory tidak akan bisa diakses oleh aplikasi lain sampai proses penyimpanan tersebut benar-benar selesai.

Karakteristik yang membuatnya unggul.
Salah satu kelebihan GFS adalah GFS dijalankan pada cluster yang terdiri atas komputer-komputer biasa yang relatif tidak mahal. Google tidak menjalankan GFS dengan menggunakan komputer-komputer handal dengan spesifikasi dan kualitas super melebihi komputer biasa yang beredar dipasaran. Oleh karena itu, kerusakan atau kegagalan pada suatu node (titik yang mengacu pada satu komputer pada suatu cluster) adalah hal yang lumrah terjadi dan sudah diprediksi sebelumnya. Untuk mengantisipasi hal ini, GFS didesain untuk tetap dapat  berjalan normal walaupun terjadi kegagalan dalam suatu node. Singkatnya, GFS itu tahan banting.

Selain tahan banting, GFS juga scalable. Artinya GFS bisa di-scale up dan di-scala out (maaf meminjam istirlah bahasa tetangga). Di-scale up artinya GFS bisa ditingkatkan kapasitasnya dengan meningkatkan spesifikasi komputer-komputer yang mengusungnya. Sedangkan di-scale out artinya GFS dapat diperbesar kapasitasnya dengan menambah jumlah komputer pada cluster tempat ia dijalankan. Kedua proses ini dapat dilakukan tanpa harus men-set up dari awal, tidak perlu setting ulang dan tak perlu melalukan pemindahan data dari sistem lama ke sistem baru yang telah di-upgrade. Beda halnya kalau kita menggunakan system konvensional. Pada saat akan mengganti atau mengupgrade kapasitas komputer, kita harus melakukan setting ulang. Proses pemindahan data dari system lama ke system yang baru juga merupakan hal yang mutlak.

Silakan dicoba.
Demikian pembahasan singkat tentang GFS yang merupakan media penyimpanan data secara terdistribusi dalam suatu cluster yang terdiri dari ratusan hingga ribuan komputer. Seperti halnya HDD, USB Flash Disk dan media penyimpanan data lainnya, GFS tidak bisa menghasilkan apa-apa bila tidak ada program yang mampu mengoperasikan dan memberdayakannya. Sebagai pasangannya, Google telah menciptakan MapReduce, yaitu software yang berjalan diatas GFS. Dengan menggunakan MapReduce-lah kita bisa memberdayakan GFS. Silakan simak artikel "MapReduce: besar dan powerful, tapi tidak Ribet" untuk penjelasan lebih rinci tentang MapReduce. Dalam artikel tersebut juga dijelaskan bagaimana cara menjalankan MapReduce dan GFS versi Open Source lansiran Apache, pada komputer berbasis Windows maupun Linux. Metode menjalankannya dapat dilakukan dengan hanya menggunakan satu PC Windows/Linux maupun dengan beberapa PC, dan disertai dengan contoh program.

Selamat Mencoba!

Referensi:
"Google を支える技術", Nishida Keisuke, WEB+DB PRESS 2008
"The Google File System", Sanjay Ghemawat et al, Google Inc. 2003

Komentar

Postingan populer dari blog ini

Pemilihan Presiden dan Wakil Presiden

Kerajaan Singasari

Pesawat Sederhana