MapReduce adalah bagian dari Hadoop Framework, tool ini berupa aplikasi pemprogaman yang didesain untuk dapat melakukan pemrosesan data dengan jumlah yang sangat besar dengan cara membagi pemrosesan tersebut ke dalam cluster menggunakan paralelisasi dan distribusi otomatis dalam ekosistem Hadoop.
MapReduce terbagi dibagi 2 kata “Mapping”
dan “Reduce”, gambaran cara kerjanya kurang lebih macam ini :
Berdasarkan definisi diatas, MapReduce dapat dibagi menjadi
beberapa tahap:
1.
Pemecahan data (Splitting). Pada proses ini data
masukan yang diberikan oleh pengguna MapReduce (klien) akan dipecah menjadi
bagian-bagian yang lebih kecil. Pada kasus Hadoop MapReduce, dalam kondisi
ideal, data akan dipecah menjadi beberapa bongkahan berukuran maksimal 128MB.
2. Mapping. Mapping adalah salah satu tahap terpenting dari MapReduce. Pada fase Mapping, bongkahan data yang telah dipecah akan di proses untuk menghasilkan intermediary key-value pairs. Pada contoh wordcount (Gambar 1) diatas, data yang mengandung “Dear Bear River” akan diproses sehingga menghasilkan pasangan key-value Dear:1, Bear:1, dan River:1. Dalam fase Mapping, bisa jadi ada satu atau lebih mesin pekerja (worker) yang melakukan proses terhadap beberapa bongkahan data yang berbeda. Semakin banyak jumlah mesin atau tingkatan parallelisme yang digunakan, maka durasi pemrosesan seluruh data dapat berjalan jauh lebih cepat.
3.
Pengacakan atau (Shuffling) Fase mapping bisa
berjalan di satu atau banyak mesin. Akibatnya, pasangan key-value yang
dihasilkan oleh sebuah mapper bisa tersebar di berbagai mesin. Namun, jika
pengolahan yang ingin dilakukan adalah perhitungan dengan menggunakan key yang
sama, maka data dengan key yang sama harus berada pada mesin yang sama pada
fase reduce. Oleh karena itu, sebelum fase reduce, fase shuffling bertugas
untuk mengumpulkan satu atau lebih key yang berbeda disebuah mesin tertentu
agar aggregasi dapat dilakukan dengan mudah. Pada contoh diatas, seluruh kata
Bear yang dihasilkan fase mapping akan berada dalam sebuah mesin yang sama.
Begitu juga dengan kata-kata lain.
4.
Reducing. Fase reducing bertugas untuk melakukan
aggregasi terhadap seluruh pasangan intermediary key-value dengan key yang
sama. Pada gambar diatas, pasangan key-value Bear:1 dan Bear:1 akan diaggregasi
oleh reducer sehingga pada akhirnya reducer akan menghasilkan keluaran Bear:2
seperti pada contoh kasus wordcount.
Formats read supported by Hadoop :
- Basic file formats: Text format/CSV/JSON, Key-Value Format, Sequence format
- Format lain : Avro, Parquet, RC or Row-Columnar format, ORC or Optimized Row Columnar
Ok, next setelah kita paham dikit teori tentang MapReduce ini.. kita akan praktek implementasinya, Jalankan Cluster Hadoop yang sudah kita install kemarin hari !
1. Membuat contoh file text di server master
atau bisa menggunakan text lain yang berisi banyak kata, seperti berikut : https://www.gutenberg.org/files/5000/5000-8.txt
2. Masukan file text tersebut ke dalam HDFS
- $ hadoop fs -mkdir /testkata
- $ hadoop fs -put [file] /[folder-hdfs]
“/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar”
$ hadoop jar [alamat-aplikasi] wordcount /[alamat-file-input] [alamat-output]
Jika Proses selsei, lihat pada folder "hasil" akan terdapat dua file seperti gambar dibawah :
Hasil dari wordcount nya dapat dilihat pada file yang nama depannya part, pada kasus ini part-r-00000.
Kita dapat melakukan pengecekan pada isi file tersebut dengan perintah berikut :
$ hadoop
fs -cat /[alamat-file-hasil]
Pada kasus WordCount, Fungsi Map memisahkan setiap kata yang
terdapat dalam contents untuk menghasilkan pasangan key-value dengan key berupa
kata tertentu dengan value 1.
Fungsi Reduce akan menjumlahkan seluruh value yang dimiliki oleh sebuah key. Sehingga pada akhirnya klien bisa mendapatkan jumlah kemunculan setiap kata yang terdapat pada variabel contents .
Oiya, MapReduce tidak hanya bisa Wordcount.. tapi juga bisa melakukan hal berikut :
Mungkin kedepan nya kita bisa menggunakan MapReduce lebih bermanfaat lagi penggunaan nya untuk menganalisa Big Data...
Ok. Sekian tulisan kali ini.







