Anda di halaman 1dari 113

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, M.IT, P.hD 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.,M.IT 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, M.IT, P.hD 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 file.txt 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-

examples.2.7.3.jar 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 =

sc.textFile("hdfs://localhost:900

0/user/hadoop/input/file.txt");

41
val counts = textFile.flatMap(line => line.split("

")) .map(word => (word, 1)).reduceByKey(_ + _);

counts.saveAsTextFile("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-

test.jar -write --nrFiles 4 --filesize [1GB/2GB] --

resFile ~hadoop/results-write-hadoop.txt

b. Pada Apache Spark

$ $SPARK_HOME/bin/spark-submit

--master spark://hadoop:7077

--class

com.bbva.spark.benchmarks.dfsio.TestDFSIO

./spark-benchmarks-master/dfsio/target/ scala-

2.11/sp

ark-benchmarks-dfsio-0.1.0-with-

dependencies.jar write --numFiles 4 --fileSize

[1GB/2GB] –outputDir

hdfs://master:9000/user/hadoop/dfsio --resFile

~hado

op/results-write-spark.txt

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-

test.jar -read --nrFiles 4 --filesize [1GB/2GB] --

resFile ~hadoop/results-read-hadoop.txt

b. Pada Apache Spark

$ $SPARK_HOME/bin/spark-submit

--master spark://hadoop:7077

--class

com.bbva.spark.benchmarks.dfsio.TestDFSIO

./spark-benchmarks-master/dfsio/target/ scala-

2.11/sp

ark-benchmarks-dfsio-0.1.0-with-

dependencies.jar read --numFiles 4 --fileSize

[1GB/2GB] –inputDir

hdfs://master:9000/user/hadoop/dfsio --resFile

~hado

45
op/results-read-spark.txt

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: http://hadoop.apache.org.

[4] “Apache SparkTM - Lightning-Fast Cluster Computing.” [Online].

Available: http://spark.apache.org/.

[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:

https://hadoop.apache.org/docs/r1.2.1/hdfs_design.html.

[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:

http://www.kernelthread.com/publications/virtualization/.

[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: https://www.linux-kvm.org/page/Main_Page.

[26] W. Ahmed, Proxmox Cookbook. Packt Publishing, 2015.

[27] “Proxmox VE.” [Online]. Available: https://pve.proxmox.com.

[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: https://github.com/BBVA/spark-benchmarks.

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 (www.proxmox.com/en/downloads).

2. Membuat Live USB Flash Disk Proxmox

File ISO dari Proxmox di boot kedalam LiveUSB menggunakan

software Etcher (https://etcher.io) .

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 :

(http://www.oracle.com/technetwork/java/javase/downloads/jdk8-

downloads-2133151.html)

2. Extract JDK

Ekstrak tarball JDK yang baru diunduh dan pindahkan ke dalam

direktori /usr/local. Dengan menggunakan perintah pada bash terminal:

tar xzf jdk-8u144-linux-x46.tar;

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:

10.134.11.102 master

10.134.11.103 slave1

10.134.11.104 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

(http://hadoop.apache.org/releases.html).

14. Ekstrak Hadoop

Ekstrak file Hadoop yang baru saja diunduh dan letakkan pada

direktori home dari user hadoop. Gunakan perintah:

tar -xzf hadoop-2.7.3.tar.gz

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=-Djava.net.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/hadoop-env.sh sesuai dengan direktori JAVA yang telah

terpasang:

69
export JAVA_HOME=/usr/local/java/

Berikutnya tambahkan properti di bawah ini pada file core-site.xml

- Pada Single Node Cluster

<configuration>

<property>

<name>fs.default.name</name>

<value>hdfs://localhost:9000</value>

</property>

</configuration>

- Pada Multi Node Cluster

<property>

<name>fs.default.name</name>

<value>hdfs://master:9000/</value>

</property>

<property>

<name>dfs.permissions</name>

<value>false</value>

</property>

Berikutnyas tambahkan properti dibawah ini pada file hdfs-site.xml

di dalam tag <configuration>:

- Pada Single Node Cluster

70
<property>

<name>dfs.replication</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>dfs.namenode.name.dir</name>

<value>file:///home/hadoop/infrahadoop/hdfs/namenode

</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>dfs.datanode.name.dir</name>

<value>file:///home/hadoop/infrahadoop/hdfs/datanode</

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>dfs.replication</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>dfs.replication</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>dfs.datanode.name.dir</name>

<value>file:///home/hadoop/infrahadoop/hdfs/

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 mapred-site.xml:

<property>

<name>mapreduce.framework.name</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 yarn-site.xml

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

<description>The auxiliary service name</description>

</property>

<property>

<name>yarn.nodemanager.auxservices.mapreduce.shuffle.cl

ass</name>

<value>org.apache.hadoop.mapred.ShuffleHandler</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/start-dfs.sh;

sbin/start-yarn.sh

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

Anda mungkin juga menyukai