Kenalan dengan MapReduce, Hadoop dan AWS

Berhubung udah dari dulu saya penasaran tentang term MapReduce dan Hadoop dll. Saya memutuskan untuk baca buku dan bikin ulasan singkat di blog sebagai contekan saya sendiri jikalau besok2 ada interview pekerjaan yang nanyain tentang definisi term tersebut diatas. Hohohoho.

MapReduce adalah konsep pemrosesan data secara paralel. Adanya MapReduce berangkat dari asumsi bahwa data yang akan diolah saaaaaaangat banyak dan data ini memerlukan banyak waktu jika diproses hanya pada satu komputer. Dibutuhkan multiple komputer untuk mempersingkat waktu pemprosesan.

Salah satu contoh task yang bisa dikerjakan dengan konsep MapReduce adalah seperti statistik dari penjualan harian (misal: koran, etc.) dan user yang update status di Facebook di suatu negara dalam kurun waktu tertentu. Sesuai namanya, konsep dari MapReduce adalah Map and Reduce the tasks. Contohnya begini, semisal kita ingin tahu jumlah rata-rata user yang meng-update status di Facebook di wilayah Indonesia dalam kurun waktu 10 tahun.
1) Map : task tersebut di-break down menjadi misal 10 sub-task, dengan desktripsi masing masing sub-task untuk menghitung jumlah rata-rata user per tahun. Jadi, secara paralel, ada 10 sub-task yang berjalan bersama.
2) Reduce : setelah 10 sub-task selesai, hasil dari masing-masing sub-task di-aggregasi menjadi satu nilai sebagai summary dari 10-sub task tersebut. Proses ini dinamakan reduce.

Untuk mengimplementasikan konsep MapReduce, kita butuh framework yang mendukung distributed programming. Hadoop adalah framework yang dituliskan dalam bahasa Java yang sifatnya open source untuk memproses data dalam jumlah banyak dan mendistribusikannya pada multiple machines. Hadoop memiliki aplikasi yang memperbolehkan kita untuk running non-Java program yang dinamakan Hadoop Streaming. Melalui aplikasi ini, kita bisa running program yang mengimplemetasikan MapReduce yang ditulis dengan Python.

Biasanya yang pake MapReduce dan Hadoop ini kan para Developer. Developer juga butuh tempat untuk testing programnya apakah bisa berjalan dengan baik. Untuk menjalankan MapReduce secara real, pasti dibutuhkan infrastruktur komputer yang besar. Para developer yang tidak punya dukungan infrastruktur yang mendukung, bisa menggunakan jasa rental infrastruktur komputer secara banyak (massive infrastructur computing) yang disediakan oleh Amazon namanya Amazon Web Services (AWS). Di AWS, developer bisa membayar sewa berdasarkan berapa jam penggunaan.

Apa hubungannya dengan Machine Learning? Banyak algoritma machine learning yang bisa diimplementasikan dengan konsep MapReduce. Secara umum learning kan ada 2 jenis ya, supervised learning (classification) dan unsupervised larning (custering). Semisal, bagian manajerial ingin melihat trend sentiment user saat update status dalam 10 tahun terakhir ini. Nah, disini perlu dilakukan classification task pada data update status dari user. Algoritma yang digunakan bisa beragam mulai dari Naive Bayes hingga SVM. Namun, tidak semua algoritma tersebut bisa ditulis dengan mudah sebagai MapReduce task, dibutuhkan beberapa adjustment pada code-nya untuk bisa diaplikasikan dengan sebagai MapReduce task.

Sekian ulasan blog hari ini. Semoga besok bisa nulis lagi. Rencananya sih mo bikin ulasan tentang hal-hal techy gini tiap hari. Jangan muntah-muntah yaa para subscriber yang baca ringkasan saya.