ANALISIS KINERJA FRAMEWORK BIG DATA PADA CLUSTER
TERVIRTUALISASI: HADOOP MAPREDUCE DAN APACHE SPARK
TUGAS AKHIR
Disusun dalam rangka memenuhi salah satu persyaratan
Untuk menyelesaikan Program Strata-1 Departemen Teknik Informatika
Fakultas Teknik Universitas Hasanuddin
Makassar
Disusun Oleh:
A. MUH. RYANTO
D42113311
DEPARTEMEN TEKNIK INFORMATIKA
FAKULTAS TEKNIK UNIVERSITAS HASANUDDIN
MAKASSAR
2017
i
KATA PENGANTAR
Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Esa, yang telah
memberikan rahmat dan karunia-Nya, sehingga penulis dapat menyelesaikan
laporan tugas akhir dengan judul “Analisis Kinerja Framework Big Data Pada
Cluster Tervirtualisasi: Hadoop MapReduce dan Apache Spark”. Laporan tugas
akhir ini merupakan salah satu syarat untuk memperoleh gelar Sarjana Strata Satu
(S1) pada Departemen Teknik Informatika Departemen Teknik Informatika
Fakultas Teknik Universitas Hasanuddin.
Dalam proses pembuatan laporan tugas akhir ini, penulis banyak mendapat
bimbingan, arahan, dan bantuan dari berbagai pihak sehingga penulis dapat
menyelesaikan laporan ini tepat pada waktunya. Oleh karena itu dengan segala
kerendahan hati, penulis mengucapkan rasa terima kasih sebesar-besarnya kepada:
1. Kedua orang tua penulis, H. Benhard A. Amiruddin, SE dan Hj.
Muhajirah, SE beserta keluarga atas segala doa, dukungan, semangat,
pengorbanan, dan kasih saying yang telah diberikan.
2. Bapak Amil Ahmad Ilham, ST, [Link], [Link] selaku Dosen Pembimbing I
yang telah memberikan bimbingan dan masukan yang sangat bermanfaat
dalam penyusunan laporan skripsi ini.
3. Bapak Dr-Eng. Muhammad Niswar, ST.,[Link] selaku Dosen
Pembimbing II yang telah memberikan bimbingan dan masukan yang
sangat bermanfaat dalam penyusunan laporan skripsi ini.
ii
4. Bapak Amil Ahmad Ilham, ST, [Link], [Link] selaku Ketua Departemen
Teknik Informatika Fakultas Teknik Universitas Hasanuddin.
5. Seluruh Dosen Departemen Teknik Informatika Fakultas Teknik
Universitas Hasanuddin.
6. Seluruh Staf Departemen Teknik Informatika Fakultas Teknik Universitas
Hasanuddin.
7. Teman-teman angkatan Teknik Informatika 2013 selaku rekan belajar sejak
dari awal hingga akhir masa perkuliahan dan untuk Dia yang selalu
menemani penulis dari awal hingga akhir penyusunan laporan skripsi ini.
8. Teman-teman seperjalanan Amplifier 2013 yang selalu bersama dalam suka
dan duka.
9. Para Dosen dan teman-teman Software Engineering and Information System
Laboratory Departemen Teknik Informatika Fakultas Teknik Universitas
Hasanuddin.
10. Serta seluruh pihak yang tak sempat kami sebutkan satu persatu yang telah
banyak meluangkan tenaga, waktu, dan pikiran selama penyusunan laporan
skripsi ini.
Akhirnya dengan segala kerendahan hati, penulis menyadari masih
banyak kesalahan dan kekurangan dalam penyusunan laporan skripsi ini
baik dari isi maupun cara penyajiannya. Oleh karena itu penulis
mengharapkan adanya saran dan kritik yang bersifat membangun demi
kesempurnaan laporan ini. Penulis berharap semoga laporan skripsi ini
iii
dapat memberikan manfaat bagi pembaca pada umumnya dan penulis
khususnya.
Makassar,29 November 2017
Penulis
iv
ABSTRAK
Big Data saat ini menjadi topik hangat bagi instansi dan peneliti di seluruh
dunia berkat munculnya teknologi, peralatan, dan saran komunikasi yang baru.
Jumlah data yang diproduksi kini makin meningkat setiap tahun, bahkan setiap
harinya. Sehingga, algoritma dan teknologi tradisional kini tidak efisien dalam
memproses, menganalisis, dan menyimpan data dalam jumlah yang sangat besar
ini. Meningkatnya penggunaan analisis big data membuat teknologi yang lebih
efisien sangat dibutuhkan untuk menyimpan dan mengolah data dalam ukuran
sangat besar. Hadoop MapReduce dan Apache Spark adalah dua framework
komputasi populer yang bersifat opensource untuk melakukan pemrosesan dan
analisis data yang sangat besar. Kedua framework direkomendasikan untuk berjalan
pada server fisik, tetapi dalam membangun cluster dengan server fisik
membutuhkan biaya yang tidak sedikit. Cluster fisik membutuhkan energi yang
tinggi dan kaku dalam pengelolaannya. Maka, teknologi virtualisasi menjadi solusi
dalam membangun cluster yang fleksibel dan rendah biaya.
Dalam penelitian ini, akan dibuat cluster Hadoop MapReduce dan Apache
Spark yang tervirtualisasi memanfaatkan hypervisor Proxmox Virtual Environment
lalu akan dilakukan analisis pada kinerja komputasi dan kinerja I/O cluster dari
kedua framework.
Hasil penelitian menunjukkan pada pengujian kinerja komputasi
menunjukkan Apache Spark lebih cepat 3-5 kali lipat pada single node cluster
tervirtualisasi dan lebih cepat 1-4 kali lipat pada multi node cluster tervirtualisasi
dibandingkan dengan kinerja komputasi Hadoop MapReduce. Serta pada pengujian
kinerja I/O cluster, throughput yang diberikan lebih besar ketika digunakan
bersama dengan Apache Spark.
Kata Kunci: virtualisasi; Hadoop MapReduce; Apache Spark;
v
DAFTAR ISI
HALAMAN PENGESAHAN ................................ Error! Bookmark not defined.
KATA PENGANTAR ............................................................................................ ii
ABSTRAK .............................................................................................................. v
DAFTAR ISI .......................................................................................................... vi
DAFTAR GAMBAR ............................................................................................. xi
DAFTAR TABEL ................................................................................................. xii
DAFTAR GRAFIK .............................................................................................. xiii
DAFTAR LAMPIRAN ........................................................................................ xiv
BAB I PENDAHULUAN ....................................................................................... 1
I.1 Latar Belakang.......................................................................................... 1
I.2 Rumusan Masalah .................................................................................... 2
I.3 Tujuan Penelitian ...................................................................................... 3
I.4 Manfaat Penelitian .................................................................................... 3
I.5 Batasan Masalah ....................................................................................... 3
I.6 Sistematika Penulisan ............................................................................... 4
BAB II LANDASAN TEORI ................................................................................. 6
II.1. Konsep Dasar Big Data ............................................................................ 6
II.1.1. Pengertian Big Data ...........................................................................6
II.1.2. Karakteristik Big Data........................................................................6
II.1.2.1 Volume....................................................................................... 6
vi
II.1.2.2 Velocity...................................................................................... 6
II.1.2.3 Variety ....................................................................................... 6
II.1.3. Tipe Data Big Data.............................................................................7
II.1.3.1 Data Terstruktur (Structured Data) ............................................ 7
II.1.3.2 Data Semi Terstruktur (Semi-structured Data) .......................... 7
II.1.3.3 Data Tidak Terstruktur (Unstructured Data) ............................. 8
II.2. Hadoop MapReduce ................................................................................. 8
II.2.1 Fitur Hadoop MapReduce ..................................................................8
II.2.2 Arsitektur Hadoop ..............................................................................9
II.2.3 HDFS (Hadoop Distributed File System) ........................................10
II.2.3.1 Fitur HDFS .............................................................................. 10
II.2.3.2 NameNode dan DataNode ....................................................... 12
II.2.3.3 Filesystem Namespace............................................................. 13
II.2.3.4 Data Replication ...................................................................... 14
II.2.3.5 Communications Protocol........................................................ 15
II.2.3.6 FS Shell .................................................................................... 15
II.2.4 MapReduce ......................................................................................15
II.2.4.1 Konsep MapReduce ................................................................. 15
II.2.4.2 Komponen MapReduce ........................................................... 17
II.2.5 YARN (Yet Another Resource Negotiator) .....................................18
II.3. Apache Spark.......................................................................................... 19
II.3.1 Komponen Apache Spark ................................................................20
II.3.1.1 Spark Core ............................................................................... 20
vii
II.3.1.2 Spark SQL................................................................................ 21
II.3.1.3 Spark Streaming....................................................................... 21
II.3.1.4 MLlib ....................................................................................... 22
II.3.1.5 GraphX..................................................................................... 22
II.3.1.6 Cluster Manager....................................................................... 22
II.3.2 Fitur Apache Spark ..........................................................................23
II.3.3 Arsitektur Apache Spark ..................................................................24
II.3.3.1 Driver ....................................................................................... 25
II.3.3.2 Executor ................................................................................... 26
II.3.4 SparkContext ....................................................................................27
II.3.5 Resilient Distributed Dataset (RDD) ...............................................27
II.4. Konsep Dasar Virtualisasi ...................................................................... 28
II.4.1. Pengertian Virtualisasi .....................................................................28
II.4.2. Virtual Machine ...............................................................................28
II.4.3. Hypervisor ........................................................................................29
II.4.4. KVM (Kernel-based Virtual Machine) ............................................31
II.5. Proxmox Virtual Environment (PVE) .................................................... 31
II.6. CentOS ................................................................................................... 32
II.7. Benchmarks ............................................................................................ 32
II.7.1 Wordcount ........................................................................................32
II.7.2 TestDFSIO .......................................................................................33
BAB III METODOLOGI PENELITIAN.............................................................. 34
III.1 Analisis Kebutuhan Sistem..................................................................... 34
viii
III.1.1 Spesifikasi Perangkat Keras .............................................................34
III.1.2 Spesifikasi Perangkat Lunak ............................................................35
III.2 Perancangan Sistem ................................................................................ 36
III.2.1 Gambaran Umum Sistem .................................................................36
III.2.2 Arsitektur Sistem..............................................................................37
III.2.2.1 Arsitektur Virtual Machine ...................................................... 37
III.2.2.2 Arsitektur Single Node Cluster ................................................ 37
III.2.2.3 Arsitektur Multi Node Cluster ................................................. 38
III.3 Skenario Pengujian ................................................................................. 38
III.3.1 Pengujian WordCount ......................................................................38
III.3.1.1 Diagram Alir Pengujian ........................................................... 40
III.3.1.2 Langkah Pengujian .................................................................. 40
III.3.2 Pengujian TestDFSIO ......................................................................42
III.3.2.1 Diagram Alir Pengujian ........................................................... 42
III.3.2.2 Langkah Pegujian .................................................................... 43
BAB IV HASIL PENELITIAN DAN PEMBAHASAN ...................................... 47
IV.1 Pengujian Wordcount ............................................................................. 47
IV.1.1 Hasil Pengujian ................................................................................47
IV.1.1.1 Single Node Cluster ................................................................. 47
IV.1.1.2 Multi Node Cluster .................................................................. 49
IV.1.2 Pembahasan ......................................................................................51
IV.2 Pengujian TestDFSIO ............................................................................. 52
IV.2.1 Hasil Pengujian ................................................................................52
ix
IV.2.1.1 Single Node Cluster ................................................................. 52
IV.2.1.2 Multi Node Cluster .................................................................. 53
IV.2.2 Pembahasan ......................................................................................54
BAB V PENUTUP ................................................................................................ 55
V.1. Kesimpulan ............................................................................................. 55
V.2. Saran ....................................................................................................... 55
DAFTAR PUSTAKA ........................................................................................... 57
LAMPIRAN .......................................................................................................... 60
x
DAFTAR GAMBAR
Gambar 1 Arsitektur Framework Hadoop............................................................. 10
Gambar 2 Arsitektur HDFS .................................................................................. 13
Gambar 3 Diagram Proses MapReduce ................................................................ 17
Gambar 4 Diagram Interaksi JobTracker dan TaskTracker .................................. 18
Gambar 5 Diagram Kerja YARN .......................................................................... 19
Gambar 6 Komponen-Komponen Apache Spark ................................................. 20
Gambar 7 Arsitektur Runtime Apache Spark ....................................................... 25
Gambar 8 Ilustrasi dari Virtual Machine .............................................................. 29
Gambar 9 Arsitektur Hypervisor Tipe 1 (Bare Metal Hypervisor) ....................... 30
Gambar 10 Arsitektur Hypervisor Tipe 2 ............................................................. 31
Gambar 11 Diagram Tahapan Program Wordcount ............................................. 33
Gambar 12 Arsitektur Virtual Machine yang akan digunakan ............................. 37
Gambar 13 Arsitektur Single Node Cluster .......................................................... 38
Gambar 14 Arsitektur Multi Node Cluster............................................................ 38
Gambar 15 Diagram Alir Pengujian WordCount.................................................. 40
Gambar 16 Diagram Alir Pengujian TestDFSIO .................................................. 43
xi
DAFTAR TABEL
Tabel 1 Spesifikasi Komputer Host ...................................................................... 34
Tabel 2 Konfigurasi Virtual Machine ................................................................... 36
Tabel 3 Data Uji pada Pengujian Wordcount ....................................................... 39
Tabel 4 Hasil Pengujian Wordcount pada Single Node Cluster untuk Ukuran Data
Lebih Kecil dibandingkan Ukuran Memori .......................................................... 47
Tabel 5 Hasil Pengujian Wordcount pada Single Node Cluster untuk Ukuran Data
Lebih Besar dibandingkan Ukuran Memori .......................................................... 48
Tabel 6 Hasil Pengujian Wordcount pada Multi Node Cluster untuk Ukuran Data
Lebih Kecil dibandingkan Ukuran Memori .......................................................... 49
Tabel 7 Hasil Pengujian Wordcount pada Multi Node Cluster untuk Ukuran Data
Lebih Besar dibandingkan Ukuran Memori .......................................................... 50
Tabel 8 Hasil Pengujian TestDFSIO pada Single Node Cluster ........................... 52
Tabel 9 Hasil Pengujian TestDFSIO pada Multi Node Cluster ............................ 53
xii
DAFTAR GRAFIK
Grafik 1 Hasil Pengujian Wordcount pada Single Node Cluster untuk Ukuran
Data Lebih Keci Dibandingkan Ukuran Memori .................................................. 48
Grafik 2 Hasil Pengujian Wordcount pada Single Node Cluster untuk Ukuran
Data Lebih Besar Dibandingkan Ukuran Memori ................................................ 49
Grafik 3 Hasil Pengujian Wordcount pada Multi Node Cluster untuk Ukuran Data
Lebih Keci Dibandingkan Ukuran Memori .......................................................... 50
Grafik 4 Hasil Pengujian Wordcount pada Multi Node Cluster untuk Ukuran Data
Lebih Besar Dibandingkan Ukuran Memori ......................................................... 51
Grafik 5 Hasil Pengujian TestDFSIO pada Single Node Cluster ......................... 53
Grafik 6 Hasil Pengujian TestDFSIO pada Multi Node Cluster ........................... 54
xiii
DAFTAR LAMPIRAN
Lampiran 1 Proses Instalasi Proxmox VE ............................................................ 60
Lampiran 2 Instalasi Java Development Kit ......................................................... 64
Lampiran 3 Instalasi Hadoop (Single Node dan Multi Node Cluster) .................. 66
Lampiran 4 Hasil Pengukuran Pengujian Wordcount ........................................... 75
Lampiran 5 Hasil Pengukuran Pengujian TestDFSIO .......................................... 79
xiv
BAB I
PENDAHULUAN
I.1 Latar Belakang
Dalam 20 tahun terakhir, jumlah data telah meningkat dalam skala
besar pada berbagai bidang. Menurut International Data Corporation (IDC)
pada tahun 2011, jumlah data yang dibuat diseluruh dunia berjumlah sekitar
1,8 zettabytes[1], pada 2013 meningkat menjadi 4,4 zettabytes dan diprediksi
meningkat sepuluh kali lipat menjadi 44 zettabytes pada 2020[2]. Fenomena
big data bukan hanya berbicara tentang kemampuan untuk menyimpan dan
mengelola data yang berukuran sangat besar dan bervariatif, tetapi juga
bagaimana untuk mengelola data tersebut.
Hadoop[3] MapReduce dan Apache Spark[4] adalah dua open source
framework komputasi cluster untuk analisis big data yang paling populer saat
ini[5]. MapReduce merupakan model pemrograman untuk analisis big data
yang paling populer dalam sepuluh tahun terakhir[6]. Sedangkan, Apache
Spark muncul dengan mengembangkan model MapReduce untuk mendukung
lebih banyak jenis komputasi secara efektif, seperti interactive queries dan
stream processing[7]. Baik MapReduce maupun Spark direkomendasikan
untuk bekerja pada server fisik.
Namun, untuk merancang sebuah cluster untuk melakukan proses
komputasi dan analisis big data pada server fisik tidaklah mudah. Sebagian
besar kegagalan dalam membangun cluster komputasi big data disebabkan
oleh kesalahan konfigurasi seperti kesalahan pengaturan permission dan
1
options di sistem operasi[8]. Virtualisasi mampu memberikan, skalabilitas,
kehandalan, dan kinerja yang lebih baik berkat pendekatan virtualisasi pada
beberapa layer[9]. Teknologi virtualisasi mampu untuk membagi serta
mengalokasikan sumber daya dari sebuah komputer fisik ke dalam beberapa
environment.. Pada konteks ini, virtualisasi adalah menciptakan virtual
machine (VM) beserta dengan sistem operasi dan aplikasi-aplikasinya[10].
Dengan kata lain, virtualisasi memberikan fleksibilitas dalam membangun
cluster komputer.
Berdasarkan permasalahan yang telah dipaparkan diatas, maka pada
penelitian ini akan dilakukan analisis kinerja dari kedua jenis model
pemrograman big data tersebut pada lingkungan tervirtualisasi. Penelitian ini
berjudul:
“Analisis Kinerja Framework Big Data pada Cluster Tervirtualisasi:
Hadoop MapReduce dan Apache Spark”.
I.2 Rumusan Masalah
Berdasarkan latar belakang diatas, maka penulis dapat merumuskan
permasalahan-permasalahan yaitu :
1. Bagaimana mengimplementasikan teknologi virtualisasi pada cluster
Hadoop MapReduce dan Apache Spark ?
2. Bagaimana kinerja Apache Spark terhadap Hadoop MapReduce pada
cluster yang tervirtualisasi jika ditinjau dari ukuran data proses,
skalabilitas dan average execution time?
2
3. Bagaimana kinerja I/O dari cluster tervirtualisasi untuk pemrosesan big
data ditinjau dari framework big data yang digunakan ?
I.3 Tujuan Penelitian
Tujuan akhir dari penelitian ini yaitu :
1. Untuk mengimplementasikan teknologi virtualisasi pada cluster Hadoop
Map Reduce dan Apache Spark.
2. Untuk mengetahui kinerja Apache Spark dan Hadoop MapReduce pada
cluster yang tervirtualisasi.
I.4 Manfaat Penelitian
Dengan dilakukannya penelitian ini, diharapkan manfaat yang didapatkan
antara lain :
1. Dengan merancang cluster framework big data yang tervirtualisasi,
pengguna dapat meningkatkan jumlah node dengan mudah tanpa harus
terkendala dengan masalah kesalahan konfigurasi.
2. Dengan membandingkan Hadoop MapReduce dan Apache Spark, pengguna
dapat memilih framework big data yang tepat pada cluster yang
tervirtualisasi.
I.5 Batasan Masalah
Yang menjadi batas permasalahan dalam tugas akhir ini yaitu :
1. Hypervisor yang akan digunakan adalah Proxmox Virtual Environment
versi 4.2.
2. Teknologi virtualisasi yang digunakan adalah Kernel Virtual Machine
(KVM).
3
3. Perancangan sistem yang akan dibangun adalah single node cluster dan
multi node cluster (tiga node).
4. Percobaan masing-masing akan dilakukan sebanyak 5 kali untuk
mengetahui kinerja komputasi dan kinerja I/O masing-masing framework.
5. Hadoop yang akan digunakan adalah versi 2.7.3 sedangkan Spark yang akan
digunakan adalah versi 2.2.0 dengan Scala versi 2.11.6
6. Kedua framework menggunakan Hadoop Distributed File System sebagai
sistem file terdistribusi.
7. Java Development Kit yang akan digunakan adalah JDK Versi 8
I.6 Sistematika Penulisan
BAB I PENDAHULUAN
Bab ini berisi latar belakang masalah, rumusan masalah, tujuan penelitian,
manfaat penelitian, batasan masalah, sistematika penulisan.
BAB II LANDASAN TEORI
Pada bab ini akan dijelaskan teori-teori yang menunjang percobaan yang
dilakukan.
BAB III METODOLOGI PENELITIAN
Bab ini berisi analisis kebutuhan sistem, perancangan sistem, dan skenario
pengujian.
BAB 4 HASIL DAN PEMBAHASAN
Bab ini berisi hasil penelitian dan pembahasan.
4
BAB 5 PENUTUP
Bab ini berisi kesimpulan hasil penelitian dan saran
5
BAB II
LANDASAN TEORI
Pada bab ini akan dijelaskan konsep dasar big data, Hadoop MapReduce,
Apache Spark, konsep dasar virtualisasi, Proxmox VE, CentOS, dan benchmark.
II.1. Konsep Dasar Big Data
II.1.1. Pengertian Big Data
Big Data adalah data yang melampaui kemampuan pemrosesan
dari sistem basis data konvensional. Mulai dari ukuran data yang sangat
besar, berpindah sangat cepat, ataupun tidak sesuai dengan struktur dari
arsitektur basis data[11].
II.1.2. Karakteristik Big Data
II.1.2.1 Volume
Istilah ini digunakan untuk menggambarkan big data
sebagai sangat besarnya ukuran data yang akan diproses.
Ukuran data yang diproses berkisar sadari gigabytes (10 9
bytes) hingga yottabytes (1024 bytes)[12].
II.1.2.2 Velocity
Istilah ini digunakan untuk menggambarkan kecepatan
untuk menghasilkan data. Dapat juga digunakan untuk
menggambarkan kecepatan pemrosesan data yang
dihasilkan[12].
II.1.2.3 Variety
6
Istilah ini digunakan untuk menggambarkan banyaknya tipe
dan sumber data yang ada di dalam pemrosesan big
data[12].
II.1.3. Tipe Data Big Data
Berdasarkan karakteristik di atas, jenis-jenis data pada big
data dibagi menjadi 3 jenis:
II.1.3.1 Data Terstruktur (Structured Data)
Data terstruktur adalah data yang dapat disimpan di
dalam database yang memiliki format baris dan kolom
(terstruktur), memiliki relational key, dan dapat dengan
mudah dipetakan menjadi pre-designed field.
Contoh dari data terstruktur antara lain data
spreadsheet dan database relasional[13].
II.1.3.2 Data Semi Terstruktur (Semi-structured Data)
Data semi terstruktur adalah data tekstual dengan
struktur fleksibel yang dapat diurai. Data semi terstruktur
tidak bisa disimpan di dalam database relasional, tetapi
dengan melalui beberapa proses data semi terstruktur dapat
disimpan di dalam database relasional. Tujuan dari
dibuatnya data semi terstruktur adalah untuk mempermudah
komputasi karena ukurannya yang tidak memakan banyak
memori.
7
Contoh dari data semi terstruktur antara lain data
fomat csv (comma-separated values), JSON (JavaScript
Object Notation), dan yang paling populer adalah data
format XML (Extensible Markup Language)[13].
II.1.3.3 Data Tidak Terstruktur (Unstructured Data)
Data tidak terstruktur adalah data yang tidak
memiliki model data yang sudah ditentukan sebelumnya.
Data tidak terstruktur adalah data yang paling cepat
bertambah dibandingkan dengan tipe data yang lainnya.
Contoh dari data tidak terstruktur antara lain data
buku, jurnal, dokumen, metadata, rekaman kesehatan, audio,
video, data analog, gambar, dan teks tidak tertruktur lainnya
seperti email, halaman web, atau dokumen word-
processor[13].
II.2. Hadoop MapReduce
Hadoop[3] adalah sebuah framework untuk melakukan proses
komputasi terdistribusi data yang berukuran besar pada sekumpulan
komputer yang saling terhubung (cluster computing) dengan menggunakan
model pemrograman yang sederhana.
Hadoop merupakan framework yang sedang dikembangkan oleh
Apache Software Foundation yang bersifat opensource untuk komputasi
yang handal, scalable, dan terdistribusi[3] .
II.2.1 Fitur Hadoop MapReduce
8
- Fault Tolerance
Dengan kemampuan untuk mereplikasi setiap datablock
dan mendistribusikannya ke setiap DataNode yang ada di dalam
cluster. Jadi ketika terdapat sebuah node yang down, data yang
ada pada node tersebut dapat dengan mudah dipulihkan dengan
menggunakan data pada node yang lain.
- Economic
Cluster Hadoop MapReduce dapat berjalan pada
perangkat komoditi. Dengan demikian, Hadoop MapReduce
rendah biaya dalam perancangannya dan tidak membutuhkan
perangkat khusus sebagai node.
- Data Locality
Hadoop MapReduce bekerja dengan prinsip data
locality dimana memindahkan komputasi ke data dibandingkan
memindahkan komputasi ke data.
II.2.2 Arsitektur Hadoop
Hadoop terdiri dari beberapa komponen utama: sebuah
sistem manajemen berkas terdistribusi yang disebut Hadoop
Distributed File System (HDFS), sebuah framework untuk
melakukan pemrosesan terdistribusi yang disebut MapReduce dan
sebuah framework untuk melakukan jobs cheduling dan resource
management yang disebut YARN[14]. Di bawah ini adalah
arsitektur dari Hadoop:
9
Gambar 1 Arsitektur Framework Hadoop
II.2.3 HDFS (Hadoop Distributed File System)
HDFS adalah adalah sebuah sistem file terdistribusi yang
didesain untuk dapat berjalan di perangkat komoditi. HDFS
memiliki banyak kesamaan dengan sistem file terdistribusi lainnya.
Tetapi yang membedakan HDFS dengan sistem file terdistribusi
lainnya juga cukup signifikan. HDFS memiliki fault-tolerant yang
tinggi dan didesain untuk dijalankan pada perangkat keras yang
rendah biaya. HDFS memiliki akses throughput yang tinggi kepada
data aplikasi dan cocok untuk aplikasi yang memiliki dataset yang
besar. HDFS awalnya sebagai infrastruktur untuk proyek mesin
pencari web Apache Nutch. HDFS sekarang adalah subproyek dari
Apache Hadoop[15].
II.2.3.1 Fitur HDFS
- Kegagalan Perangkat Keras (Hardware Failure)
10
Sebuah sistem HDFS dapat terdiri dari
ratusan hingga ribuan mesin server, masing-masing
menyimpan data dari sistem file. Sebagaimana
diketahui bahwa ada banyak komponen di dalam
server dan setiap komponen memiliki kemungkinan
kerusakan yang tidak boleh diabaikan. Sehingga,
deteksi kesalahan (detection of faults) dan pemulihan
(recovery) yang cepat dan otomatis merupakan inti
dari dibangunnya HDFS[15].
- Dataset yang Besar (Large Data Sets)
Aplikasi yang berjalan pada HDFS
diasumsikan adalah aplikasi yang memiliki dataset
yang besar dengan ukuran data gigabyte hingga
terabyte. Dengan demikian, HDFS di rancang untuk
mampu menyimpan data dengan ukuran yang besar.
HDFS menyediakan agregat bandwidth data yang
tinggi dan di tingkatkan menjadi ratusan nodes pada
satu cluster. HDFS mampu menopang puluhan juta file
di dalam satu sistem[15].
- Model Koherensi yang Sederhana (Simple Coherrency
Model)
Aplikasi HDFS menggunakan model
write-once read-many dalam pengaksesan file. Sebuah
11
file dibuat, dituliskan, dan tidak bisa diubah lagi. Fitur
ini menyederhanakan masalah koherensi data dan
memberikan throughput akses data yang tinggi.
Aplikasi MapReduce atau aplikasi web crawler sangat
cocok efektif menggunakan model ini[15].
- Portabilitas
HDFS dirancang untuk dapat dengan
mudah berjalan pada berbagai platform dan perangkat
keras. Sehingga, membuat HDFS menjadi pilihan
untuk serangkaian aplikasi[15].
II.2.3.2 NameNode dan DataNode
HDFS menggunakan arsitektur master/slave.
Sebuah cluster HDFS terdiri dari sebuah NameNode,
sebuah server master yang mengatur namespace dari
sistem file dan mengatur hak akses klien pada file. Selain
itu, juga ada beberapa DataNode, biasanya satu per node di
dalam cluster, yang mengatur penyimpanan pada node
yang berjalan. HDFS mengatur namespace sistem file dan
mengizinkan data pengguna untuk tersimpan didalamnya.
Dari dalam, data dipecah menjadi beberapa blok dan blok-
blok ini disimpan di seluruh DataNode pada cluster.
NameNode mengeksekusi perintah namespace seperti
membuka, menutup, dan merubah nama dan direktori file.
12
NameNode juga menentukan bagaimana pemetaan blok
pada DataNode. DataNode bertanggungjawab dalam
melayani permintaan read dan write dari pengguna.
DataNode juga melakukan pembuatan, penghapusan, dan
replikasi blok berdasarkan perintah dari NameNode[15].
Berikut gambar arsitektur dari HDFS:
Gambar 2 Arsitektur HDFS
NameNode dan DataNode adalah daemon yang
didesain untuk dapat berjalan di perangkat komoditi yang
mana biasanya menggunakan sistem operasi GNU/Linux.
HDFS dibangun menggunakan bahasa Java. Setiap server
yang mendukung Java dapat menjalankan NameNode dan
DataNode[15].
II.2.3.3 Filesystem Namespace
HDFS mendukung hirarki file tradisional.
Pengguna atau aplikasi dapat membuat direktori dan
13
menyimpan data di dalam direktori tersebut. Hirarki
namespace sistem file serupa dengan beberapa sistem file.
Sistem file lain dapat membuat dan menghapus file,
memindahkan file dari satu direktori ke direktori lain, atau
mengubah nama file. HDFS belum mengimplementasikan
quota pengguna. HDFS tidak mendukung soft links atau
hard links. Namun, HDFS tidak menghalangi ketika akan
mengimplementasikan fitur tersebut[15].
NameNode mengurus namespace dari sistem file.
Setiap perubahan dari namespace sistem file ataupun
properti direkam oleh NameNode. Sebuah aplikasi dapat
menentukan jumlah replikasi dari sebuah file yang dikelola
oleh HDFS. Jumlah replikasi dari sebuah file disebut
replication factor dari sebuah file. Informasi ini disimpan
oleh NameNode[15].
II.2.3.4 Data Replication
HDFS dirancang agar andal dalam menyimpan data
yang sangat besar di seluruh mesin di dalam sebuah cluster
yang berukuran besar. HDFS menyimpan data sebagai blok
yang berurut. Semua blok di dalam file (kecuali blok
terakhir) memiliki ukuran yang sama. Blok dari sebuah file
direplikasi dengan tujuan agar toleran terhadap kegagalan
(fault-tolerant). Aplikasi dapat menentukan jumlah
14
replikasi pada sebuah file. Replication Factor dapat
ditentukan saat pembuatan file atau apat diatur nanti[15].
HDFS membuat segala keputusan yang berkaitan
dengan replikasi dari blok. Secara berkala, NameNode
menerima heartbeat dan Blockreport dari tiap DataNode di
dalam cluster. Menerima heartbeat menandakan bahwa
DataNode tersebut berjalan dengan baik. Blockreport
berisikan daftar dari seluruh block dari DataNode
tersebut[15].
II.2.3.5 Communications Protocol
Seluruh protokol komunikasi HDFS berada di atas
protokol TCP/IP.
II.2.3.6 FS Shell
HDFS mengelola data ke dalam bentuk file dan
direktori. HDFS menyediakan antarmuka berbasis
command line (CLI) yang disebut FS Shell yang
memberikan pengguna kesempatan untuk berinteraksi
dengan data yang ada di dalam HDFS. Penulisan dari
perintah pada FS Shell mirip dengan shell lainnya seperti
bash yang sudah familiar[15].
II.2.4 MapReduce
II.2.4.1 Konsep MapReduce
15
MapReduce adalah sebuah model pemrograman untuk
melakukan pemrosesan dataset berukuran besar melalui sistem file
terdistribusi (seperti HDFS)[16]. MapReduce dirancang untuk
dapat memproses data tidak terstruktur pada cluster komoditi besar,
menangani kegagalan hardware, duplikasi task, dan aggregat
hasil[17]
Model pemrograman MapReduce terdiri dari fungsi map
dan fungsi reduce. Fungsi map menerima setiap record dari data
masukan (input data) sebagai key-value lalu menghasilkan data
keluaran (output data) key-value. Setiap pemanggilan fungsi map
tidak saling bergantung satu sama lain memungkinkan framework
untuk menggunakan strategi divide and conquer untuk
mengeksekusi komputasi secara paralel. Hal ini juga
memungkinkan untuk melakukan duplikasi eksekusi atau
mengeksekusi ulang tugas map (map task) jika terjadi kegagalan
tanpa mempengaruhi hasil dari komputasi. Biasanya, Hadoop
membuat map task tunggal untuk setiap datablock HDFS dari input
data. Jumlah pemanggilan fungsi map di dalam sebuah map task
sama dengan jumlah record dalam pada blok input data pada map
task tertentu[18].
Selanjutnya, key-value dari seluruh map task
dikelompokkan berdasarkan key-nya dan lalu didistribusikan ke
dalam reduce task. Proses pendistribusian dan transmisi data ke
16
reduce task ini disebut fase shuffle. Input data yang masuk ke tiap
reduce task juga disortir dan dikelompokkan berdasarkan key-nya.
Fungsi reduce dipanggil untuk tiap key dan tiap kelompok value
dari key tersebut. Pada program MapReduce yang umumnya,
pengguna hanya perlu mengimplementasikan fungsi Map dan
fungsi Reduce dan Hadoop yang mengurus scheduling dan
mengeksekusinya secara paralel. Jika ada task yang gagal, maka
Hadoop akan menjalankan kembali (re-run) task tersebut. Diagram
di bawah ini adalah alur kerja dari proses MapReduce[18]:
Gambar 3 Diagram Proses MapReduce
II.2.4.2 Komponen MapReduce
MapReduce yang terdapat pada Hadoop memiliki 2
komponen utama penting yaitu:
1. JobTracker, berfungsi untuk memecah pekerjaan (job)
yang diberikan oleh pengguna menjadi beberapa tugas
(tasks) yang lebih kecil kepada TaskTracker dan
melakukan monitor terhadap semua tasks yang sedang
dieksekusi[19].
17
2. TaskTracker, berfungsi melaksanakan tasks yang
diberikan oleh JobTracker. TaskTracker menggunakan
Java Virtual Machine (JVM) untuk dapat menagani
proses map atau reduce secara paralel[19].
Berikut adalah diagram interaksi antara JobTracker
dengan TaskTracker [19]:
Gambar 4 Diagram Interaksi JobTracker dan TaskTracker
II.2.5 YARN (Yet Another Resource Negotiator)
Yet Another Resource Negotiator (YARN) adalah sebuah
framework dari Hadoop untuk melakukan penjadwalan pekerjaan
(job scheduling) dan pengelolaan cluster resource. YARN adalah
untuk membagi fungsionalitas dari resource management dan job
scheduling dalam daemon yang terpisah[3] .
18
YARN terdiri dari dua komponen, ResourceManager dan
NodeManager. ResourceManager memiliki fungsi sebagai
pengatur resources pada seluruh aplikasi di dalam sistem.
Sedangkan NodeManager berfungsi sebagai agent yang melakukan
pemantauan terhadap penggunaan resources (CPU, memori, disk,
jaringan) dan melaporkannya kepada ResourceManager serta
bertanggung jawab terhadap container di masing-masing node[3].
Berikut adalah diagram cara kerja YARN[3]:
Gambar 5 Diagram Kerja YARN
II.3. Apache Spark
Apache Spark adalah sebuah framework komputasi terdistribusi
yang dirancang untuk melakukan komputasi secara umum dengan cepat[4].
Spark mengembangkan model pemrograman MapReduce untuk mampu
19
melakukan berbagai macam jenis komputasi seperti interactive queries dan
streaming processing. Spark memiliki fitur in-memory computation yang
dimana proses komputasi dilakukan di dalam memori komputer, bukan di
dalam disk seperti yang Hadoop MapReduce lakukan.[7].
II.3.1 Komponen Apache Spark
Proyek Apache Spark berisi beberapa komponen yang
saling terintegrasi. Apache Spark adalah “mesin komputasi” yang
bertanggungjawab dalam scheduling, pendistribusian, dan
mengawasi aplikasi yang terdiri dari banyak task komputasi pada
servers atau cluster yang besar[7].
Dibawah ini adalah komponen-komponen yang ada pada
Apache Spark:
Gambar 6 Komponen-Komponen Apache Spark
II.3.1.1 Spark Core
Spark Core merupakan komponen inti dari Apache
Spark yang menyimpan fungsi-fungsi dasar dari Apache
20
Spark seperti task scheduling, memory management, fault
recovery, interaksi dengan sistem penyimpanan, dan masih
banyak lagi. Spark Core juga merupakan induk dari API
(application programming interface) yang mendefinisikan
resilient distributed data (RDD), yang mana merupakan
abstraksi pemrograman utama dari Apache Spark. RDD
merepresentasikan sebuah kumpulan item yang
didistribusikan ke banyak node yang mana dapat
dimanipulasi secara paralel. Spark Core juga menyediakan
banyak API untuk membangun dan memanipulasi RDD
ini[7].
II.3.1.2 Spark SQL
Spark SQL adalah paket dari Apache Spark untuk
mengolah data-data yang terstruktur. Spark SQL memiliki
kemampuan untuk dapat melakukan proses query pada data-
data via SQL. SparkSQL memungkinkan pengguna untuk
mencampuradukkan query SQL dengan manipulasi data
program dari RDD di dalam bahasa Phyton, Java, dan Scala,
semua dalam satu aplikasi.[7]
II.3.1.3 Spark Streaming
Spark Streaming merupakan komponen dari Apache
Spark untuk melakukan proses streaming data secara
langsung. Spark Streaming menyediakan sebuah API untuk
21
melakukan manipulasi data stream yang serupa dengan API
RDD Spark Core yang mempermudah pengguna untuk
memanipulasi data yang tersimpan di dalam memori, di
dalam disk, dan data yang akan datang secara real time[7].
II.3.1.4 MLlib
MLlib adalah sebuah library yang memungkinkan
Apache Spark untuk melakukan fungsi-fungsi umum dari
machine learning. MLlib menyediakan berbagai macam
algoritma machine learning seperti statistik, klasifikasi,
regresi, collaborative filtering, pengelompokan (clustering),
dimensionality reduction, ekstraksi fitur, frequent pattern
mining, optimisasi, dan lain-lainnya[20].
II.3.1.5 GraphX
GraphX adalah sebuah library untuk melakukan
proses manipulasi graph dan melakukan komputasi graph-
parallel. Sama halnya dengan Spark Streaming dan Spark
SQL, GraphX mengembangkan API RDD dari Apache
Spark. GraphX juga menyediakan berbagai macam operator
untuk manipulasi graph dan library algoritma graph
umum[7].
II.3.1.6 Cluster Manager
Apache Spark dirancang secara efisien agar dapat
berjalan mulai dari satu node hingga ribuan nodes. Maka
22
dari itu, untuk tetap mempertahankan fleksibilitasnya.
Apache Spark dapat dijalankan diatas berbagai macam
cluster manager seperti YARN dan sebuah cluster manager
sederhana bawaan dari Apache Spark yang disebut
Standalone Scheduler[7].
Standalone scheduler, menawarkan cara yang
sederhana dalam menjalankan aplikasi di dalam cluster.
Standalone scheduler terdiri dari master dan beberapa
worker, dengan memori, dan CPU core yang telah
terkonfigurasi. Saat menjalankan sebuah aplikasi, pengguna
dapat menentukan seberapa banyak jumlah memori yang
akan digunakan executor, serta jumlah core di seluruh
executor[7].
II.3.2 Fitur Apache Spark
- Pengolahan Cepat
Dengan kemampuan untuk mengurangi jumlah proses
read/write pada disk. Apache Spark memiliki kinerja komputasi
yang 100 kali lebih cepat pada memori dan 10 kali lebih cepat
pada disk.
- Dinamis
Apache Spark menyediakan sebanyak 80 operator tingkat
tinggi (high-level operators) yang mempermudah dalam
mengembangkan aplikasi paralel[7].
23
- In-memory Computation
Dengan melakukan pemrosesan di dalam memori (in-
memory processing), kinerja Apache Spark menjadi lebih cepat.
Dengan menyimpan data di dalam cache, data tidak perlu lagi
harus diambil pada disk yang mana menyita waktu yang banyak.
Apache Spark memiliki Directed Acylic Graph (DAG) execution
engine yang memfasilitasi in-memory computation dan acylic
data flow yang mampu menghasilkan kecepatan yang lebih
tinggi[4].
- Fault Tolerance
Apache Spark memiliki fault tolerance melalui abstraksi
RDD. RDD di desain untuk mengatasi kegagalan worker pada
cluster. Dengan demikian, dipastikan kemungkinan kehilangan
data (data loss) dapat diperkecil menjadi nihil[7].
- Lazy Evaluation
Lazy Evaluation pada Apache Spark memiliki arti dimana
sebuah eksekusi (dalam hal ini proses transformation) tidak akan
dilakukan sampai proses action dilakukan. Melalui DAG,
Apache Spark menyimpan record dari operasi yang dipanggil.
Dengan demikian, dapat meningkatkan efisiensi dari sistem[3].
II.3.3 Arsitektur Apache Spark
Dalam mode terdistribusi, Apache Spark menggunakan
arsitektur master/slave dengan satu koordinator utama yang disebut
24
driver dan beberapa worker yang terdistribusi. Driver
berkomunikasi dengan worker yang terdistribusi yang disebut
executor. Sebuah driver dan executor-nya Bersama disebut Spark
Application[7].
Sebuah Spark Application dijalankan di atas menggunakan
layanan cluster manager. Sebagaimana diketahui, Apache Spark
dikemas dengan sebuah cluster manager bawaan yang disebut
Standalone Scheduler. Apache Spark juga dapat bekerja
menggunakan Hadoop YARN atau Apache Mesos. Berikut adalah
Arsitektur dari Apache Spark[7]:
Gambar 7 Arsitektur Runtime Apache Spark
II.3.3.1 Driver
Driver adalah sebuah proses dimana main( ) dari
sebuah program berjalan. Driver adalah proses dimana
25
SparkContext dan RDD dibuat serta melakukan
transformation dan action. Tugas dari driver ada dua yaitu:
- Mengubah program pengguna menjadi beberapa task.
Driver bertanggung jawab dalam mengonversi
program dari pengguna menjadi unit eksekusi yang
disebut task. Sebuah program Apache Spark secara
implisit membuat sebuah operasi logical directed
acylic graph (DAG). Ketika berjalan, driver
mengubah logical graph ini menjadi sebuah execution
plan[7].
- Menjadwalkan task pada executor.
Ketika diberikan sebuah program, driver
menkoordinasikan penjadwalan masing-masing task
pada executor. Setiap executor merepresentasikan
sebuah proses yang mampu menjalankan task dan
menyimpan data RDD. Driver juga akan melihat
jumlah executor dan melakukan penjadwalan masing-
masing task pada lokasi yang sesuai, berdasarkan
penempatan data[7].
II.3.3.2 Executor
Executor adalah sebuah proses worker yang
bertanggung jawab dalam menjalankan sebuah task yang
diberikan. Executor memiliki dua peran. Pertama,
26
menjalankan task dan mengembalikan hasilnya kepada
driver. Kedua, menyediakan in-memory storage untuk
RDD-RDD yang di-cache oleh program[7].
II.3.4 SparkContext
SparkContext adalah titik awal dari fungsi kerja Apache
Spark. Membuat SparkContext adalah tahap paling penting dalam
menjalankan aplikasi Apache Spark. SparkContext memungkinkan
aplikasi Apache Spark untuk dapat mengakses cluster dengan
bantuan dari Cluster Manager.
II.3.5 Resilient Distributed Dataset (RDD)
RDD secara sederhana dapat diartikan sebagai kumpulan
objek terdistribusi yang bersifat kekal (immutable)[7]. Yang
dimaksud bersifat kekal adalah ketika terjadi proses transformasi
pada sebuah RDD, maka Spark akan membuat RDD yang baru
sebagai hasil dari proses transformasi dan RDD yang sebelumnya
tidak akan berubah[21].
RDD memiliki 2 jenis operasi, yang pertama adalah operasi
transformasi (transformation) dan yang kedua adalah operasi aksi
(action). Transformation adalah operasi pada RDD yang akan
menghasilkan RDD yang baru. Contoh dari operasi transformasi
adalah map( ), filter( ), flatMap( ), groupByKey( ), reduceByKey( ),
sample( ), union( ), dan lain-lain[7]. Sedangkan action adalah
operasi yang melakukan evaluasi fungsi pada RDD, mengeksekusi
27
query, dan mengembalikan sebuah nilai sebagai hasil dari operasi.
Contoh dari operasi action adalah count(), reduce(), collect( ), take(
), dan lain-lain[21].
II.4. Konsep Dasar Virtualisasi
II.4.1. Pengertian Virtualisasi
Virtualisasi merupakan metode pembagian sumber daya
(resource) pada komputer menjadi beberapa environment lain,
dengan konsep atau teknologi-teknologi seperti emulator, QoS,
partisi perangkat keras maupun lunak, dan lainnya[22]. Server yang
digunakan untuk menjalankan software virtualisasi (hypervisor)
disebut host. Dimana hypervisor akan menciptakan virtual machine
dengan menggunakan resource dari host yang disebut guest[23].
II.4.2. Virtual Machine
Virtual Machine atau yang biasa disebut dengan VM
adalah sebuah container yang menjalankan aplikasi dan sistem
operasi guest menggunakan sumber daya dari server fisik
dibawahnya (host). VM pada dasarnya terdiri dari configuration file
dan virtual disk file. Configuration file menjelaskan apa saja sumber
daya yang akan digunakan oleh VM. Asumsikan VM adalah sebuah
casis server yang kosong, configuration file berisikan perangkat
keras apa saja yang akan berada dalam casis tersebut seperti CPU,
memori, penyimpanan, jaringan, CD drive, dan lain-lain. Gambar di
bawah ini adalah ilustrasi dari sebuah VM[24]:
28
Gambar 8 Ilustrasi dari Virtual Machine
II.4.3. Hypervisor
Hypervisor (atau biasa disebut virtual machine monitor)
adalah sebuah software yang berjalan diatas server fisik yang
berfungsi untuk menciptakan environment tervirtualisasi
berdasarkan sumber daya server fisik[24].
Ada 2 tipe hypervisor yang saat ini banyak digunakan antara
lain:
1. Hypervisor Tipe 1
Hypervisor tipe 1 berjalan diatas server fisik secara
langsung, tanpa diperantarai oleh sistem operasi. Hypervisor
tipe ini kadang juga disebut bare-metal hypervisor dikarenakan
tidak adanya software layer antara hypervisor dengan server
fisik. Hypervisor tipe 1 dapat secara langsung berkomunikasi
dengan resource dari server fisik sehingga membuatnya
memiliki kinerja yang lebih efisien[24].
29
Gambar dibawah merupakan arsitektur dari hypervisor
tipe 1[24]:
Gambar 9 Arsitektur Hypervisor Tipe 1 (Bare Metal
Hypervisor)
2. Hypervisor Tipe 2
Hypervisor tipe 2 berjalan diatas sebuah sistem operasi
dari server fisik. Hypervisor tipe 2 ini memiliki kelebihan
dalam kemudahan dalam pemasangannya tetapi kurang efisien
dibanding hypervisor tipe 1[24].
30
Gambar di bawah ini adalah arsitektur dari hypervisor
tipe 2[24]:
Gambar 10 Arsitektur Hypervisor Tipe 2
II.4.4. KVM (Kernel-based Virtual Machine)
KVM merupakan engine virtualisasi yang bersifat
opensource untuk kernel Linux. KVM hanya dapat bekerja pada
server fisik yang memiliki teknologi virtualisasi hardware (Intel-
VT atau AMD-V). KVM memberikan kemampuan untuk dapat
menjalankan beberapa virtual machine dengan sistem operasi
Linux[25]. KVM menggunakan bantuan dari perangkat lunak
QEMU untuk melakukan proses emulasi I/O[23].
II.5. Proxmox Virtual Environment (PVE)
Proxmox Virtual Environment (PVE) adalah sebuah hypervisor
berbasis sistem operasi Linux Debian yang bersifat opensource[26]. PVE
terintegrasi engine virtualisasi KVM, LXC container, software-defined
network dalam satu platform[27]. PVE dapat dikonfigurasi agar dapat
31
berjalan pada ribuan nodes. PVE dapat diakses via antarmuka command-
line maupun Web GUI (Graphical User Interface).
II.6. CentOS
Community Enterprise Operating System atau yang disingkat
CentOS adalah sebuah sistem operasi yang merupakan distribusi Linux
yang dikembangkan oleh CentOS Project Community dengan
menggunakan source code distribusi Linux komersial Red Hat Enterprise
Linux (RHEL)[28].
II.7. Benchmarks
II.7.1 Wordcount
Wordcount adalah program yang membaca file teks sebagai
masukan dan menghitung jumlah kata yang sama di dalam sebuah
file. Keluaran dari program wordcount adalah sebuah file teks
dimana setiap barisnya berisikan sebuah kata dan jumlah kata
tersebut di dalam file.
Berikut adalah tahapan-tahapan dari program wordcount:
1. Data masukan dipecah tiap baris menjadi beberapa record.
2. Fungsi Map memproses setiap kata pada record dan
menghasilkan key-value.
3. Semua key-value dari fungsi Map digabung, dikelompokkan
berdasarkan key-nya, lalu disortir.
4. Hasil dari tahap di atas selanjutnya di transmisikan ke fungsi
Reduce yang mana nantinya akan menghasilkan keluaran akhir.
32
Di bawah ini adalah diagram tahapan program wordcount:
Gambar 11 Diagram Tahapan Program Wordcount
II.7.2 TestDFSIO
TestDFSIO adalah program pengujian kemampuan
read/write pada HDFS. Program ini sangat berguna untuk
melakukan uji kemampuan HDFS, untuk menguji parameter pada
NameNode dan DataNode, dan untuk mencari bottleneck dan
mengevaluasi I/O rate. TestDFSIO terdiri dari dua pengujian, yang
pertama adalah membuat data pada HDFS dan yang kedua adalah
membaca data yang dibuat tadi dan melakukan pengukuran.
Setiap file dihasilkan dan dibaca dalam map task yang
berbeda dan keluaran dari map nantinya akan digunakan dalam
menyusun statistic yang terkait dengan file yang telah diproses.
Statistik tersebut diakumulasikan di dalam reduce untuk
menghasilkan kesimpulan.
33
BAB III
METODOLOGI PENELITIAN
Pada bab ini akan membahas mengenai analisis kebutuhan sistem,
perancangan sistem, dan skenario pengujian Skenario pengujian yang akan
dilakukan terbagi menjadi 2 dengan keperluan untuk menguji kinerja dari kedua
framework big data masing-masing Hadoop MapReduce dan Apache Spark.
III.1 Analisis Kebutuhan Sistem
Analisis kebutuhan sistem mencakup dari penentuan spesifikasi dari
perangkat keras dan perangkat lunak yang akan digunakan.
III.1.1 Spesifikasi Perangkat Keras
Perangkat keras yang akan digunakan dalam penelitian ini adalah
sebagai berikut:
- Satu buah komputer yang akan berperan sebagai host dengan
spesifikasi:
Tabel 1 Spesifikasi Komputer Host
Intel i7-4770 CPU @3.40
Prosesor
GHZ
Jumlah Core 16-core
Ukuran RAM 16 GB
Ukuran harddisk 1 Terabyte
Network Interface Card 1 buah
Teknologi Virtualisasi Intel-VT
34
- Satu buah komputer yang sudah terpasang browser yang
berguna untuk mengakses WebGUI Proxmox VE.
- Satu buah switch 8-port
III.1.2 Spesifikasi Perangkat Lunak
Perangkat lunak yang akan digunakan pada penelitian ini adalah
sebagai berikut:
- Hypervisor
Hypervisor yang akan digunakan pada penelitian ini adalah
Proxmox Virtualization Evironment versi 4.2
- Java
Java Development Kit yang digunakan pada penelitian ini
adalah JDK 7.
- Hadoop
Framework Hadoop yang akan digunakan pada penelitian ini
adalah Hadoop versi 2.7.3.
- Apache Spark
Framework Apache Spark yang akan digunakan pada penelitian
ini adalah Apache Spark versi 2.2.0 yang kompatibel dengan
Hadoop versi 2.7
- Scala
Scala yang akan digunakan pada penelitian ini adalah Scala versi
2.12
- Scala Build Tool (SBT)
35
Scala Build Tool yang digunakan pada penelitian ini adalah SBT
versi 1.0.2
III.2 Perancangan Sistem
III.2.1 Gambaran Umum Sistem
Secara umum akan dibuat 2 jenis cluster, pertama yaitu
single node cluster, dimana nantinya akan dibuat 1 virtual machine
serta dipasangi Hadoop dan Apache Spark. VM ini akan berperan
sebagai master sekaligus slave/worker. Cluster yang kedua adalah
multi-node cluster, dimana nantinya dibuat 3 virtual machine yang
masing-masing akan dipasangi Hadoop dan Apache Spark dengan
aturan 1 VM yang berperan sebagai master dan 2 VM lainnya akan
berperan sebagai slave/worker. Berikut adalah tabel konfigurasi dari
VM:
Tabel 2 Konfigurasi Virtual Machine
Aspek Multi node
Single Node
Teknologi Master Slave/Worker
Sistem CentOS 7 CentOS 7 CentOS 7
Operasi GNOME GNOME Minimal
Ukuran
32 GB 32 GB 32 GB
Harddisk
Ukuran RAM 12 GB 4 GB 4 GB
Jumlah Core 12 4 4
- Bridge - Bridge - Bridge
(Static) (Static) (Static)
NIC
- Bridge - Bridge
(DHCP) (DHCP)
36
- NAT - NAT
III.2.2 Arsitektur Sistem
III.2.2.1 Arsitektur Virtual Machine
Di bawah ini adalah arsitektur dari virtual machine
yang akan dijadikan nodes pada cluster:
Gambar 12 Arsitektur Virtual Machine yang akan
digunakan
III.2.2.2 Arsitektur Single Node Cluster
Di bawah ini adalah arsitektur dari single node
cluster :
37
Gambar 13 Arsitektur Single Node Cluster
III.2.2.3 Arsitektur Multi Node Cluster
Di bawah ini adalah arsitektur dari multi node cluster
Gambar 14 Arsitektur Multi Node Cluster
III.3 Skenario Pengujian
III.3.1 Pengujian WordCount
Pada pengujian ini, Hadoop MapReduce dan Apache Spark.
Hadoop dan Apache Spark masing-masing dipasang pada single
38
node cluster dan multi node cluster. Lalu pada masing-masing
cluster akan dieksekusi program wordcount untuk berbagai ukuran
file.
File yang akan di uji berasal dari proses generate dari linux
dictionary (/usr/share/dict/words) menggunakan perintah berbahasa
ruby. Ukuran file yang akan diproses menggunakan program
wordcount terbagi menjadi dua jenis, yaitu ukuran file lebih kecil
dibanding ukuran memori (512 MB, 1 GB, 2GB, 4 GB, 8 GB) dan
ukuran file lebih besar dibandingkan ukuran memori (32 GB, 40 GB,
48 GB, 56 GB, 64 GB) adapun detail mengenai jumlah kata per baris
dan jumlah baris dari tiap file adalah sebagai berikut:
Tabel 3 Data Uji pada Pengujian Wordcount
Ukuran File Jumlah kata per Jumlah Baris
baris
512 megabyte 100 kata 764 x 103 baris
1 gigabyte 100 kata 1.528 x 103 baris
2 gigabyte 100 kata 3.056 x 103 baris
4 gigabyte 100 kata 6.112 x 103 baris
8 gigabyte 100 kata 12224 x 103 baris
32 gigabyte 100 kata 48896 x 103 baris
40 gigabyte 100 kata 61120 x 103 baris
48 gigabyte 100 kata 73344 x 103 baris
56 gigabyte 100 kata 85568 x 103 baris
39
64 gigabyte 100 kata 97792 x 103 baris
III.3.1.1 Diagram Alir Pengujian
Adapun diagram alir pengujian wordcount di bawah ini:
Gambar 15 Diagram Alir Pengujian WordCount
III.3.1.2 Langkah Pengujian
Diasumsikan VM telah dijalankan dan sistem operasi
dan kedua framework telah terpasang di dalam VM yang
40
akan digunakan dan saling terhubung satu sama lain.
Langkah pengujian wordcount sebagai berikut:
1. Membuat direktori pada HDFS dengan menggunakan
perintah:
$ hdfs dfs -mkdir -p input
2. Memasukkan file yang akan dieksekusi ke dalam HDFS
dengan menggunakan perintah:
$ hdfs dfs -put [Link] input
3. Mengeksekusi program wordcount masing-masing 5 kali
pengeksekusian:
a. Pada Hadoop MapReduce
$ hadoop jar
$HADOOP_HOME/share/hadoop/mapr
educe/hadoop/hadoop-mapreduce-
[Link] wordcount input output
b. Pada Apache Spark
- Membuka spark-shell dengan perintah:
$ $SPARK_HOME/bin/scala-shell;
- Pada spark-shell gunakan perintah:
scala> val textFile =
[Link]("hdfs://localhost:900
0/user/hadoop/input/[Link]");
41
val counts = [Link](line => [Link]("
")) .map(word => (word, 1)).reduceByKey(_ + _);
[Link]("hdfs://localhost:9000/use
r/hadoop/output");
4. Pada tahap analisis seluruh hasil execution time dan
throughput pada masing-masing framework di rata-
ratakan. Throughput adalah hasil perbandingan antara
ukuran data uji dengan execution time.
III.3.2 Pengujian TestDFSIO
Pada pengujian ini, Hadoop MapReduce dan Apache Spark.
Hadoop dan Apache Spark masing-masing dipasang pada single
node cluster dan multi node cluster. Lalu akan pada masing-masing
cluster akan dieksekusi program TestDFSIO. Sourcecode program
TestDFSIO pada Hadoop MapReduce secara default tersedia.
Sedangkan untuk Apache Spark, sourcecode program TestDFSIO di
adaptasi dari[29].
Pada pengujian ini jumlah file yang akan di hasilkan adalah
4 dengan masing-masing ukuran 1GB dan 2GB, dengan demikian
ukuran file yang akan di gunakan pada program TestDFSIO adalah
4GB dan 8 GB.
III.3.2.1 Diagram Alir Pengujian
Adapun tahapan pengujian TestDFSIO di bawah ini:
42
Gambar 16 Diagram Alir Pengujian TestDFSIO
III.3.2.2 Langkah Pegujian
Diasumsikan VM telah dijalankan dan sistem operasi
dan kedua framework telah terpasang di dalam VM yang
akan digunakan dan saling terhubung satu sama lain. Juga
di asumsikan bahwa source code dari[29] telah terpasang.
Langkah pengujian TestDFSIO sebagai berikut:
43
1. Mengeksekusi program write masing-masing 5 kali
pengeksekusian:
a. Pada Hadoop MapReduce, ubah direktori menjadi
direktori Hadoop MapReduce dan gunakan perintah:
$ hadoop jar
$HADOOP_HOME/share/hadoop/mapr
educe/hadoop-mapreduce-client-jobclient-2.7.3-
[Link] -write --nrFiles 4 --filesize [1GB/2GB] --
resFile ~hadoop/[Link]
b. Pada Apache Spark
$ $SPARK_HOME/bin/spark-submit
--master spark://hadoop:7077
--class
[Link]
./spark-benchmarks-master/dfsio/target/ scala-
2.11/sp
ark-benchmarks-dfsio-0.1.0-with-
[Link] write --numFiles 4 --fileSize
[1GB/2GB] –outputDir
hdfs://master:9000/user/hadoop/dfsio --resFile
~hado
op/[Link]
44
2. Mengeksekusi program read masing-masing 5 kali
pengeksekusian:
a. Pada Hadoop MapReduce, ubah direktori menjadi
direktori Hadoop MapReduce dan gunakan perintah:
$ hadoop jar
$HADOOP_HOME/share/hadoop/mapr
educe/hadoop-mapreduce-client-jobclient-2.7.3-
[Link] -read --nrFiles 4 --filesize [1GB/2GB] --
resFile ~hadoop/[Link]
b. Pada Apache Spark
$ $SPARK_HOME/bin/spark-submit
--master spark://hadoop:7077
--class
[Link]
./spark-benchmarks-master/dfsio/target/ scala-
2.11/sp
ark-benchmarks-dfsio-0.1.0-with-
[Link] read --numFiles 4 --fileSize
[1GB/2GB] –inputDir
hdfs://master:9000/user/hadoop/dfsio --resFile
~hado
45
op/[Link]
3. Pada tahap analisis seluruh hasil execution time,
throughput dan average I/O rate pada masing-masing
framework di rata-ratakan.
46
BAB IV
HASIL PENELITIAN DAN PEMBAHASAN
Perancangan yang telah dibuat sebelumnya dengan sistem dan skenario
yang disarankan pada bab sebelumnya, selanjutnya dilakukan pengambilan data
dan analisis. Analisis dilakukan dengan tujuan untuk menganalisis kinerja dari
Hadoop MapReduce dan Apache Spark yang telah dirancang pada bab sebelumnya.
IV.1 Pengujian Wordcount
IV.1.1 Hasil Pengujian
IV.1.1.1 Single Node Cluster
Hasil pengujian wordcount pada single node cluster
yang tervirtualisasi untuk ukuran data yang lebih kecil
dibandingkan ukuran memori dibawah ini :
Tabel 4 Hasil Pengujian Wordcount pada Single
Node Cluster untuk Ukuran Data Lebih Kecil dibandingkan
Ukuran Memori
Ukuran Execution Time (detik)
Data Hadoop MapReduce Apache Spark
512 MB 41.4 7.4
1 GB 77.6 13.8
2 GB 133.6 27.6
4 GB 254 54.2
8 GB 524.2 102.4
47
600
500
Execution Time (s)
400
300
200
100
0
512 MB 1 GB 2 GB 4 GB 8 GB
Ukuran Data
Hadoop Spark
Grafik 1 Hasil Pengujian Wordcount pada Single Node
Cluster untuk Ukuran Data Lebih Keci Dibandingkan
Ukuran Memori
Sedangkan hasil pengujian untuk ukuran data lebih
besar dibandingkan ukuran memori di bawah ini:
Tabel 5 Hasil Pengujian Wordcount pada Single
Node Cluster untuk Ukuran Data Lebih Besar dibandingkan
Ukuran Memori
Ukuran Execution Time (detik)
Data Hadoop MapReduce Apache Spark
32 GB 1402.2 414.2
40 GB 1912.8 508.0
48 GB 2341.6 613.8
56 GB 2743.4 712.2
64 GB 3647.2 832.0
48
4000.0
3500.0
3000.0
Execution Time (s)
2500.0
2000.0
1500.0
1000.0
500.0
0.0
32 GB 40 GB 48 GB 56 GB 64 GB
Ukuran Data
Hadoop Spark
Grafik 2 Hasil Pengujian Wordcount pada Single Node
Cluster untuk Ukuran Data Lebih Besar Dibandingkan
Ukuran Memori
IV.1.1.2 Multi Node Cluster
Hasil pengujian wordcount pada multi node cluster
yang tervirtualisasi untuk ukuran data yang lebih kecil
dibandingkan ukuran memori dibawah ini :
Tabel 6 Hasil Pengujian Wordcount pada Multi
Node Cluster untuk Ukuran Data Lebih Kecil dibandingkan
Ukuran Memori
Ukuran Execution Time (detik)
Data Hadoop MapReduce Apache Spark
512 MB 41.4 9.6
1 GB 73.4 17.4
2 GB 127.4 33
49
4 GB 212.4 111
8 GB 420 350.4
450
400
350
Execution Time (s)
300
250
200
150
100
50
0
512 MB 1 GB 2 GB 4 GB 8 GB
Ukuran Data
Hadoop Spark
Grafik 3 Hasil Pengujian Wordcount pada Multi Node
Cluster untuk Ukuran Data Lebih Keci Dibandingkan
Ukuran Memori
Sedangkan hasil pengujian untuk ukuran data lebih
besar dibandingkan ukuran memori di bawah ini:
Tabel 7 Hasil Pengujian Wordcount pada Multi
Node Cluster untuk Ukuran Data Lebih Besar dibandingkan
Ukuran Memori
Ukuran Execution Time (detik)
Data Hadoop MapReduce Apache Spark
32 GB 2307.0 917.4
40 GB 2553.4 1051.4
50
48 GB 3054.0 1235.8
56 GB 3542.6 1476.6
64 GB 3991.4 1737.0
4500.0
4000.0
3500.0
Execution Time (s)
3000.0
2500.0
2000.0
1500.0
1000.0
500.0
0.0
32 GB 40 GB 48 GB 56 GB 64 GB
Ukuran Data
Hadoop Spark
Grafik 4 Hasil Pengujian Wordcount pada Multi Node
Cluster untuk Ukuran Data Lebih Besar Dibandingkan
Ukuran Memori
IV.1.2 Pembahasan
Berdasarkan grafik hasil pengujian diatas, Apache Spark
menunjukkan kinerja komputasi 3-5 kali lebih cepat pada single
node cluster dan 1-4 kali lebih cepat pada multi node cluster. Hal ini
dikarenakan Apache Spark memiliki fitur in-memory computation
yang mana memungkinkan proses komputasi data dilakukan di
dalam memori yang mana memiliki throughput process yang besar
sehingga proses komputasi menjadi lebih cepat, berbeda dengan
51
Hadoop MapReduce yang melakukan proses komputasi data pada
disk yang memiliki process throughput yang lebih rendah sehingga
akan memakan waktu yang lebih lama.
IV.2 Pengujian TestDFSIO
IV.2.1 Hasil Pengujian
IV.2.1.1 Single Node Cluster
Hasil pengujian TestDFSIO pada single node cluster
tervirtualisasi dibawah ini:
Tabel 8 Hasil Pengujian TestDFSIO pada Single
Node Cluster
Operasi/Ukuran Throughput (MB/s)
File Hadoop MapReduce Apache Spark
Write/ 4 GB 49.964 193.907
Read/ 4 GB 34.158 142.5034
Write/ 8 GB 679.2274 882.2822
Read/8 GB 26.826 950.065
52
1000
900
800
Throughput (MB/s)
700
600
500
400
300
200
100
0
WRITE 4GB WRITE 8GB READ 4GB READ 8GB
Hadoop Spark
Grafik 5 Hasil Pengujian TestDFSIO pada Single
Node Cluster
IV.2.1.2 Multi Node Cluster
Hasil pengujian TestDFSIO pada multi node cluster
tervirtualisasi dibawah ini:
Tabel 9 Hasil Pengujian TestDFSIO pada Multi
Node Cluster
Operasi/Ukuran Throughput (MB/s)
File Hadoop MapReduce Apache Spark
Write/ 4 GB 11.515 101.4368
Read/ 4 GB 9.3079 87.5698
Write/ 8 GB 18.8692 97.6196
Read/8 GB 21.4532 101.4958
53
120
100
Throughput (MB/s)
80
60
40
20
0
WRITE 4GB WRITE 8GB READ 4GB READ 8GB
Hadoop Spark
Grafik 6 Hasil Pengujian TestDFSIO pada Multi
Node Cluster
IV.2.2 Pembahasan
Berdasarkan hasil pengukuran di atas, dapat terlihat bahwa
kinerja I/O cluster ketika menjalankan proses write dan read data
dari Apache Spark pada kedua jenis cluster lebih baik dibandingkan
dengan Hadoop MapReduce. Hal ini dikarenakan ketika akan
melakukan sebuah komputasi, Apache Spark memiliki sebuah fitur
DAG yang mengoptimasi execution plan dengan meminimalkan
jumlah proses read/write pada disk yang tentunya memakan banyak
waktu.
54
BAB V
PENUTUP
V.1. Kesimpulan
Dalam analisis kinerja Hadoop MapReduce dan Apache Spark pada
lingkungan tervirtualisasi, hasil menunjukkan bahwa:
- Apache Spark menunjukkan kinerja komputasi yang lebih cepat
hingga 5 kali lipat pada cluster tervirtualisasi. Hal ini
dikarenakan Apache Spark memiliki fitur in-memory
computation yang mana memungkinkan proses komputasi data
dilakukan di dalam memori yang mana memiliki throughput
process yang besar sehingga proses komputasi menjadi lebih
cepat, berbeda dengan Hadoop MapReduce yang melakukan
proses komputasi data pada disk yang tentunya akan memakan
waktu yang lama.
- Apache Spark juga memberikan throughput yang lebih tinggi
pada kinerja I/O cluster. Hal ini dikarenakan ketika akan
melakukan sebuah komputasi, Apache Spark memiliki sebuah
fitur DAG yang mengoptimasi execution plan sehingga mampu
mengurang jumlah proses write dan read data pada disk yang
tentunya memakan banyak waktu.
V.2. Saran
Adapun saran untuk penelitian selanjutnya :
55
1. Penelitian berikutnya lebih berfokus untuk menganalisis kinerja
Hadoop MapReduce dan Apache Spark pada fungsi kerja yang lain
seperti streaming processing, pemrosesan query, maupun machine
learning pada lingkungan tervirtualisasi.
2. Penelitian berikutnya lebih berfokus untuk menganalisis kinerja
Hadoop MapReduce dan Apache Spark pada cluster virtualisasi dengan
parameter jumlah node virtual pada cluster.
3. Penelitian berikutnya diharapkan untuk menganalisis kinerja
framework big data menggunakan cluster manager alternatif lain pada
cluster tervirtualisasi.
56
DAFTAR PUSTAKA
[1] M. Chen, S. Mao, and Y. Liu, “Big Data : A Survey,” Mob. Networks
Appl., vol. 19, no. 2, pp. 171–209, 2014.
[2] T. White, Hadoop: The Definitive Guide, 4th ed. O’Reilly, 2015.
[3] “Apache Hadooop.” [Online]. Available: [Link]
[4] “Apache SparkTM - Lightning-Fast Cluster Computing.” [Online].
Available: [Link]
[5] J. . Shi et al., “Clash of The Titans: Mapreduce vs. Spark for Large Scale
Data Analytics,” Proc. VLDB Endow., vol. 8, no. 13, pp. 2110–2121, 2015.
[6] N. S. Islam, M. Wasi-Ur-Rahman, X. Lu, D. Shankar, and D. K. Panda,
“Performance Characterization and Acceleration of In-Memory File
Systems for Hadoop and Spark Applications on HPC Clusters,” Proc. -
2015 IEEE Int. Conf. Big Data, IEEE Big Data 2015, pp. 243–252, 2015.
[7] H. Karau, A. Konwinski, P. Wendell, and M. Zaharia, Learning Spark.
O’Reilly, 2015.
[8] A. Rabkin and R. H. Katz, “How Hadoop Clusters Break,” IEEE Softw.,
vol. 30, no. 4, pp. 88–94, 2013.
[9] D. Kusnetzky, Virtualization: A Manager’s Guide. O’Reilly, 2011.
[10] R. Goldman, Learning Proxmox VE. Packt Publishing, 2016.
[11] O’Reilly, Big Data Now: Current Perspectives from O’Reilly Media.
57
O’Reilly Media, 2012.
[12] P. C. K. Hung, Big Data Applications and Use Cases. Springer
International Publishing, 2016.
[13] V. K. Jain, Big Data and Hadoop. Khanna Publishing, 2017.
[14] D. DeRoos, P. C. Zikopoulos, R. B. Melnyk, B. Brown, and R. Coss,
Hadoop for dummies. 2014.
[15] D. Borthakur, “HDFS Architecture Guide,” 2013. [Online]. Available:
[Link]
[16] J. Dean and S. Ghemawat, “MapReduce: Simplified Data Processing on
Large Clusters,” Commun. ACM, vol. 51, no. 1, p. 107, 2008.
[17] K. Tannir, Optimizing Hadoop for MapReduce. Packt Publishing, 2014.
[18] T. Gunarathne, Hadoop MapReduce V2 Cookbook: Second Edition. Packt
Publishing, 2015.
[19] C. Lam, Hadoop in Action. Manning Publications, 2011.
[20] M. Frampton, Mastering apache Spark, no. 14. Packt Publishing, 2012.
[21] Acodemy, Spark: Learn Spark In A DAY! - The Ultimate Crash Course to
Learning the Basics of Spark In No Time. Acodemy, 2015.
[22] A. Singh, “An Introduction to Virtualization,” 2004. [Online]. Available:
[Link]
[23] H. D. Chirammal, P. Mukhedkar, and A. Vettathu, Mastering KVM
58
Virtualization, vol. 53, no. 9. Packt Publishing, 2016.
[24] M. Portnoy, Virtualization Essentials. Sybex, 2011.
[25] “KVM.” [Online]. Available: [Link]
[26] W. Ahmed, Proxmox Cookbook. Packt Publishing, 2015.
[27] “Proxmox VE.” [Online]. Available: [Link]
[28] R. Baclit, C. Sicam, P. Membrey, and J. Newbigin, Foundations of CentOS
Linux: Enterprise Linux On The Cheap. Apress, 2009.
[29] “BBVA/Spark-nenchmarks: Benchmarking suite for Apache Sparks.”
[Online]. Available: [Link]
59
LAMPIRAN
Lampiran 1 Proses Instalasi Proxmox VE
1. Unduh Proxmox
Pertama-tama kita pengguna harus mengunduh file iso Proxmox
VE di situs resmi Proxmox ([Link]/en/downloads).
2. Membuat Live USB Flash Disk Proxmox
File ISO dari Proxmox di boot kedalam LiveUSB menggunakan
software Etcher ([Link] .
3. Memulai Penginstalan
Pada tampilan pertama pilih install proxmox.
60
4. Pada End User License Agreement (EULA) pilih I Agree
61
5. Lalu pada target harddisk, pilih harddisk yang akan digunakan untuk
instalasi Proxmox lalu klik Next.
6. Pada Location and Time Zone Selection pada Country pilih Indonesia,
dan TimeZone yang sesuai. Klik Next
7. Pada Administration Password and Email Address masukkan password
dan email yang akan digunakan. Lalu klik next.
62
8. Pada Network Configuration, tentukan hostname, IP address dari host,
netmask, gateway, dan DNS server.
9. Tunggu instalasi selesai, lalu klik Reboot.
10. Pada tampilan awal, login dengan menggunakan user root dan password
yang sudah ditentukan sebelumnya.
63
11. Proxmox VE siap digunakan.
Lampiran 2 Instalasi Java Development Kit
1. Unduh JDK
Unduh tarball JDK versi 64 bit dari situs resminya :
([Link]
[Link])
2. Extract JDK
Ekstrak tarball JDK yang baru diunduh dan pindahkan ke dalam
direktori /usr/local. Dengan menggunakan perintah pada bash terminal:
tar xzf [Link];
mv jdk1.8.0_144 /usr/local/java
3. Instalasi JDK
Gunakan perintah alternatives untuk instalasi Java (login sebagai
root). Perintah yang digunakan antara lain :
64
alternatives --install /usr/bin/java java /usr/local/java 2;
alternatives --config java
Akan muncul tampilan seperti di bawah ini:
There are 3 programs which provide 'java'.
Selection Command
-----------------------------------------------
+1 /usr/local/java
Enter to keep the current selection[+], or type selection number:
Pilih pada direktori dimana Java tersimpan.
4. Atur JAR dan JAVAC.
Direkomendasikan untuk mengatur jar dan javac menggunakan
perintah alternatives:
alternatives --install /usr/bin/jar jar /usr/local/java/bin/jar 2;
alternatives --install /usr/bin/javac javac /usr/local/java/bin/javac 2;
alternatives --set jar /usr/local/java/bin/jar;
alternatives --set javac /usr/local/java/bin/javac;
5. Atur Java Environment Variables.
Tentukan Java Environment Variables dengan menggunakan
perintah:
export JAVA_HOME =/usr/local/java
export JRE_HOME=/usr/local/java/jre
65
export PATH=$PATH/usr/local/java/bin:/opt/jdk1.8.0_144/jre/bin
6. Verifikasi Java
Untuk mengecek apakah Java telah terpasang. Gunakan Perintah
berikut:
java –version;
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
Jika tampilan dari terminal seperti di atas, maka Java sudah
terpasang.
Lampiran 3 Instalasi Hadoop (Single Node dan Multi Node Cluster)
7. Pastikan Java telah terpasang.
8. Membuat User Hadoop
Buat sebuah user dengan nama hadoop dan tentukan password-nya
dengan menggunakan perintah (login sebagai root) :
# adduser hadoop;
# passwd hadoop;
Changing password for user hadoop.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
66
9. Mengubah hostname (Multi Node Cluster)
Ubah hostname dari seluruh node sesuai dengan perannya. Dengan
menggunakan perintah:
vi /etc/hostname;
Ubah localhost menjadi master (pada master node), slave1, dan
slave2 (pada slave node).
10. Lakukan reboot khusus (multi node cluster).
Lakukan reboot agar sistem melakukan perubahan hostname sesuai
yang ada pada /etc/hostname dengan menggunakan perintah:
Reboot
11. Menambahkan FQDN Mapping (khusus multi node cluster).
Ubah /etc/hosts pada seluruh seluruh node dan tambahkan kalimat
dibawah ini:
[Link] master
[Link] slave1
[Link] slave2
12. Konfigurasi Key Based Login.
Agar NameNode dan DataNode dapat saling berkomunikasi
melalui ssh tanpa harus login. Gunakan perintah di bawah ini:
- Pada Single Node Cluster
67
# su - hadoop
$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
- Pada Multi Node Cluster
# su - hadoop
$ ssh-keygen -t rsa
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@master
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@slave1
$ ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@slave2
$ chmod 0600 ~/.ssh/authorized_keys
$ exit
13. Unduh Hadoop.
Hadoop dapat diunduh pada situs resmi Apache Hadoop
([Link]
14. Ekstrak Hadoop
Ekstrak file Hadoop yang baru saja diunduh dan letakkan pada
direktori home dari user hadoop. Gunakan perintah:
tar -xzf [Link]
68
mv hadoop-2.7.3 hadoop
chown -R hadoop /home/hadoop/hadoop
cd /home/hadoop/hadoop
15. Konfigurasi Hadoop
Pertama-tama tentukan variabel hadoop pada sistem dengan cara
menambahkan variabel di bawah ini pada ~/.bashrc:
export HADOOP_HOME=/home/hadoop/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export
HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/nativ
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_OPTS=-[Link].preferIPv4Stack=true
export HADOOP_CONF_DIR=/opt/hadoop/hadoop/conf
Lalu terapkan perubahan tadi dengan menggunakan perintah:
source ~/.bashrc
Berikutnya, atur variabel JAVA_HOME pada $HADOOP_HOME/
etc/hadoop/[Link] sesuai dengan direktori JAVA yang telah
terpasang:
69
export JAVA_HOME=/usr/local/java/
Berikutnya tambahkan properti di bawah ini pada file [Link]
- Pada Single Node Cluster
<configuration>
<property>
<name>[Link]</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
- Pada Multi Node Cluster
<property>
<name>[Link]</name>
<value>hdfs://master:9000/</value>
</property>
<property>
<name>[Link]</name>
<value>false</value>
</property>
Berikutnyas tambahkan properti dibawah ini pada file [Link]
di dalam tag <configuration>:
- Pada Single Node Cluster
70
<property>
<name>[Link]</name>
<value>1</value>
<description>Default block replication. The actual
number of replications can be specified when the file is
created. The default is used if replication is not specified
in create time.</description>
</property>
<property>
<name>[Link]</name>
<value>[Link]
</value>
<description>Determines where on the local filesystem
the DFS name node should store the name table(fsimage).
If this is a comma-delimited list of directories then the
name table is replicated in all of the directories, for
redundancy.</description>
</property>
<property>
<name>[Link]</name>
<value>[Link]
value>
71
<description>Determines where on the local filesystem
an DFS data node should store its blocks. If this is a
comma-delimited list of directories, then data will be
stored in all named directories, typically on different
devices. Directories that do not exist are
ignored.></description>
</property>
- Pada Multi Node Cluster
o Master
<property>
<name>[Link]</name>
<value>1</value>
<description>Default block replication. The
actual number of replications can be specified when
the file is created. The default is used if replication is
not specified in create time.</description>
</property>
o Slave
<property>
<name>[Link]</name>
72
<value>1</value>
<description>Default block replication. The
actual number of replications can be specified when
the file is created. The default is used if replication is
not specified in create time.</description>
</property>
<property>
<name>[Link]</name>
<value>[Link]
datanode</value>
<description>Determines where on the local
filesystem an DFS data node should store its blocks.
If this is a comma-delimited list of directories, then
data will be stored in all named directories, typically
on different devices. Directories that do not exist are
ignored.></description>
</property>
Berikutnya, tambahkan properti di bawah ini pada [Link]:
<property>
<name>[Link]</name>
<value>yarn</value>
73
<description>The runtime framework for executing
MapReduce jobs. Can be one of local, classic or
yarn.</description>
</property>
Berikutnya, tambahkan properti di bawah ini pada [Link]
<property>
<name>[Link]-services</name>
<value>mapreduce_shuffle</value>
<description>The auxiliary service name</description>
</property>
<property>
<name>[Link]
ass</name>
<value>[Link]</value>
<description>The auxiliary service class to
use</description>
</property>
16. Menentukan hostname sebagai masternode dan slavenode.
Untuk menentukan hostname mana yang akan berperan sebagai
master dan slave, ubah file hadoop/etc/hadoop/slaves menjadi :
$ vi hadoop/etc/hadoop/slaves
74
slave1
slave2
Dan ubah hadoop/etc/hadoop/master (jika tidak ada, buatlah
sebuah file dengan nama master) menjadi:
$~ vi hadoop/etc/hadoop/master
master
17. Format NameNode
Format NameNode pada master dengan menggunakan perintah:
hdfs namenode -format
18. Jalankan HDFS dan YARN
Jalankan HDFS dan YARN pada cluster dengan menggunakan
perintah (pada master node):
sbin/[Link];
sbin/[Link]
Lampiran 4 Hasil Pengukuran Pengujian Wordcount
A. Single Node Cluster
a. Ukuran Data Lebih Kecil dari Memori
i. Hadoop MapReduce
Ukuran Data
Percobaan
512 MB 1 GB 2 GB 4GB 8 GB
75
1
41 79 133 263 521
2
40 78 134 267 528
3
42 77 132 217 526
4
43 76 135 262 521
5
41 78 134 261 525
Rata-Rata
41.4 77.6 133.6 254 524.2
ii. Apache Spark
Ukuran Data
Percobaan
512 MB 1 GB 2 GB 4GB 8 GB
1
7 14 28 52 102
2
7 13 27 56 102
3
8 14 28 54 104
4
8 14 28 54 102
5
7 14 27 55 102
Rata-Rata
7.4 13.8 27.6 54.2 102.4
b. Ukuran Data Lebih Besar dari Memori
i. Hadoop MapReduce
Ukuran Data
Percobaan
32 MB 40 GB 48 GB 56GB 64 GB
1
1403 1914 2341 2744 3641
2
1401 1909 2340 2741 3646
76
3
1404 1913 2342 2742 3649
4
1402 1914 2343 2743 3651
5
1401 1914 2342 2747 3649
Rata-Rata
1402.2 1912.8 2341.6 2743.4 3647.2
ii. Apache Spark
Ukuran Data
Percobaan
32 MB 40 GB 48 GB 56GB 64 GB
1
413 508 612 713 831
2
422 510 620 711 830
3
413 504 623 709 834
4
413 501 610 709 835
5
410 517 604 719 830
Rata-Rata
414.2 508 613.8 712.2 832
B. Multi Node Cluster
a. Ukuran Data Lebih Kecil dari Memori
i. Hadoop MapReduce
Ukuran Data
Percobaan
512 MB 1 GB 2 GB 4GB 8 GB
1
41 73 128 210 421
2
42 75 130 209 423
3
42 72 124 213 418
77
4
41 75 129 214 419
5
41 72 126 216 419
Rata-Rata
41.4 73.4 127.4 212.4 420
ii. Apache Spark
Ukuran Data
Percobaan
512 MB 1 GB 2 GB 4GB 8 GB
1
10 17 33 132 452
2
9 17 33 122 472
3
9 18 33 110 295
4
10 18 34 120 268
5
10 17 32 107 265
Rata-Rata
9.6 17.4 33 118.2 350.4
b. Ukuran Data Lebih Besar dari Memori
i. Hadoop MapReduce
Ukuran Data
Percobaan
32 MB 40 GB 48 GB 56GB 64 GB
1
2300 2553 3054 3544 3992
2
2311 2548 3050 3542 3990
3
2316 2547 3049 3539 3987
4
2307 2559 3059 3540 3989
5
2301 2560 3058 3548 3999
78
Rata-Rata
2307 2553.4 3054 3542.6 3991.4
ii. Apache Spark
Ukuran Data
Percobaan
32 MB 40 GB 48 GB 56GB 64 GB
1
918 1052 1236 1476 1739
2
919 1048 1234 1469 1730
3
917 1059 1233 1467 1729
4
915 1052 1236 1481 1740
5
918 1046 1240 1490 1747
Rata-Rata
917.4 1051.4 1235.8 1476.6 1737
Lampiran 5 Hasil Pengukuran Pengujian TestDFSIO
A. Single Node Cluster
a. Hadoop MapReduce
Throughput (MB/s)
Percobaan
WRITE 4GB WRITE8GB READ 4GB READ 8GB
1 49.42 24.98 690.375 21.58
2 52.23 36.57 654.627 29.5
3 49.62 38.12 656.515 27.66
4 46.99 35.59 720.492 28.54
5 51.56 35.53 674.128 26.85
Rata-rata 49.96 34.16 679.23 26.83
79
b. Apache Spark
Percobaan Throughput (MB/s)
WRITE 4GB WRITE8GB READ 4GB READ 8GB
1 215.77 141.818 787.995 975.122
2 180.171 140.664 832.858 983.551
3 184.33 149.451 960.825 907.198
4 192.662 140.763 935.801 989.252
5 196.602 139.821 893.932 895.202
Rata-rata 193.91 142.50 882.28 950.07
B. Multi Node Cluster
a. Hadoop MapReduce
Throughput (MB/s)
Percobaan
WRITE 4GB WRITE8GB READ 4GB READ 8GB
1 215.77 141.818 787.995 975.122
2 180.171 140.664 832.858 983.551
3 184.33 149.451 960.825 907.198
4 192.662 140.763 935.801 989.252
5 196.602 139.821 893.932 895.202
Rata-rata 193.91 142.50 882.28 950.07
b. Apache Spark
Throughput (MB/s)
Percobaan
WRITE 4GB WRITE8GB READ 4GB READ 8GB
1 215.77 141.818 787.995 975.122
2 180.171 140.664 832.858 983.551
3 184.33 149.451 960.825 907.198
80
4 192.662 140.763 935.801 989.252
5 196.602 139.821 893.932 895.202
Rata-rata 193.91 142.50 882.28 950.07
81
82