APLIKASI PEMBACA GEMPA PADA HADOOP
Oleh :
Dedi Tiarno 105090607111037
Alex Sandro I. 105090600111053
S. johansyah I. 105090600111037
PROGRAM TEKNOLOGI INFORMASI DAN ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
MALANG
BAB I PENDAHULUAN
1.1.Latar Belakang
Hadoop adalah sebuah framework opensource untuk menuliskan dan menjalankan aplikasi terdistribusi yang memproses data dalam jumlah yang besar dan terdistribusi dalam suatu cluster komputer. Cluster dalam hal ini adalah sekumpulan sejumlah komputer yang terhubung dalam sebuah jaringan. Framework Hadoop terdiri dari dua buah komponen utama untuk menyelesaikan kedua permasalahan yang disebutkan pada paragraf sebelumnya, yaitu HDFS (Hadoop Distributed File System) dan MapReduce. HDFS adalah sebuah file system terdistribusi untuk menyimpan data dalam jumlah besar secara terdistribusi dalam suatu cluster komputer.
Gempa bumi adalah getaran atau guncangan yang terjadi di permukaan bumi akibat pelepasan energi dari dalam secara tiba-tiba yang menciptakan gelombang seismik. Gempa Bumi biasa disebabkan oleh pergerakan kerak Bumi (lempeng Bumi). Frekuensi suatu wilayah, mengacu pada jenis dan ukuran gempa Bumi yang di alami selama periode waktu. Gempa Bumi diukur dengan menggunakan alat Seismometer. Moment magnitudo adalah skala yang paling umum di mana gempa Bumi terjadi untuk seluruh dunia.
Sehubungan dengan hal diatas, kami menawarkan project pembuatan Aplikasi Pembaca Gempa Pada Hadoop yang dapat digunakkan untuk kalkulasi gempa tersebut.
1.2.Rumusan Masalah
Aplikasi di buat untuk mempercepat proses pengambilan data gempa pada berbagai region dengan lebih efisien,Aplikasi ini dibangun dengan :
Bahasa pemrograman java
Environment hadoop
1.3.Batasan Masalah
Adapun batasan masalah dari pembuatan aplikasi ini adalah :
Tidak memprediksi gempa susulan
1.4.Ruang Lingkup Proyek Sistem
Adapun ruang lingkup dari pembuatan aplikasi ini adalah :
Menganalisa tiap data gempa yang di inputkan
Mencari data gempa max pada tiap region
1.5.Manfaat Pengembangan Sistem
Adapun manfaat dari pembuatan aplikasi ini adalah :
Dapat melakukan kalkulasi gempa secara cepat
Dapat menangani big data
1.6.Tujuan Pengembangan Sistem
Adapun tujuan dari pembuatan aplikasi ini adalah :
Mempercepat proses kalkulasi data gempa
BAB II IMPLEMENTASI
2.1.Implementasi
Requirement Multinode Hadoop :
1. Dua operating System Linux Ubuntu 12.04 (master dan slave)
2. Hadoop
3. Java versi 6
Sebelum melakukan Instalasi pada masing-masing operating system konfigurasi terlebih dahulu masing-masing host pada master dan slave yang letaknya di diriktori /etc/hosts seperti dibawah ini:
192.168.0.2 Master 192.168.0.2 Slave
Hadoop membutuhkan aplikasi Java, karena java tidak satu paket dengan Ubuntu maka agar hadoop bisa dijalankan di Ubuntu harus di install dahulu paket java di Ubuntu dengan perintah.
# Add the Ferramosca Roberto's repository to your apt repositories
# See https://launchpad.net/~ferramroberto/ #
$ sudo apt-get install python-software-properties $ sudo add-apt-repository ppa:ferramroberto/java
# Update the source list $ sudo apt-get update
# Install Sun Java 6 JDK
$ sudo apt-get install sun-java6-jdk
# Select Sun's Java as the default on your machine.
# See 'sudo update-alternatives --config java' for more information.
#
$ sudo update-java-alternatives -s java-6-sun
kemudian cek versi java untuk memastikan java telah terinstall di Ubuntu dengan perintah $ java-version kemudian untuk melihat paket java yang di install lihat di /usr/lib/jvm/
Menambahkan User sistem pada master dan slave yang nantinya dijadikan sebagai tempat kerja hadoop. Tambahkan Group hadoop dengan perintah $ addgroup
hadoop dan $ adduser –ingroup hadoouser hadoop Kemudian masukkan
Setelah itu Konfigurasi SSH pada master dan slave, Hadoop memerlukan protocol SSH untuk mengelola Node-nya, SSH di sini dibuat untuk mengakses host melalui remote jaringan dan ke user yang telah di buat. Pertama instalasi terlebih dahulu paket SSH Server di system dengan perintah
$ sudo apt-get install openssh-server
Selesaikan proses instalasi SSH, kemudian masuk ke dalam user hadoop untuk membuat konfigurasi SSH $ su –hadoopuser Perintah ini akan melakukan login ke dalam user hadoop dari user yang sebelumnya digunakan. kemudian buat sertifikasi SSH dari user hadoop dengan perintah $ ssh-keygen –t rsa –P “” Kemudian salin sertifikasi atau kunci yang baru saja di buat ke dalam authorized key
$ ssh-copy-id -i $HOME/.ssh/id_rsa.pub hadoopuser@slave
Kemudian langkah terakhir adalah mendaftarkan sertifikasi SSH ke dalam
server yang secara otomatis akan ditambahkan pada file known_hosts. Apabila sudah terdaftar pada file maka lakukan pengetesan koneksi dari master to master atau dari master to slave dengan perintah ssh master , ssh slave Apabila berhasil SSH akan masukkan kunci yang disebut RSA key dan akan diminta konfirmasi untuk mengijinkan atau tidak, Tuliskan “YES” lalu ENTER untuk melanjutkan prosesnya.
Kemudian Nonaktifkan IPV6 pada master dan slave karena hadoop tidak memerlukan Ipv6. Alasan lain hadoop tidak memerlukan IPV6 dikarenakan hadoop menggunakan IPV4 yaitu 0.0.0.0 dan jika IPV6 tidak di nonaktifkan di kawatirkan akan mengganggu system hadoop. Untuk mematikan IPV6 masuk ke diriktori /etc/sysctl.conf kemudian tambahkan baris
# disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1
kemudian reboot masing masing hosts agar konfigurasi diatas dapat menimbulkan efek, setelah itu cek ipv6 dengan perintah seperti dibawah ini
$ cat /proc/sys/net/ipv6/conf/all/disable_ipv6
Jika keluar nilai 0 maka IPV6 masih hidup maka coba ulangi langkah-langkah di atas namun jika keluar nilai 1 maka IPV6 sudah mati.
Kemudian Install hadoop di master dan slave, sebelum melakukan instalasi download terlebih dahulu hadoop, versi hadoop yang digunakan dalam percobaan ini adalah hadoop 1.03. Masuk ke direktori /usr/local untuk menginstall hadoop. Setelah download selesai extrak file hadoop dan ubah nama dan permission agar bisa di akses oleh user yang di buat yaitu user hadoopuser, untuk perintahnya seperti dibawah ini.
$ cd /usr/local
$ sudochown -R hduser:hadoophadoop
Ada beberapa hal yang harus dikonfigurasi dalam hadoop salah satunya adalah hadoop-env.sh yang tujuannya menentukan letak file java yang telah di instalasi. Buka file di direktori /usr/local/hadoop/conf/hadoop-env.sh
# The java implementation to use. Required. exportJAVA_HOME=/usr/lib/jvm/java-6-sun Konfigurasi Master
Konfigurasi conf/master untuk mendefinisikan namenode dan Jobtracker yang akan selalu bin/start-dfs.sh and bin/start-mapred.sh hadoop. Update
conf/master dengan master (nama host yang di jadikan master).
Konfigurasi conf/slave berkas daftar host, satu per baris, di mana daemon slave Hadoop (DataNodes dan TaskTrackers) akan dijalankan. Master dan slave bertindak sebagai Hadoop slave karena untuk menyimpan dan mengolah data maka pada direktori conf/slave update dengan
master slave
atau sesuaikan dengan nama-nama host yang dijadikan node.
Konfigurasi Master dan Slave
Konfigurasi file conf/core-site.xml Seperti di bawah ini.
o <property>
o <name>fs.default.name</name>
o <value>hdfs://master:54310</value>
o <description>The name of the default file system. A
URI whose
o scheme and authority determine the FileSystem
implementation. The
o uri's scheme determines the config property
(fs.SCHEME.impl) naming
o theFileSystem implementation class. The uri's
authority is used to
o determine the host, port, etc. for a
filesystem.</description> o </property>
Konfigurasi file conf/mapred-site.xml Seperti di bawah ini.
o <property>
o <name>mapred.job.tracker</name> o <value>master:54311</value>
o <description>The host and port that the MapReduce
job tracker runs
o at. If "local", then jobs are run in-process as a single map
o </description> o </property>
Konfigurasi file conf/hdfs-site.xml dan sesuaikan jumlah node pada value seperti di bawah ini.
o <property>
o <name>dfs.replication</name> o <value>2</value>
o <description>Default block replication.
o The actual number of replications can be specified
when the file is created.
o The default is used if replication is not
specified in create time. o </description>
o </property>
Langkah awal untuk mulai menggunakan hadoop adalah melakukan format name node dari hadoop file system yang telah tertanam pada filesystem. Berikut format yang digunakan untuk melakukan format namenode cluster.
hduser@master:/usr/local/hadoop$ bin/hadoopnamenode –format
Tunggu beberapa saat hingga perintah berjalan sukses.
Menjalankan Multinode dengan perintah dfs.sh dan bin/start-mapred.sh kemudian hasil dari master
2.2. Keterangan Program Java Class app.java
package com.umermansoor;
import org.apache.hadoop.fs.Path;
public static void main(String[] args) throws Exception { if (args.length != 2) {
System.err.println("Usage: hadoopex <input path> <output path>"); System.exit(-1);
}
Job job = new Job();
job.setJarByClass(App.class);
job.setJobName("Earthquake Measurment");
FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1]));
job.setMapperClass(EarthquakeMapper.class); job.setReducerClass(EarthquakeReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(DoubleWritable.class);
System.exit(job.waitForCompletion(true) ? 0 : 1); }
}
Class EarthquakeMapper.java
package com.umermansoor;
import org.apache.hadoop.io.DoubleWritable;
* @author umermansoor */
public class EarthquakeMapper extends
Mapper<LongWritable, Text, Text, DoubleWritable> {
/**
* @param key - Input key - The line offset in the file - ignored. * @param value - Input Value - This is the line itself.
* @param context - Provides access to the OutputCollector and Reporter.
* @throws IOException
* @throws InterruptedException */
@Override
public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
double outputValue = Double.parseDouble(line[8]);
context.write(new Text(outputKey), new DoubleWritable(outputValue));
Class EarthquakeMapper ini digunakan untuk menerima input dari file yang digunakan kemudian memecahnya menjadi string kemudian mengestrak line11 dari data tersebut yang berupa nama region dan dijadikan sebagai key output dan mengestrak line 8 dari data yang berupa nilai magnitude dari data dan digunakan sebagai output value.
Class EarthquakeReducer.java
package com.umermansoor;
import org.apache.hadoop.io.DoubleWritable; import org.apache.hadoop.mapreduce.Reducer; import java.io.IOException;
import org.apache.hadoop.io.Text;
public class EarthquakeReducer extends
Reducer<Text, DoubleWritable, Text, DoubleWritable> {
/**
* The `Reducer` function. Iterates through all earthquake magnitudes for a
public void reduce(Text key, Iterable<DoubleWritable> values, Context context) throws IOException, InterruptedException {
context.write(key, new DoubleWritable(maxMagnitude)); }
}
region yang sama hingga menemukan nilai magnitude tertinggi dari suatu region yang di proses tersebut kemudian berpindah ke region lain dengan proses yang sama. Nam region sebagai output key dan nilai magnitude sebagai output value.
2.3. Pengujian Hadoop
Pengujian Multi node hadoop ini dilakukan pada data gempa yang nantinya akan dihasilkan gempa terbesar dari setiap region menggunakan metode mapreduce dengan java.
Pertama, buat terlebih dahulu direktori unutk menyimpan data gempa dengan perintah seperti di bawah ini.
$mkdir /tmp/input
Masukkan data gempa ke dalam diriktori yang telah di buat. Berikutnya dari file system lokal masukkan data ke dalam file system hadoop yaitu hdfs dengan cara menyalinnya dengan menjalankan perintah seperti di bawah ini.
$bin/hadoop dfs -copyFromLocal /tmp/input /user/hadoopuser/input
Perintah diatas akan menyalin format sistem standar Ubuntu menjadi format hadoop dengan menggunakan opsi dfs. Hasilnya dapat dilihat dengan cara dibawah ini:
$bin/hadoop dfs –ls
Sebelumnya program mapreduce dijadikan ke bentuk jar dan di letakkan di diriktori
/usc/local/hadoop dengan nama hasoopex-1.0-SNAPSHOT.jar . Perintah dengan membaca semua file pada folder input sebagai diriktori hdfs dan memprosesnya kemudian meletakkan hasilnya pada diriktori hdfs yaitu output.
$bin/hadoop jar hadoopex-1.0-SNAPSHOT.jar com.umermansoor.App /user/hadoopuser/input /user/hadoopuser/output
Tunggu hingga proses sampai selesai dan lihat apakah terjadi eror, dan untuk memastikan kesalahan jalankan perintah seperti di bawah ini.
Pada hasil output akan terlihat dua buat diriktori input dan output seperti di bawah ini. Lihat kembali isi dari folder output akan terlihat seperti di bawah ini
$bin/hadoop dfs -ls output
u ntuk memeriksa file hasil proses dari hdfs, caranya menyalin file dari filesystem hdfs ke dalam file system lokal menggunakan perintah :
$bin/hadoop dfs -cat gutenberg-output /part-r-00000
untuk membaca file secara langsung tanpa harus melakukan copy dari filesystem lokal, perintah di bawah ini hanya akan melakukan copy file resultnya saja ke dalam file syatem lokal. Pertama buat folder untuk meletakkan file outputnya seperti di bawah ini.
$mkdir /tmp/eartquake-output
$bin/hadoop dfs -getmerge output /tmp/earthquake-output
untuk membaca file output yang dipindahkan ke dalam file system lokal dengan menggunakan perintah di bawah ini.
BAB III PENUTUP
3.1.Kesimpulan
DAFTAR PUSTAKA
https://github.com/umermansoor/hadoop-java-example
http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/