NIM : 16.77.
0136
Nama : Jajang Nurjaman
Matakuliah : Big Data
Dosen : Dr. Rizal Fathoni A., M.Kom
Subject : Tugas Big Data - Percobaan Map Reduce Example : Word Count
OS Version : Windows 10 Sub System Ubuntu 16.04
Java : java-8-openjdk-amd64
Hadoop : hadoop-2.8.1
Source Code Class yang digunakan dalam percobaan ini adalah
sebagai berikut :
package org.apache.hadoop.examples;
import java.io.IOException;
import java.util.StringTokenizer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
public class WordCount {
public static class TokenizerMapper
extends Mapper{
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
public void map(Object key, Text value, Context context
) throws IOException, InterruptedException {
StringTokenizer itr = new StringTokenizer(value.toString());
while (itr.hasMoreTokens()) {
word.set(itr.nextToken());
context.write(word, one);
}
}
}
public static class IntSumReducer
extends Reducer {
private IntWritable result = new IntWritable();
public void reduce(Text key, Iterable values,
Context context
) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
}
result.set(sum);
context.write(key, result);
}
}
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
String[] otherArgs = new GenericOptionsParser(conf,
args).getRemainingArgs();
if (otherArgs.length < 2) {
System.err.println("Usage: wordcount [...] ");
System.exit(2);
}
Job job = Job.getInstance(conf, "word count");
job.setJarByClass(WordCount.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
for (int i = 0; i < otherArgs.length - 1; ++i) {
FileInputFormat.addInputPath(job, new Path(otherArgs[i]));
}
FileOutputFormat.setOutputPath(job,
new Path(otherArgs[otherArgs.length - 1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
Class diatas merupakan contoh bawaan ketika melakukan instalasi Hadoop. Letak contoh tersebut
pada folder /usr/local/hadoop/share/hadoop/mapreduce/ hadoop-mapreduce-
examples-2.8.1.jar percobaan yang dilakukan adalah pada class WordCount.java
Class WordCount.java digunakan untuk menghitung jumlah kata yang ada pda suatu file untuk
melakukan percobaan dilakukan beberapa langkah yaitu :
1. Buat file sebuah folder dengan cara :
jajangtea@DESKTOP-CDURNQ9:~$ mkdir jumlahKata
2. Masuk kedalam folder jumlahKata dengan perintah :
cd jumlahKata
3. Didalam folder tersebut Buat file dengan nama oop.txt :
jajangtea@DESKTOP-CDURNQ9:~/jumlahKata $
jajangtea@DESKTOP-CDURNQ9:~/jumlahKata $mkdir input
jajangtea@DESKTOP-CDURNQ9:~/jumlahKata/input$cd input
jajangtea@DESKTOP-CDURNQ9:~/jumlahKata/input$sudo nano oop.txt
kemudian diisi kalimat sebagai berikut :
4. Setelah itu Ctrl+X kemudian jalankan perintah :
Keterangan gambar diatas adalah :
jajangtea@DESKTOP-CDURNQ9:~$ /usr/local/hadoop/bin/hadoop
jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-
mapreduce-examples-2.8.1.jar adalah letak dari example library yang telah
tersedia di Hadoop
a adalah salah satu class yang ada pada hadoop-mapreduce-examples-2.8.1.jar
/home/jajangtea/jumlahKata/input/oop.txt adalah letak file yang akan
dieksekusi
/home/jajangtea/jumlahKata/output adalah letak output setelah mapreduce
wordcount dijalankan
Setelah ditekan enter maka akan muncul seperti ini pada baris akhir yang menyatakan fungsi
mapreduce berhasil dijalankan
Untuk mengecek hasil jalankan perintah berikut :
jajangtea@DESKTOP-CDURNQ9:~$/usr/local/hadoop/bin/hadoop dfs -
cat /home/jajangtea/jumlahKata/output/*
Output directory pada nautilus explorer :