Anda di halaman 1dari 146

PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

IMPLEMENTASI K-MEANS CLUSTERING PADA LINGKUNGAN BIG


DATA MENGGUNAKAN MODEL PEMROGRAMAN MAPREDUCE

SKRIPSI

Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana


Komputer Program Studi Teknik Informatika

Oleh :
Engelbertus Vione
125314112

PROGRAM STUDI TEKNIK INFORMATIKA


JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2016

i
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

K-MEANS CLUSTERING IMPLEMENTATION IN BIG DATA


ENVIRONMENT WITH MAPREDUCE PROGRAMMING MODEL

A THESIS

Presented as Partial Fulfillment of Requirements to Obtain Sarjana


Komputer Degree in Informatics Engineering Department

By :
Engelbertus Vione
125314112

INFORMATICS ENGINEERING STUDY PROGRAM


INFORMATICS ENGINEERING DEPARTMENT
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2016

i
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

HALAMAN PERSETUJUAN PEMBIMBING

SKRIPSI

IMPLEMENTASI K-MEANS CLUSTERING PADA LINGKUNGAN


BIG DATA MENGGUNAKAN MODEL PEMROGRAMAN MAPREDUCE

Oleh:

Engelbertus Vione

125314112

Telah disetujui oleh :

Pembimbing,

J.B. Budi Darmawan, S.T., M.Sc. Tanggal: …………………………….

iii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

HALAMAN PENGESAHAN

IMPLEMENTASI K-MEANS CLUSTERING PADA LINGKUNGAN


BIG DATA MENGGUNAKAN MODEL PEMROGRAMAN MAPREDUCE

Dipersiapkan dan ditulis oleh


: ENGELBERTUS VIONE
NIM : 125314112

Telah dipertahankan di depan panitia penguji


pada tanggal 9 Januari 2017
dan dinyatakan memenuhi syarat

Susunan Panitia Penguji


Nama Lengkap Tanda Tangan

Ketua : Puspaningtyas Sanjoyo Adi, S.T., M.T. ............................

Sekretaris : Drs. Haris Sriwindono, M.Kom ...........................

Anggota : J.B. Budi Darmawan, S.T., M.Sc. ............................

Yogyakarta, ………………………….
Fakultas Sains dan Teknologi
Universitas Sanata Dharma

Dekan,

Sudi Mungkasi, S.Si.,M.Math.Sc.,Ph.D.

iv
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

MOTTO

I have no special talents. I am only passionately curious. – Albert Einstein

v
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

PERNYATAAN KEASLIAN KARYA

Saya menyatakan dengan sesungguhnya bahwa di dalam skripsi yang saya tulis

ini tidak memuat karya atau bagian karya orang lain, kecuali yang telah

disebutkan dalam kutipan dan daftar pustaka, sebagaimana layaknya karya

ilmiah.

Yogyakarta, ...................................

Penulis

Engelbertus Vione
vi
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

LEMBARAN PERNYATAAN PERSETUJUAN PUBLIKASI


KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS

Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata


Dharma: Nama : Engelbertus Vione
NIM : 125314112
Demi pengembangan ilmu pengetahuan, saya memberikan
kepada Perpustakaan Universitas Sanata Dharma karya ilmiah
yang berjudul:
IMPLEMENTASI KMEANS CLUSTERING PADA LINGKUNGAN
BIG DATA MENGGUNAKAN MODEL PEMROGRAMAN
MAPREDUCE
Beserta perangkat yang diperlukan (bila ada). Dengan demikian saya
memberikan kepada perpustakaan Universitas Sanata Dharma hak untuk
menyimpan, mengalihkan dalam bentuk media lain, mengelolanya dalam
bentuk pangkalan data, mendistribusikan secara terbatas, dan
mempublikasikannya di internet atau media lain untuk kepentingan akademis
tanpa perlu meminta ijin dari saya maupun memberikan royalti kepada saya
selama tetap mencantumkan nama saya sebagai penulis.
Demikian pernyataan ini saya buat dengan sebenarnya.

Dibuat di Yogyakarta
Pada tanggal........................................…

Yang Menyatakan

Engelbertus Vione
PLAGIAT MERUPAKAN TINDAKAN TIDAK

ABSTRAK

Perkembangan data yang sangat pesat membuat teknologi big data


menjadi inovasi baru dalam menyimpan data. Apache Hadoop merupakan
framework big data yang mampu menyimpan data tanpa memperhatikan jenis
data. Apache Hadoop menggunakan model pemrograman MapReduce dalam
menganalisa data. Apache Mahout merupakan library analisa data yang
mampu menjalankan komputasi berbasis pemrograman MapReduce. Apache
Mahout telah menyediakan komputasi penambangan data yang dapat digunakan
dalam menganalisa data. KMeans merupakan metode penambangan data yang
dapat mengelompokkan data berdasarkan kemiripan sifat.
Penelitian ini menggunakan 4 komputer klaster yang berjalan pada
jaringan lokal. Apache Hadoop yang berjalan pada sistem Linux dibagi menjadi 1
master slave dan 3 slave node. Master node mengatur komputasi MapReduce.
Slave node bertugas sebagai media penyimpan data. Hasil KMeans dengan
menggunakan library Mahout diuji dengan hasil dari metode manual. Hasil
pengujian menunjukkan bahwa library Mahout mampu memberikan hasil analisa
dengan benar. Sedangkan pengujian unjuk kerja dilakukan dengan menjalankan
KMeans sebanyak 10 kali pada jumlah slave node yang berbeda. Kesimpulan
unjuk kerja sistem Hadoop dilakukan dengan mencari nilai ratarata dari
percobaanpercobaan tersebut. Hasil unjuk kerja menunjukkan bahwa semakin
banyak jumlah slave node maka semakin cepat proses komputasi.

Kata Kunci: Big Data, Hadoop, MapReduce, Mahout, Data Mining, K

Means

vi
PLAGIAT MERUPAKAN TINDAKAN TIDAK

ABSTRACT

The growth of massive data makes big data technology as a new


innovation in storing data. Apache Hadoop is a big data framework that able to
stroing data without considering the variety of data. Apache Hadoop uses
MapReduce programming model to analyze data. Apache Mahout is a data
analyze library that able to analyze data in MapReduce programming model.
Apache Mahout has provided data mining method as analyze data algorithm. K
Means is a data mining algorithm that can group item data into specific cluster
based on similarity measure.
This research is developed in 4 computer cluster which is clustered in
local network. Apache Hadoop that is adopted in Linux system is divided into 1
master node and 3 slave nodes. Master node handles MapReduce. Slave nodes
roles as storage system. The output of KMeans Mahout library is evaluated with
manual calculation. The evaluation result describe that Mahout library can
analyze data well. The performance of Hadoop system is evaluated by running 10
times of K Means with Mahout library in difference quantity of slave node. The
conclusion is taken by calculate the mean value of each 10 trainings. The
performance evaluation result explained that increasing the number of slave
node can make time execution of computation to be faster.

Keyword : Big Data, Hadoop, MapReduce, Mahout, Data Mining, K


Means

ix
PLAGIAT MERUPAKAN TINDAKAN TIDAK

KATA PENGANTAR

Puji dan syukur penulis penjatkan kepada Tuhan Yang Maha Esa, telah
memberikan berkat dan karunia sehingga penulis mampu menyelesaikan tugas
akhir ini dengan baik.

Penulis menyadari selama proses pengerjaan tugas akhir telah


mendapatkan banyak bantuan dari berbagai pihak, baik berupa dukungan, kritik,
saran, dan doa yang mampu menjadi semangat dan motivasi demi terselesainya
tugas akhir ini. Sehingga, pada kesempatan ini penulis akan menyampaikan
ucapan terima kasih kepada:

1. Tuhan Yang Maha Esa yang senantiasa memberikan limpahan berkat dan
karuniaNya, serta menyertai penulis dalam mengerjakan tugas akhir ini.

2. Sudi Mungkasi, S.Si., M.Math.Sc., Ph.D. selaku Dekan Fakultas Sains dan
Teknologi Universitas Sanata Dharma Yogyakarta.

3. JB. Budi Darmawan S.T., M.Sc. selaku dosen pembimbing tugas akhir
yang telah dengan sabar dan penuh perhatian membimbing penulis
dalam menyusun tugas akhir.

4. Dr. Anastasia Rita Widiarti M.Kom selaku Ketua Program Studi Teknik
Informatika yang selalu memberikan dukungan dan perhatian serta saran
kepada mahasiswa tugas akhir dalam pengerjaan tugas akhir.

5. Kedua orang tua tercinta Bapak Siprianus Madu dan Ibu Ni Made Partini
yang selalu mendoakan, memotivasi, menasihati, dan memberikan
dukungan baik moral maupun materi kepada penulis.

6. Seluruh dosen program pendidikan Teknik Informatika atas ajaran dan


didikan selama perkuliahan, serta pengalamanpengalaman yang
memotivasi bagi penulis.

7. Temanteman program pendidikan Teknik Informatika angkatan 2012


Universitas Sanata Dharma, terima kasih kebersamaan atas dukungan
yang kalian berikan.

x
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI

8. Lorentina Elsi dan Yustina Rosa yang telah menjadi teman berbagi
pengalaman selama mengerjakan tugas akhir ini.

9. Terima kasih kepada semua pihak yang tidak dapat penulis sebutkan satu
persatu yang mendukung dan memotivasi penulis baik secara langsung
maupun secara tidak langsung.

Penulis menyadari bahwa masih adanya kekurangan dalam penulisan


laporan tugas akhir ini. Kritk dan saran sangat penulis harapkan untuk menjadi
motivasi dalam berkarya lagi. Akhir kata, penulis berharap laporan tugas akhir
bisa berguna bagi perkembangan ilmu pengetahun dan wawasan pembaca.

Yogyakarta, ……………………

Penulis

Engelbertus Vione

xi
PLAGIAT MERUPAKAN TINDAKAN TIDAK

DAFTAR ISI

HALAMAN JUDUL........................................................................................i
TITLE PAGE.....................................................................................................ii
HALAMAN PERSETUJUAN PEMBIMBING....................................................iii
HALAMAN PENGESAHAN.........................................................................iv
MOTTO.............................................................................................................v
PERNYATAAN KEASLIAN KARYA............................................................vi
LEMBARAN PERNYATAAN PERSETUJUAN PUBLIKASI
KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS............................vii
ABSTRAK..................................................................................................viii
ABSTRACT......................................................................................................ix
KATA PENGANTAR.....................................................................................x
DAFTAR ISI....................................................................................................xii
DAFTAR TABEL.........................................................................................xv
DAFTAR GAMBAR....................................................................................xvi
DAFTAR LAMPIRAN..................................................................................xviii
BAB 1 PENDAHULUAN..................................................................................1
1.1 Latar Belakang..................................................................................................1
1.2 Rumusan Masalah............................................................................................2
1.3 Tujuan................................................................................................................2
1.4 Manfaat..............................................................................................................2
1.5 Batasan Masalah...............................................................................................3
1.6 Metodologi Penelitian......................................................................................3
1.7 Sistematika Penulisan......................................................................................4
BAB 2 LANDASAN TEORI..............................................................................6
2.1 Penambangan Data..........................................................................................6
2.1.1 Definisi Penambangan Data..................................................................6
2.1.2 Clustering................................................................................................7
2.2 Big Data...........................................................................................................10

xii
PLAGIAT MERUPAKAN TINDAKAN TIDAK

2.2.1 Definisi Big Data...................................................................................10


2.3 Hadoop............................................................................................................11
2.3.1 Definisi Hadoop....................................................................................11
2.3.2 Hadoop Distributed File System..............................................................12
2.3.3 Yarn.......................................................................................................14
2.4 MapReduce......................................................................................................15
2.4.1 Definisi MapReduce..............................................................................15
2.4.2 Proses MapReduce....................................................................................17
2.5 Apache Mahout...............................................................................................19
2.5.1 Konsep MapReduce Pada Library Mahout Berdasarkan Algoritma K
Means....................................................................................................20
2.5.2 Metode Menjalankan Library Mahout.....................................................22
BAB 3 ANALISA PERANCANGAN...............................................................24
3.1 Gambaran Penelitian...........................................................................................24
3.1.1 Data........................................................................................................25
3.1.2 KMeans Mahout....................................................................................26
3.2 Kebutuhan Sistem...............................................................................................27
3.3 Skema Sistem Big Data...................................................................................30
3.3.1 Skema Single Node Cluster..................................................................30
3.3.2 Skema Multi Node Cluster...................................................................31
BAB 4 IMPLEMENTASI................................................................................33
4.1 Perancangan Sistem Big Data.............................................................................33
4.1.1 Konfigurasi Single Node Cluster..........................................................33
4.1.2 Konfigurasi Multi Node Cluster...........................................................42
4.2 Implementasi Library Mahout Pada Sistem Hadoop........................................45
4.2.1 Install Maven.........................................................................................45
4.2.2 Install Eclipse........................................................................................46
4.2.3 Install Mahout...........................................................................................46
4.3 Implementasi Metode KMeans Menggunakan Library Mahout.......................47
4.3.1 Preprocessing.......................................................................................47
4.3.2 Proses Menjalankan Komputasi KMeans................................................50

xiii
PLAGIAT MERUPAKAN TINDAKAN TIDAK

BAB 5 ANALISA HASIL................................................................................56


5.1 Analisa Implementasi KMeans Menggunakan Library Mahout Pada
Lingkungan Big Data.....................................................................................56
5.2 Analisa Unjuk Kerja Implementasi KMeans Menggunakan Library Mahout
Pada Lingkungan Big Data............................................................................58
BAB 6 PENUTUP...........................................................................................60
6.1 Kesimpulan.....................................................................................................60
6.2 Saran................................................................................................................60
DAFTAR PUSTAKA........................................................................................61
LAMPIRANLAMPIRAN..................................................................................64

xiv
PLAGIAT MERUPAKAN TINDAKAN TIDAK

DAFTAR TABEL

Tabel 2.1: Metode Menjalankan Library Mahout berdasarkan algoritma


KMeans menggunakan Command Line (Mahout, 2016).....................23
Tabel 3.1: Informasi data liver disorder.................................................................26
Tabel 3.2: Spesifikasi Komputer Cluster................................................................28
Tabel 5.1: Perbandingan hasil penghitungan manual dan library Mahout..........58
Tabel 5.2: Unjuk kerja implementasi KMeans menggunakan library
mahout pada lingkungan big data.........................................................59

xv
PLAGIAT MERUPAKAN TINDAKAN TIDAK

DAFTAR GAMBAR

Gambar 2.1: Visualisasi KMeans (The Glowing Python, 2012)........................9


Gambar 2.2: Distribusi chunk data (Yahoo!, 2014).............................................12
Gambar 2.3: Yarn berfungsi sebagai ResourceManager pada sistem
Hadoop..........................................................................................15
Gambar 2.4: Proses Task Mapper dan Task Reducer (Yahoo!, 2014)................16
Gambar 2.5: Proses Mapping (Yahoo!, 2014)......................................................18
Gambar 2.6: Proses Reducing (Yahoo!, 2014).....................................................18
Gambar 2.7: Proses Shuffle(Yahoo!, 2014)..........................................................19
Gambar 2.8: Konsep MapReduce pada library Mahout berdasarkan
algoritma KMeans (Vishnupriya N. et al., 2015)...........................22
Gambar 3.1: Flowchart pelitian............................................................................24
Gambar 3.2: Skema single node cluster...............................................................31
Gambar 3.3: Skema multi node cluster................................................................32
Gambar 4.1: Menjalankan metode seqdumper pada command line..................48
Gambar 4.2: Membuat direktori data dan direktori centroid pada hdfs............49
Gambar 4.3: Menyimpan sebuah file data trining dari sistem lokal
ke dalam HDFS.............................................................................49
Gambar 4.4: Menyimpan sebuah file centroid pada sistem lokal
ke dalam HDFS.............................................................................50
Gambar 4.5: Menjalankan KMeans menggunakan library Mahout....................51
Gambar 4.6: Akhir dari iterasi KMeans................................................................51
Gambar 4.7: Perintah $hdfs dfs ls output.............................................................52
Gambar 4.8: Hasil proses KMeans pada direktori /user/hduser/output...............52
Gambar 4.9: Summary berisi ringkasan informasi DataNode............................53
Gambar 4.10: Informasi DataNode pada aplikasi NameNode Web Interface......54
Gambar 4.11: Informasi direktori /user/hduser pada HDFS................................54
Gambar 4.12: Informasi direktori /user/hduser/data..................................................55
Gambar 4.13: Informasi file sampleseqfile.............................................................55

xvi
PLAGIAT MERUPAKAN TINDAKAN TIDAK

Gambar 5.1: Analisa hasil KMeans menggunakan clusterdump.........................57


Gambar 5.2: Beberapa hasil analisa cluster data dengan identitas VL27..........57
Gambar 5.3: Beberapa hasil analisa cluster data dengan identitas VL49..........57
Gambar 5.4: Diagram hasil unjuk keja sistem Hadoop..................................59

xvi
PLAGIAT MERUPAKAN TINDAKAN TIDAK

DAFTAR LAMPIRAN

Lampiran 1 : Install Java.....................................................................................64


Lampiran 2 : Konfigurasi Group Dan User Sistem Hadoop.................................66
Lampiran 3 : Melakukan Disable IPv6..............................................................68
Lampiran 4 : Install Hadoop..................................................................................68
Lampiran 5 : Konfigurasi Environment Hadoop Single Node Cluster................70
Lampiran 6 : Konfigurasi Hostname, Hosts, & SSH..........................................74
Lampiran 7 : Identifikasi Master Node & Slave Node......................................75
Lampiran 8 : Konfigurasi Environment Hadoop Multi Node Cluster.................76
Lampiran 9 : Install maven....................................................................................84
Lampiran 10 : Install Mahout...................................................................................85
Lampiran 11 : Source code kelas KmeansDriver.java............................................86
Lampiran 12 : Source code kelas ClusterIterator.java............................................93
Lampiran 13 : Source code Kelas CIMapper.java...............................................98
Lampiran 14 : Source code Kelas CIReducer.java............................................100
Lampiran 15 : Source code Kelas VectorDataCreator.java..................................102
Lampiran 16 : Source code Kelas VectorCentroidCreator.java...........................104
Lampiran 17 : Source code file coresite.xml.........................................................106
Lampiran 18 : Source code file mapredsite.xml...................................................107
Lampiran 19 : Source code file hdfssite.xml.........................................................108
Lampiran 20 : Source code file yarnsite.xml........................................................109
Lampiran 21 : Hasil kalkulasi manual...................................................................110
Lampiran 22 : Hasil KMeans dengan menggunakan library Mahout..................118

xvi
PLAGIAT MERUPAKAN TINDAKAN TIDAK

BAB 1 PENDAHULUAN

1.1 Latar Belakang

Perkembangan data yang sangat pesat membuat organisasi mencari metode

untuk menyimpan dan mengolah data. Teknologi big data menjadi solusi untuk

menyimpan data dan juga mampu mengolah data tersebut. Hadoop merupakan

sebuah framework yang dapat menyimpan data dalam skala besar tanpa

memperhatikan struktur dari data.

Koleksi data yang besar dapat diolah dan dianalisis untuk mendapatkan

nilai atatu value pada data. Hasil analisa data tersebut berupa informasi yang dapat

dijadikan pengambilan kebijakan pada organisasi. Hadoop menggunakan konsep

pemrograman MapReduce untuk mengolah data menjadi informasi. MapReduce

mampu melakukan komputasi secara paralel dan terdistribusi pada sistem

Hadoop.

Mahout merupakan library yang menggunakan konsep pemrograman

MapReduce dan dapat beradaptasi pada sistem Hadoop. Sehingga, Mahout dapat

digunakan untuk menganalisa data dengan ukuran yang besar. Mahout

menyediakan komputasi data mining atau penambangan data untuk menganalisa

data. KMeans merupakan salah satu algoritma yang disediakan oleh Mahout. K

Means menganalisa data dengan mengelompokkan data berdasarkan kemiripan

sifat.

1
PLAGIAT MERUPAKAN TINDAKAN TIDAK

1.2 Rumusan Masalah

Berikut beberapa rumusan masalah yang dapat dijadikan acuan dalam

melakukan penelititan :

1) Bagaimana mengimplementasikan KMeans clustering pada lingkungan


big data dengan menggunakan library Mahout berbasis model
pemrograman MapReduce?
2) Bagaimana unjuk kerja implementasi KMeans clustering pada lingkungan
big data?

1.3 Tujuan

Berdasarkan rumusanrumusan masalah, maka tujuan dari penelitian dapat

dijabarkan sebagai berikut:

1) Mengimplementasikan KMeans clustering pada lingkungan big data


dengan menggunakan library Mahout berbasis model pemrograman
MapReduce.
2) Mengetahui unjuk kerja implementasi KMeans clustering pada
lingkungan big data.

1.4 Manfaat

Manfaat yang dapat diperoleh dari penelitian ini ialah sebagai berikut:

1) Sebagai referensi oleh instansi dan organisasi tertentu yang hendak


menyimpan dan menganalisa koleksi data yang besar.
2) Sebagai referensi bagi penelitian yang berkaitan dengan tema big data dan
penambangan data.
PLAGIAT MERUPAKAN TINDAKAN TIDAK

1.5 Batasan Masalah

Batasan masalah dalam penelitian ini ialah sebagai berikut:

1) Koleksi data diperoleh dari repositori UCI Machine Learning dengan


alamat https://archive.ics.uci.edu/ml/data sets/liver+Disorders.
2) Format koleksi data ialah .CSV
3) Teknologi big data yang digunakan ialah Apache Hadoop versi 2.6.0.
4) Model pemrograman yang digunakan ialah MapReduce.
5) Library MapReduce yang digunakan ialah Apache Mahout yang berbasis
bahasa pemrograman Java.
6) Proses coding menggunakan Eclipse IDE.
7) Proses compile library Mahout menggunakan Apache Maven.
8) Proses Monitoring Hadoop Distributed File System dilakukan pada
browser Mozilla Firefox.
9) Sistem operasi yang digunakan ialah Ubuntu versi 14.04.

1.6 Metodologi Penelitian

Metodologi penelitian akan dijabarkan sebagai berikut:

1. Studi pustaka

Studi pustaka menjelaskan teoriteori yang digunakan dalam penelitian.

Adapun teoriteori yang digunakan ialah data mining, KMeans clustering,

big data, Hadoop, Hadoop Distributed File System (HDFS), Yarn,

MapReduce, dan Mahout.

2. Perancangan sistem

Perancangan sistem meliputi segala perangkat lunak dan perangkat keras

yang dibutuhkan dalam mengembangkan sistem.

3. Luaran sistem
PLAGIAT MERUPAKAN TINDAKAN TIDAK

Luaran sistem ini ialah sebuah sistem big data dengan menggunakan

menggunakan framework Hadoop. Sistem Hadoop ini berjalan pada

jaringan lokal. Library Mahout yang berjalan pada sistem Hadoop

digunakan untuk menganalisa koleksi data pada sistem Hadoop.

4. Evaluasi

Evaluasi sistem ini akan dibagi kedalam 2 bagian yakni:

a) Membandingkan hasil komputasi KMeans dengan menggunakan

library Mahout dengan menggunakan penghitungan manual. Hasil

pengujian memperlihatkan kecocokan centroid dari hasil komputasi

dengan menggunakan library Mahout berdasarkan hasil dari

penghitungan manual.

b) Menguji unjuk kerja implementasi KMeans clustering pada

lingkungan big data. Pengujian dilakukan dengan menjalankan

komputasi KMeans menggunakan library Mahout sebanyak 10 kali

pada jumlah slave node yang berbeda. Hasil pengujian

memperlihatkan ratarata waktu eksekusi komputasi KMeans pada

jumlah slave node yang berbeda.

1.7 Sistematika Penulisan

Tugas akhir ini akan disusun ke dalam 6 bab dengan sistematika

penulisan sebagai berikut:

BAB I : PENDAHULUAN
PLAGIAT MERUPAKAN TINDAKAN TIDAK

Pendahuluan berisi tentang latar belakang, rumusan masalah, tujuan,

manfaat, batasan masalah, metode penelitian dan sistematika penulisan.

BAB II : LANDASAN TEORI

Tinjauan pustaka dan dasar teori menjelaskan teoriteori yang digunakan

dalam menyusun tugas akhir ini.

BAB III : ANALISA PERANCANGAN

Analisa perancangan menjelaskan skema perancangan implementasi K

Means pada lingkungan big data dengan menggunakan library Mahout berbasis

konsep pemrograman MapReduce. Bagian ini menjelaskan pula mediamedia

yang akan digunakan untuk mengembangkan sistem

BAB IV : IMPLEMENTASI

Implementasi menjelaskan tahaptahap pengembangan sistem big data.

Bagian ini menjelaskan pula mengenai implementasi library Mahout pada sistem

Hadoop.

BAB V : ANALISA HASIL

Analisa hasil perancangan dan pengembangan sistem dibahas secara

lengkap.

BAB VI : KESIMPULAN DAN SARAN

Kesimpulan dari penelitian akan dijelaskan pada bab ini dan saran dari

peneliti untuk penelitian lebih lanjut.


PLAGIAT MERUPAKAN TINDAKAN TIDAK

BAB 2 LANDASAN TEORI

Bab ini membahas teoriteori yang berkaitan dengan penulisan tugas akhir

ini. Teoriteori tersebut yakni penambangan data, metode clustering, KMeans

sebagai salah satu algoritma clustering, big data, Hadoop, Hadoop Distributed

File System (HDFS), MapReduce, dan Apache Mahout.

2.1 Penambangan Data

2.1.1 Definisi Penambangan Data

Perkembangan data menjadi sebuah hal yang lumrah dewasa ini. Data

pada komputer yang terhubung melalui jaringan internet mampu mencapai

ukuran terabyte (TB) bahkan pentabyte (PB). Perkembangan data ini

menghasilkan data mentah. Sehingga organisasi tertentu berusaha untuk mencari

informasi tersembunyi pada data yang kemudian dapat digunakan untuk

mengembangkan organisasi mereka.

Penambangan data atau data mining sering disebut Knowledge Discovery

in Database (KDD) adalah kegiatan yang meliputi pengumpulan, pemakaian data

historis untuk menemukan keteraturan, pola atau hubungan dalam set data

berukuran besar. Hasil data mining ini bisa dipakai untuk memperbaiki

pengambilan keputusan di masa depan (Santosa, 2007).

6
PLAGIAT MERUPAKAN TINDAKAN TIDAK

2.1.2 Clustering

Clustering merupakan salah satu metode pada penambangan data. Tujuan

utama dari metode clustering ialah mengelompokkan sejumlah objek data ke

dalam sebuah cluster atau grup. Sebuah objek pada sebuah cluster memiliki

kemiripan yang sama dengan objek lain dan sebuah objek memiliki perbedaan

dengan objek pada cluster lain. Clustering menggunakan teknik unsupervised

learning yang digunakan untuk mengelompokkan data atau objek ke dalam

kelompok tertentu tanpa adanya label cluster sebelumnya. Teknik ini baik

digunakan pada koleksi data yang tidak memiliki label sebelumnya. Sedangkan

untuk data yang memiliki label, teknik ini dapat dijadikan sebagai pembanding

antara hasil clustering dengan label sebenarnya. Sehingga diketahui tingkat

akurasi pada metode clustering tersebut. Teknik yang membutuhkan data label

disebut supervised learning. Metode yang digunakan dalam menentukan

kemiripan antar objek ialah dengan menghitung jarak terpendek. Salah satu

metode untuk menghitung jarak terpendek ialah Euclidean Distance.

Dalam matematika, Euclidean Distance adalah jarak antara dua titik yang

dapat diukur menggunakan formula pythagoras. Euclidean Distance sering

disebut sebagai dengan vector geometri yang memiliki panjang (magnitude) dan

arah (direction). Sedangkan ruang vektor adalah sebuah struktur matematika

yang dibentuk oleh sekumpulan vektor. Vektorvektor tersebut dapat

ditambahkan dikalikan dengan bilangan real dan lainlain (Prasetya, 2013).

Jarak antar vektor atau panjang vektor dapat didefinisikan sebagai berikut
PLAGIAT MERUPAKAN TINDAKAN TIDAK

‖A‖=√ X 12+Y 12 dan ‖B‖=√ X 22+Y 22

Sedangkan untuk menghitung kedua jarak antara kedua vektor tersebut

ialah sebagai berikut: d ( A¯ , ¯B)=√( X 1− X 2)2+(Y 1−Y 2)2

2.1.2.1 KMeans

KMeans merupakan salah satu algoritma penambangan data yang

menerapkan metode clustering. Jika diberikan sekumpulan data X = {x1, x2, ...,

xn} dimana xi = (xi1, xi2, ..., xin) adalah vector, maka algoritma KMeans akan

mempartisi x dalam k buah cluster (Prasetya, 2013). Sehingga proses awal dalam

menggunakan algoritma ini ialah dengan menentukan jumlah cluster atau K

terlebih dahulu. Pengelompokkan objek berdasarkan ukuran jarak terpendek

dengan pusat cluster atau centroid (Han J. et al., 2000).

Algoritma KMeans dapat diterangkan melalui pseudocode berikut

(Santosa, 2007):

1) Langkah pertama ialah memilih jumlah cluster atau K.

2) Inisialisasi K pusat kelompok atau pemilihan nilai awal centroid dilakukan

dengan cara random.

3) Penentuan kemiripan antar objek dilakukan dengan menghitung jarang

terdekat antara objek. Demikian untuk penentuan suatu objek dengan

centroid tertentu. Tahap ini menghitung jarak suatu objek dengan

centroid. Jika suatu objek memiliki jarak terpendek dengan centroid A

maka objek tersebut akan dikelompokkan pada kelompok centroid A.


PLAGIAT MERUPAKAN TINDAKAN TIDAK

4) Penentuan centroid baru kembali dilakukan dengan cara menghitung nilai

ratarata dari semua objek pada kelompok tertentu.

5) Objek pada setiap cluster dikelompokkan berdasarkan centroid baru.

Langkah 3 dan 4 kembali dilakukan sampai nilai centroid tidak

mengalami perubahan.

Gambar 2.1 memperlihatkan masingmasing objek dikelompokkan

berdasarkan kemiripan dengan centroid. Centroid ditandai dengan dengan objek

data berwarna ungu. Sedangkan kemiripan objek ditandai dengan warna yang

sama.

Gambar 2.1: Visualisasi KMeans (The Glowing Python, 2012).


PLAGIAT MERUPAKAN TINDAKAN TIDAK

2.2 Big Data

2.2.1 Definisi Big Data

Big data dapat diartikan sebagai sebuah koleksi atau kumpulan data yang

besar dan kompleks. Berdasarkan perkembangannya, big data memiliki 3 dasar

definisi yakni volume, velocity, dan variety (Rathi R. et al., 2014).

1) Volume

Volume menjelaskan bahwa big data memiliki ukuran data yang besar.

Kumpulan data seperti data kesehatan merupakan jenis data yang sesuai

dengan konsep big data karena data tersebut terus berkembang (Rathi R. et

al., 2014). Teknologi big data hadir untuk menyimpan datadata yang

belum diketahui nilai bisnisnya dan dalam volume besar, platform

berbasis big data seperti Hadoop memberikan solusi (Data Science

Indonesia, 2015).

2) Variety

Sebuah organisasi mampu menghasilkan data yang berbeda. Antar

departemen tertentu mungkin memiliki sistem basisdata yang berbeda

sehingga mampu menghasilkan jenis data yang berbeda. Data yang

dihasilkan dapat berupa data terstruktur, data semistruktur, dan data tidak

terstruktur. Data terstruktur merupakan data yang tersimpan dalam kolom

dan baris seperti data dengan format CSV (Comma Separated value). Data

semistruktur merupakan jenis data yang dapat dihasilkan dari sistem

database contohnya log data. Sedangkan data tidak terstruktur biasanya


PLAGIAT MERUPAKAN TINDAKAN TIDAK

berupa data teks lainnya, data gambar, data suara, dan data video (Ronk, J.

2014).

3) Velocity

Data velocity atau kecepatan data berbanding lurus dengan volume data.

Data tidak hanya datang dalam jumlah besar, tetapi juga dalam tempo

yang lebih singkat dan bahkan ada yang realtime. Hal ini menjadi

tantangan pada teknologi big data (Data Science Indonesia, 2015).

2.3 Hadoop

2.3.1 Definisi Hadoop

Apache Hadoop software library adalah sebuah framework yang sesuai

digunakan untuk proses terdistribusi dari kumpulan data yang besar pada

komputer cluster dengan modelmodel pemrograman yang sederhana (Apache,

2015). Hadoop merupakan open source framework yang dikembangkan oleh

Apache Software Foundation. Hadoop digunakan untuk memproses kumpulan

data yang besar dalam sebuah server paralel komputer (Rathi R. et al., 2014).

Hadoop dikembangkan untuk memproses skalabilitas data web atau webscale

data yang mampu mendistribusikan data dengan kapasitas ukuran yang besar.

Hadoop menggunakan komputer server paralel atau multinode cluster (Yahoo!,

2014).
PLAGIAT MERUPAKAN TINDAKAN TIDAK

2.3.2 Hadoop Distributed File System

Pada cluster Hadoop, data didistribusikan ke seluruh node. Hadoop

Distributed File System (HDFS) akan membagi data yang besar ke dalam chunk

yang dikelola oleh setiap node pada cluster. Setiap chunk akan direplikasi pada

beberapa mesin komputer. Sehingga jika sebuah komputer atau node mengalami

kegagalan (failure) maka data masih dapat diakses pada komputer lain. Gambar

2.2 menunjukkan data didistribusikan pada seluruh node saat proses load (load

time). Meskipun file chunk direplikasi dan didistribusikan ke setiap mesin

komputer, namun chunk tersebut memiliki namespace yang tunggal.

Gambar 2.2: Distribusi chunk data (Yahoo!, 2014).

Data pada Hadoop programming framework menggunakan konsep record

oriented. Setiap input file akan dipecah dalam baris atau format lain yang spesifik

pada aplikasi. Setiap proses berjalan pada sebuah node dalam keseluruhan cluster
PLAGIAT MERUPAKAN TINDAKAN TIDAK

kemudian akan memproses subset dari record tersebut. Hadoop kemudian

menjadwalkan prosesproses tersebut di berdasarkan kedekatan lokasi data/

record menggunakan konsep kerja dari sistem file terdistribusi. Sejak filefile

tersebar pada sistem file terdistribusi sebagai chunk, setiap proses komputasi

yang berjalan pada sebuah node beroperasi pada sebuah subset dari data. Data

yang dioperasikan oleh sebuah node dipilih berdasarkan locality dari node: data

paling banyak dibaca dari disk lokal langsung ke CPU, untuk mengurangi

ketegangan bandwidth jaringan dan mencegah transfer jaringan yang tidak perlu.

Locality data yang tinggi ini menjadi sebuah keunggulan pada Hadoop (Yahoo!,

2014).

HDFS memiliki 2 tipe operasi node yakni service NameNode pada master

node dan service DataNode pada slave node. NameNode bertugas dalam

mengatur namespace sistem file. NameNode mengatur susunan sistem file dan

metadata untuk semua file dan direktori pada susunan tersebut. Informasi tersebut

disimpan pada local disk kedalam 2 bentuk file yakni namespase image dan

edit log. NameNode juga mengetahui proses kerja dari DataNode, seperti letak

lokasi dari block data (chunk). Namun NameNode tidak bertugas dalam

menyimpan data tersebut, DataNode berfungsi sebagai tempat kerja dari sistem

file. DataNode bertugas menyimpan dan menerima block data ketika

mendapatkan perintah dari pengguna atau NameNode. DataNode melaporkan

kepada NameNode secara periodik tentang daftar block data yang disimpan.

Tanpa NameNode, HDFS tidak dapat digunakan. Jika NameNode

dihilangkan, maka semua file pada HDFS akan hilang karena sistem tidak
PLAGIAT MERUPAKAN TINDAKAN TIDAK

membaca susunan block data pada DataNode. HDFS memiliki sebuah service

Secondary NameNode. Tugas utama dari secondary NameNode ialah

menggabungkan namespace image dengan edit log untuk mencegah edit log

berukuran sangat besar. Secondary NameNode membutuhkan memory yang

hampir sama besar dengan NameNode. Secondary NameNode membuat

gabungan file tersebut agar dapat digunakan ketika NameNode mengalami

kegagalan (White, 2015).

2.3.3 Yarn

Apache Yarn (Yet Another Resource Negotiator) merupakan sistem

manajemen sumber daya atau ResourceManager pada sistem Hadoop cluster.

Gambar 2.3 menjelaskan bahwa Yarn memegang peran yang sangat penting pada

sistem Hadoop. Komponen utama dari Yarn ialah service ResourceManager dan

NodeManager. ResourceManager bertugas mengatur semua sumber daya

pemrosesan data pada sistem Hadoop. ResourceManager bertugas menjadwalan

sumber daya dalam menjalankan aplikasi. Secara teknik, Yarn bertugas dalam

menangani permintaan sumber daya, penjadwalan permintaan, dan kemudian

menetapkan sumber daya untuk aplikasi yang meminta. Adapun

ResourceManager berjalan pada master node.


PLAGIAT MERUPAKAN TINDAKAN TIDAK

Gambar 2.3: Yarn berfungsi sebagai ResourceManager pada sistem Hadoop

Sedangkan NodeManager berjalan pada slave node. NodeManager betugas

mencari sumber daya yang memungkinkan untuk memproses data pada slave

node dan mengirimkan laporan aktivitas secara periodik kepada

ResourceManager. Sumber data proses pada sistem Hadoop membutuhkan

potongan bitesize yang disebut containers. Container adalah sebuah koleksi dari

semua sumber daya yang diperlukan untuk menjalankan aplikasi seperti CPU

cores, memory, network bandwidth, dan ruang pada disk. Container bersifat umum

atau generic sehingga dapat menjalankan berbagai jenis model komputasi, selama

sumber daya yang diperlukan cukup untuk menjalankan model komputasi

tersebut. Semua proses Container yang berjalan pada slave node dimonitor oleh

service NodeManager pada slave node (deRoos, D. et al., 2014).

2.4 MapReduce

2.4.1 Definisi MapReduce

Hadoop mengurangin komunikasi yang dapat dikerjakan oleh sebuah

proses. Setiap record diproses oleh sebuah task yang terisolasi dari task yang lain.

Model pemrograman yang digunakan untuk manajemen data disebut

MapReduce.
PLAGIAT MERUPAKAN TINDAKAN TIDAK

Pada MapReduce, record diproses dalam sebuah task yang disebut Mapping.

output dari Mapping task akan dibawa dan diproses pada task kedua yang disebut

sebagai Reducing, dimana hasil dari Mapping yang berbeda akan digabung

(Yahoo!, 2014).

Gambar 2.4 menunjukkan task Mapper dan task Reducer berjalan pada

nodenode dimana record dari data telah tersedia. Nodenode yang terpisah dalam

cluster Hadoop masih berkomunikasi antara satu dengan yang lain. Pecahan data

diberi tag atau tanda dengan sebuah key yang bertujuan menginformasikan

Hadoop bagaimana mengirim data (bit of information) ke node tujuan. Hadoop

secara internal mengelola semua transfer data dan masalah topologi cluster

(Yahoo!, 2014).

Gambar 2.4: Proses Task Mapper dan Task Reducer (Yahoo!, 2014).
PLAGIAT MERUPAKAN TINDAKAN TIDAK

2.4.2 Proses MapReduce

Fase pertama dari program MapReduce disebut mapping. Sebuah list

elemen data melalui sebuah fungsi yang disebut Mapper yang akan

mentransformasikan setiap elemen individual ke elemen data output. Fungsi

Mapper tidak memodifikasi list input string tetapi menghasilkan sebuah string

baru yang menjadi bagian dari sebuah list output yang baru (Yahoo!, 2014).

Setiap element data output akan dipecah ke dalam sebuah pasangan data key dan

value (DeZyre, 2015). Key berfungsi sebagai identitas unik pada data, sedangkan

value merupakan nilai dari data itu sendiri.

Gambar 2.5 menunjukkan task Mapping membuat sebuah list output yang

baru pada seluruh list data elemen input. Reducing memungkinkan pengumpulan

value bersama. Fungsi Reducer menerima sebuah iterator dari value masukkan

(input value) dari sebuah list input. Kemudian Reducer task menggabungkan

nilainilai ini bersama. Reducer task mengembalikan nilai output tunggal.

Reducing sering digunakan untuk menghasilkan data summary atau mengubah

sebuah volume data yang besar menjadi sebuah summary yang lebih kecil. Salah

satu contoh dengan mengunakan operasi “+” sebagai sebuah fungsi reducing

untuk mengembalikan nilai jumlah list dari value input.


PLAGIAT MERUPAKAN TINDAKAN TIDAK

Gambar 2.5: Proses Mapping (Yahoo!, 2014).

Gambar 2.6 menunjukkan Proses reducing sebuah iterasi list pada seluruh

value masukkan untuk menghasilkan sebuah kumpulan value sebagai output.

Gambar 2.6: Proses Reducing (Yahoo!, 2014).

Dalam MapReduce, tidak ada value yang berdiri sendiri. Setiap value

memiliki key yang berasosiasi. key bertugas untuk mengidentifikasi value. Fungsi

mapping dan reducing tidak hanya menerima value, tetapi pasangan key dan

value. Sebuah fungsi reducing berfungsi untuk mengubah sebuah list dari value

yang besar ke dalam sebuah (atau beberapa) value output. Semua output value

tidak mengalami proses reduce bersamaan. Tetapi semua value yang memiliki key
PLAGIAT MERUPAKAN TINDAKAN TIDAK

sama yang akan mendapatkan proses reduce bersama (Yahoo!, 2014). Proses ini

biasa disebut shuffle task. Hal ini dikarenakan semua value yang memiliki key

yang sama akan dikelompokkan sebelum melalui proses reduce (Voruganti, S.,

2014).

Gambar 2.7 memperlihatkan bahwa warna berbeda mereprentasikan key

berbeda. Semua value dengan key sama akan dipresentasikan ke dalam sebuah

task reduce tunggal.

Gambar 2.7: Proses Shuffle(Yahoo!, 2014).

2.5 Apache Mahout

Mahout memiliki tiga kualitas yang dapat dijelaskan sebagai berikut.

Pertama, Mahout merupakan library machine learning dari Apache. Mahout

memiliki dasar komputasi yakni recommender engine, clustering, dan

classification. Selain itu, Apache Mahout bersifat scalable. Apache Mahout

dapat digunakan sebagai pilihan alat machine learning ketika koleksi data yang

akan diproses sangat besar yang ukurannya tidak dapat disimpan dalam sebuah

komputer. Mahout ditulis dengan menggunakan bahasa Java dan beberapa dari
PLAGIAT MERUPAKAN TINDAKAN TIDAK

Mahout dikembangkan pada proyek komputasi Apache’s Hadoop Distributed.

Oleh karena Mahout merupakan sebuah library Java. Sehingga library ini tidak

menyediakan sebuah antarmuka pengguna atau user interface, prepackaged

server, dan sebuah installer. Mahout merupakan sebuah framework yang cocok

digunakan dan diadaptasikan oleh pengembang.

Mahout menempatkan skalabilitas pada prioritas yang paling tinggi.

Metode machine learning yang mutakhir diterapkan pada level skalabititas.

Library Mahout yang bersifat open source atau sumber terbuka digunakan pada

lingkungan Hadoop, sehingga Mahout mampu menggunakan konsep komputasi

MapReduce (Owen, S. et al., 2012).

2.5.1 Konsep MapReduce Pada Library Mahout Berdasarkan Algoritma


K-Means

Berdasarkan penelitian Vishnupriya, N. dan Francis, S. (2015), proses

algorima KMeans clustering pada library Mahout yang menggunakan konsep

pemrograman MapReduce dapat dijabarkan ke dalam beberapa fase:

1) Initial

Data yang diinputkan dapat dipecah ke dalam beberapa sub koleksi data.

Daftar sub koleksi data akan mengalami perubahan format <Key, Value>.

Daftar sub koleksi data tersebut akan diinputkan ke dalam funsi map.

Proses selanjutnya ialah mengenali inisial centroid. Adapun dalam

penelitian ini data centroid yang diinput secara manual. Sedangkan dalam
PLAGIAT MERUPAKAN TINDAKAN TIDAK

penelitian Vishnupriya, N. et al. (2015), inisial centroid dipilih secara

random pada koleksi data.

2) Mapper

Pada fase Mapper, proses dilanjutkan dengan menghitung jarak antara

setiap item data dengan K centroid. Penghitungan jarak terdekat

dilakukan pada selutuh item data. Luaran dari penghitungan ialah item

data dengan format <ai, zj>. ai merupakan pusat dari kelompok

(cluster) data zj.

3) Reducer

Proses dilanjutkan pada pada fase Reducer. Proses pertama yang

dilakukan ialah membaca luaran item data <ai, zj> dari fase Mapper.

Selanjutnya, setiap item data dikumpulkan menjadi sebuah record. Proses

selanjutkan menghitung nilai ratarata dari setiap item data. Luaran dari

proses akan digunakan sebagai nilai centroid baru. Selanjutnya,

sistem akan menghitung nilai centroid baru dengan centroid sebelumnya

pada cluster atau kelompok yang sama. Jika nilai centroid tersebut lebih

kecil daripada nilai threshold maka dapat disimpulkan bahwa jumlah

iterasi telah mencaapi maksimal. Algoritma tersebut akan dihentikan.

Sedangkan, centroid klaster yang baru akan digunakan untuk

memperbaharui nilai centroid sebelumnya, Berdasarkan penelitian

Esteves, M. R. et al. (2011), nilai konvergen threshold akan menentukan

kondisi berhentinya proses K Means. Jika dalam iterasi tertentu, pusat

kluster tidak berubah melebihi threshold, maka proses iterasi

dihentikan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK

22

Berdasarkan penelitian Vishnupriya, N. dan Francis, S. (2015), maka

konsep KMeans pada library Mahout dengan menggunakan model pemrograman

MapReduce dapat visualisasikan pada gambar 2.8.

Gambar 2.8: Konsep MapReduce pada library Mahout berdasarkan algoritma K


Means (Vishnupriya N. et al., 2015)

2.5.2 Metode Menjalankan Library Mahout

Berdasarkan website resmi Mahout (2016), library Mahout dapat berjalan

pada sistem lokal atau pun pada Hadoop Distributed File System (HDFS). Metode

yang digunakan dalam menjalankan library Mahout ialah melalui command line.

Metode yang digunakan untuk menjalankan perintah KMeans ialah dengan

menjalankan perintah $mahout kmeans pada command line lalu diikuti dengan

parameter pada yang tertera pada tabel 2.1.


PLAGIAT MERUPAKAN TINDAKAN TIDAK

23

Tabel 2.1: Metode Menjalankan Library Mahout berdasarkan algoritma K-


Means menggunakan Command Line (Mahout, 2016)

Perintah Penjelasan
input atau i Merupakan alamat file input yang harus berupa
Sequence File
clusters atau c Merupakan alamat input file centroid yang harus berupa
sequence file
output atau o Merupakan alamat file output yang harus berupa
Sequence File
distanceMeasure atau Algoritma pengukuran jarak.
dm
convergenceDelta Nilai konvergen merupakan nilai untuk menetukan
atau cd proses iterasi berhenti. Secara default, convergen delta
bernilai 0.5
maxIter (x) maxIter Jumlah maksimal iterasi
maxRed (r) maxRed Jumlah Task Reducin. Secara default, bernilai 2
k (k) k Nilai jumlah kelompok data atau cluster
overwrite (ow) Jika direktori ada, maka perintah ini akan menghapus
direktori tersebut, sebelum menjalankan perintah atau
Job.
help (h) Menampilkan informasi help
clustering (cl) Jika job berjalan maka jalankan proses clustering
setelah iterasi berjalan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK

BAB 3 ANALISA PERANCANGAN

Bab ini akan menjabarkan tentang mekanisme perancangan sistem yang

dibagi dalam gambaran penetilian, kebutuhan sistem, dan skema sistem big data.

3.1 Gambaran Penelitian

Gambar 3.1: Flowchart pelitian

Gambar 3.1 menunjukkan gambaran proses pada penelitian yang

divisualisasikan dalam diagram flowchart.

24
PLAGIAT MERUPAKAN TINDAKAN TIDAK

3.1.1 Data

Peneliti menggunakan sumber data atau dataset dari bank data UCI

Machine Learning mengenai liver Disorders Data Set. Berikut beberapa informasi

mengenai data Liver Disorders:

1. Judul data ialah Liver Diorders

2. Beberapa informasi dataset yakni:

a. Data diciptakan oleh BUPA Medical Research Ltd.

b. Penyumbang data ialah Richard S. Forsyth, 8 Grosvenor Avenue,

Mapperley Park, Nottingham NG3 5DX, 0602621676.

c. Data dibuat pada tanggal 15 Mei 1990.

3. Lima variabel pertama ialah hasil tes darah yang dianggap sensitif untuk

penyakit liver disorder atau kelainan hati yang kemudian konsumsi

alkohol menjadi salah satu penyebab. Setiap baris pada file bupa.data

merupakan hasil uji coba pada seseorang pria.

4. Baris data berjumlah 345 baris.

5. Atribut data berjumlah 7.

6. Beberapa informasi dari atribut data:


PLAGIAT MERUPAKAN TINDAKAN TIDAK

Tabel 3.1: Informasi data liver disorder

No Atribut Keterangan
1. mcv mean corpuscular volume yaitu ratarata volume
korpuskuler darah
2. alkphos alkaline phosphotase yaitu kadar alkali fosfat dalam
darah
3. sgpt alamine aminotransferase yaitu kadar alamin
aminotransferase dalam darah
4. sgot aspartate aminotransferase yaitu kadar aspartat
aminotrasferase dalam darah
5. gammagt gammaglutamyl transpeptidase yaitu kadar gamma
glutamil transpeptidase dalam darah
6. drink jumlah minum minuman beralkohol per hari
dalam satuan halfpint (257 ml per satuan)
7. selector Attribut ini adalah atribut class yang nantinya
menjadi sumber penghitungan akurasi. Bernilai 1
atau 2. Jika 1 maka instance tersebut menderita
penyakit hati. Jika 2 maka instance tersebut normal.

7. Data liver disorder tidak memiliki missing value atau hilangnya sebuah

item data.

3.1.2 K-Means Mahout

Metode KMeans clustering digunakan dalam menganalisis data liver

disorder karena mampu untuk mengelompokkan data berdasarkan kemiripan

sifat dengan baik. Sehingga dapat dipastikan bahwa sebuh item data pada sebuh

kelompok atau cluster memiliki kemiripan yang sama dengan item data lain pada

kelompok yang sama. Sedangkan sebuah item data pada kelompok tertentu

memiliki perbedaan sifat dengan item data pada kelompok yang lain.
PLAGIAT MERUPAKAN TINDAKAN TIDAK

Beberapa hal yang harus diperhatikan dalam KMeans Mahout yakni:

1) Data training yang akan menjadi input harus berformat sequence. File

Sequence merupakan format file yang dapat dibaca oleh library Apache

Mahout. File Sequence sendiri akan memiliki struktur format key dan

value.

2) Data centroid juga harus berformat sequence.

3) Hasil atau output dari proses KMeans akan berupa sebuah direktori yang

berisi dari proses iterasi dari KMeans.

1) Pengukuran kesamaan sifat menggunakan rumus jarak terpendek atau

similarity measure. Adapun dalam penelitian ini similarity measure yang

digunakan ialah Euclidean Distance,

2) Convergen threshold merupakan nilai yang telah ditetapkan untuk

menentukan bahwa iterasi pada proses KMeans berhenti.

3) Jumlah iterasi yang maksimal yang dapat dikerjakan oleh sistem.

4) Jumlah kelompok atau nilai K dari sistem KMeans. Adapun dalam

penelitian ini, jumlah K yang akan digunakan ialah 2.

3.2 Kebutuhan Sistem

Alat yang dibutuhkan untuk mengembangkan sistem ialah:

1. Perangkat

a) Spesifikasi komputer
PLAGIAT MERUPAKAN TINDAKAN TIDAK

Tabel 3.2: Spesifikasi Komputer Cluster

Jenis Node Processor Memory Hard Drive Network


Master Node Intel® 4GB 500GB RTL8111/8168/8411
Core(TM) PCI Express Gigabit
i3 CPU Ethernet Controller
530 @
2.93GHz
Slave1 Node Intel® 4GB 500GB RTL8111/8168/8411
Core(TM) PCI Express Gigabit
i3 CPU Ethernet Controller
530 @
2.93GHz
Slave2 Node Intel® 4GB 500GB RTL8111/8168/8411
Core(TM) PCI Express Gigabit
i3 CPU Ethernet Controller
530 @
2.93GHz
Slave3 Node Intel® 4GB 500GB RTL8111/8168/8411
Core(TM) PCI Express Gigabit
i3 CPU Ethernet Controller
530 @
2.93GHz

b) Perangkat keras lainnya yakni

1) Kabel RJ45 berjumlah 4

2) Router DLink DES1024D berjumlah 1.

2. Perangkat Lunak

Perangkat lunak yang digunakan ialah sebagai berikut:

kerneln

b) Sun Java
PLAGIAT MERUPAKAN TINDAKAN TIDAK

2
a) Ubuntu 14.04

Ubuntu merupakan sistem operasi yang menggunakan Linux sebagai

kerneln

b) Sun Java
PLAGIAT MERUPAKAN TINDAKAN TIDAK

Hadoop memerlukan Java agar dapat berjalan pada sistem Ubuntu.

Sedangkan versi Java yang dibutuhkan Hadoop ialah diatas versi 5.

Penelitian ini menggunakan Java versi 7.

c) SSH (Secure Shell)

Sistem big data ini menggunakan SSH akses untuk mengatur seluruh

node. Cara mengaturnya ialah dengan melakukan remote sebuah slave

node pada sebuah master node.

d) Apache Hadoop 2.6.0

Versi Hadoop yang digunakan ialah 2.6.0. Versi ini sudah mendukung

fitur Yarn. Yarn merupakan bagian penting dalam Hadoop selain

daripada Hadoop Distributed File System (HDFS), dan MapReduce.

Yarn berfungsi untuk mengatur penggunaan resource atau sumber

daya dari komputer cluster.

e) Apache Mahout 0.10.1

Versi Mahout yang digunakan ialah 0.10.1.

f) Apache Maven 3.3.9

Apache maven merupakan library yang digunakan untuk proses build

dan compile library Mahout.

g) Eclipse Kepler

Eclipse merupakan IDE yang berfungsi untuk menulis dan mengelola

sumber kode atau source code dari Apache Mahout.

h) LibreOffice Calc
PLAGIAT MERUPAKAN TINDAKAN TIDAK

LibreOffice Calc merupakan aplikasi perkantoran dari LibreOffice

yang umum digunakan untuk mengolah data angka yang ditampilkan

dalam bentuk spreadsheet.

i) Editor nano dan pluma

Editor nano dan pluma berfungsi untuk menampilkan data. Namun,

editor nano hanya dapat berjalan pada terminal atau command line.

j) MATE Terminal

Aplikasi MATE Terminal digunakan sebagai command line untuk

menjalankan perintahperintah sistem Linux dan mengeksekusi

aplikasi atau paket program pada sistem Linux termasuk perintah dari

Hadoop dan Mahout.

3.3 Skema Sistem Big Data

Berdasarkan proses implementasinya, sistem big data pada mulanya

dikembangkan dalam masingmasing node. Implementasi sistem big data pada

sebuah komputer disebut single node cluster. Setelah sistem big data

diimplementasikan pada masingmasing node, maka langkah selanjutnya ialah

menyatukan selutuh node menjadi satu. Proses ini disebut multi node cluster.

3.3.1 Skema Single Node Cluster

Skema single node cluster yang memperlihatkan sistem Hadoop yang

hanya diimplementasikan pada sebuah komputer dapat dilihat pada gambar 3.2.

Komputer tunggal tersebut bertindak sebagai master node dan slave node.

Sehingga service yang dijalankan pada node ini ialah NameNode, DataNode,
PLAGIAT MERUPAKAN TINDAKAN TIDAK

31

SecondaryNamenode, ResourceManager, dan NodeManager. Router digunakan

untuk membuat koneksi jaringan lokal. Sehingga setiap komputer tunggal (single

node) memiliki IP Address. Adapun setiap komputer memiliki IP Address yang

tergabung dalam satu jaringan. Sehingga ketika setiap komputer memiliki IP

Address yang saling terhubung dalam jaringan komputer, maka setiap komputer

dapat dikonfigurasi ke dalam multi node cluster.

Gambar 3.2: Skema


single node cluster

3.3.2 Skema Multi Node Cluster

Skema multi node cluster yang memperlihatkan sistem Hadoop yang

diimplementasikan pada multi komputer dapat dilihat pada gambar 3.3.

Perancangan multi node cluster menggunakan 4 komputer yang terdiri dari 1


PLAGIAT MERUPAKAN TINDAKAN TIDAK

32

master node dan 3 slave node. Router digunakan untuk membuat koneksi jaringan

lokal. Router bertindak sabagai gateway pada sistem jaringan, yang berfungsi

untuk menghubungkan sebuah node dengan node yang lain. IP Address digunakan

untuk memberi alamat pada masingmasing node. Master node akan menjalankan

service NameNode, SecondaryNamenode dan ResourceManager. Sedangkan

slave node akan menjalankan service DataNode dan NodeManager.

Gambar 3.3: Skema multi node cluster


PLAGIAT MERUPAKAN TINDAKAN TIDAK

BAB 4 IMPLEMENTASI

Bab ini menjabarkan implementasi perancangan sistem big data yakni

konfigurasi single node cluster dan multi node cluster, serta implementasi

library Mahout pada sistem Hadoop yang terdiri dari proses install Maven, IDE

Eclipse, dan Mahout.

4.1 Perancangan Sistem Big Data

Perancangan sistem Hadoop dimulai dengan melakukan konfigurasi pada

masingmasing komputer, setelah itu proses dilanjutkan dengan menggabungkan

semua node menjadi satu.

4.1.1 Konfigurasi Single Node Cluster

Konfigurasi single node cluster diterapkan pada seluruh komputer cluster.

Oleh karena itu, konfigurasi ini akan diimplementasikan pada 4 komputer cluster

yaitu 1 master node dan 3 slave node. Secara teknis, proses konfigurasi

menerapkan metode yang sama. Adapun beberapa paket aplikasi yang diinstall

berada pada direktori /home/mnode/big\ data\ applikasi.

4.1.1.1 Install Java

Paket Java dibutuhkan karena framework Hadoop dan library Mahout

berjalan diatas lingkungan Java. Screenshot proses install Java dapat dilihat pada

bagian Lampiran 1. Adapun berikut merupakan proses menginstall Java :

1. Melakukan proses extract file pada file arsip Java

33
PLAGIAT MERUPAKAN TINDAKAN TIDAK

Perintah yang digunakan untuk melakukan proses extract file Java ialah tar

xzf filepaketJava.tar.gz. tar merupakan command atau perintah yang

digunakan untuk melakukan extract file pada arsip file yang berekstensi

.tar.gz. Parameter x atau excludefrom merupakan perintah

mengecualikan susunan pola pada file. Parameter f atau –file

menunjukkan ekstrak data dilakukan pada file arsip atau archive file.

Sedangkan parameter z atau uncompress digunakan untuk perintah

uncompress atau ekstrak file.

2. Membuat direktori java pada direktori /usr/local

Tujuan dari langkah ini ialah untuk membuat direktori khusus untuk

menyimpan paket Java pada sistem Linux Ubuntu. Perintah yang

digunakan ialah $sudo mkdir /usr/local/java. Mkdir merupakan perintah

untuk membuat sebuah atau beberap direktori. Perintah sudo menunjukkan

bahwa perintah harus dilakukan pada sisi administrator pada sistem Linux

Ubuntu.

3. Memindahkan hasil exctract file arsip java ke direktori /usr/local/java

Perintah yang digunakan untuk memindahkan sebuah sebuah file atau

direktori ialah mv. Sehingga format perintah yang digunakan ialah $sudo

mv nama_file_arsip direktori_tujuan. Untuk mengecek keberhasilan

memindahkan file ke dalam direktori maka dapat menggunakan perintah

“ls”. Perintah ls digunakan untuk melihat daftar file dari sebuah direktori.

4. Konfigurasi environment variable Java pada file /etc/profile


PLAGIAT MERUPAKAN TINDAKAN TIDAK

Proses ini harus dilakukan karena proses install java menggunakan source

code java. Variabel JAVA_HOME merupakan variable yang

menunjukkan direktori tempat menyimpan source code java. Perintah

export digunakan untuk mengenali Java pada sistem Ubuntu.

5. Uji coba environment Java

echo merupakan perintah yang digunakan untuk menampilkan sebuah data

suatu variable. Sehingga echo dapat digunakan untuk menampilkan data

variabel JAVA_HOME yang merupakan lokasi Java pada sistem Linux.

4.1.1.2 Konfigurasi Group Dan User Sistem Hadoop

User merupakan pengguna sistem Ubuntu yang telah terdaftar. Sedangkan

group merupakan sebuh wadah untuk mengelompokkan user atau pengguna pada

sistem Ubuntu. Implementasi ini menggunakan group dan user khusus untuk

memudahkan dalam membangun sistem Hadoop. Screenshot langkahlangkah

konfigurasi group dan user sistem Hadoop dapat dilihat pada Lampiran 2. Berikut

penjelasan langkahlangkah konfigurasi group dan user atau pengguna dari sistem

Hadoop:

1. Menambah group Hadoop

Addgroup merupakan perintah unntuk menambahkan group pada sistem

Ubuntu. Untuk menjalankan perintahkan addgroup membutuhkan ijin

eksekusi dari administrator sistem Ubuntu. Oleh karena itu, perintah

addgroup membutuhkan awalan perintah sudo. Sedangkan Hadoop

merupakan nama group yang ditambahkan pada sistem Ubuntu.


PLAGIAT MERUPAKAN TINDAKAN TIDAK

2. Menambah user hduser pada group hadoop

Adduser merupakan perintah untuk menambahkan pengguna pada sistem

Ubuntu. Perintah ingroup merupakan perintah untuk menambahkan

pengguna secara langsung pada sebuah group. Sehingga perintah $sudo

adduser –ingroup hadoop hduser merupakan perintah untuk menambahkan

pengguna hduser pada group hadoop. Pengguna hduser sendiri akan

secara khusus bertugas untuk menjalankan aktivitas pada sistem hadoop.

3. Menginstall opensshserver

Protokol SSH digunakan untuk melakukan manajemen komputer cluster.

Dengan menggunakan protokol SSH, maka administrator dapat mudah

dalam memanajemen komputer atau node lain dengan melakukan

monitoring. Paket yang digunakan dalam mengintal SSH ialah openssh

server.

4. Login sebagai pengguna hduser

Langkah ini dimaksudkan bahwa proses konfigurasi selanjutnya

dilakukan pada host hduser.

5. Membuat kunci RSA atau RSA Key untuk pengguna hduser

RSA Key berfungsi untuk dapat melakukan akses pada sebuah node

dengan menggunakan protokol SSH. Penelitian ini membuat kunci RSA

dengan password yang kosong. Hal ini dilakukan dengan maksud agar

ketika mengakses suatu node, sistem tidak meminta password. Cara ini

sebenarnya tidak direkomendasikan karena dapat membahayakan


PLAGIAT MERUPAKAN TINDAKAN TIDAK

keseluruhan sistem Hadoop. Namun karena implementasi sistem

dilakukan di jaringan local, maka menggunakan password kosong.

6. Membuat authorized_keys

authorized_keys dibutuhkan untuk mengijinkan akses SSH dari node ke

sistem lokal.

7. Mengetes SSH pada sistem lokal

Proses ini tidak hanya mengetes SSH pada sistem lokal. Namun, proses

dilakukan untuk menyimpan host key fingerprint pada sistem local yang

terletak pada file known_hosts yang terletak pada direktori /home/.ssh.

4.1.1.3 Melakukan Disable IPv6

Screenshot langkah ini dapat dilihat pada Lampiran 3. Berikut penjelasan

langkahlangkah dalam melakukan disable IPv6:

1. Konfigurasi pada file /etc/sysctl.conf

Konfigurasi disable IPv6 dilakuakn pada file /etc/sysctl.conf.

Adapun Pengembangan sistem Hadoop tidak membutuhkan konfigurasi

IPv6

2. Mengecek status disable IPv6

Sebelum melakukan langkah ini, sistem Ubuntu harus direboot untuk

terlebih dahulu untuk memastikan konfigurasi sudah berjalan. Perintah

yang digunakan ialah cat /proc/sys/net/ipv6/conf/all/disable_ipv6. Cat

berfungsi untuk melihat konten dari file.


PLAGIAT MERUPAKAN TINDAKAN TIDAK

4.1.1.1 Install Hadoop

Screenshot langkah ini dapat diliaht pada Lampiran 4. Berikut penjelasan

langkahlangkah proses install Hadoop:

1. Melakukan extract file pada file arsip Hadoop

Langkah ini sama seperti langkah dalam mengekstrak file Java, karena

paket source code Hadoop dikemas dalam file tar.gz.

2. Menyalin source code Hadoop ke folder /usr/local

3. Mengubah privilege atau hak akses pada folder hadoop

Perintah chown digunakan untuk mengubah hak akses sebuah file atau

folder berdasarkan pengguna dan group. Direktori hadoop secara khusus

diperuntukkan untuk pengguna hduser dan digunakan pada group Hadoop.

4. Melakukan konfigurasi variable Hadoop pada file .bashrc

Proses sama seperti langkah sebelumnya, yakni agar Hadoop mudah

dikenali oleh sistem Linux.

5. Mengetes implementasi Hadoop

Mengetes Hadoop dilakukan pada sisi pengguna hduser dengan cara

mengecek versi dari Hadoop. Hasil dari perintah $hadoop version ialah

berupa versi Hadoop dan metadata Hadoop lainnya.

4.1.1.2 Konfigurasi Environment Hadoop Single Node Cluster

Konfigurasi ini dilakukan pada node klaster tunggal atau single node

cluster. Konfigurasi dilakukan pada direktori sistem Hadoop yang terletak pada

direktori /usr/local/hadoop/etc/hadoop. Screenshot langkahlangkah ini dapat


PLAGIAT MERUPAKAN TINDAKAN TIDAK

dilihat pada bagian Lampiran 5. Berikut langkahlangkah konfigurasi lingkungan

atau environment Hadoop Single Node Cluster:

1. Melakukan konfigurasi JAVA_HOME pada file hadoopenv.sh

Konfigurasi dlakuakn pada file hadoopenv.sh dengan mengubah alamat

direktori atau path JAVA_HOME dengan lokasi tempat menginstall Java

pada sistem Ubuntu. Java sangat dibutuhkan agar sistem Hadoop dapat

berjalan. Hal ini dikarena framework Hadoop dikembangkan

menggunakan Java dan hanya dapat berjalan diatas Java environment atau

lingkungan Java.

2. Konfigurasi coresite.xml

Konfigurasi pada file coresite.xml merupakan konfigurasi lokasi

temporary direktory dari Hadoop Distributed File System (HDFS).

Dengan kata lain langkah ini menjelaskan lokasi data Hadoop dan semua

metadata Hadoop disimpan. Adapun dalam penelitian ini, lokasi HDFS

ditempatkan pada direktori /app/hadoop/tmp. Konfigurasi ditempatkan

pada tag <value></value>.

3. Membuat direktori /app/hadoop/tmp

Proses membuat direktori /app/hadoop/tmp dilakukan pada sisi pengguna

mnode yang berperan sebagai administrator pada sistem Ubuntu. Hal ini

dikarena direktori /app/hadoop/tmp ditempatan pada direktori root yang

hanya dapat diakses oleh administrator.

4. Mengubah hak akses atau privilege pada direktori /app/hadoop/tmp


PLAGIAT MERUPAKAN TINDAKAN TIDAK

Direktori /app/hadoop/tmp temporary directory digunakan untuk

menempatkan HDFS pada local disk. Sehingga direktori ini secara khusus

diperuntukkan untuk pengguna hduser.

5. Mengatur permission pada direktori /app/hadoop/tmp

Proses ini bertujuan untuk menjaga keamanan pada direktori

/app/hadoop/tmp. Dengan kata lain, tidak semua jenis dapat dieksekusi

pada direktori ini.

6. Konfigurasi mapredsite.xml

Secara default, file mapredsite.xml belum terdapat pada sistem direktori

konfigurasi Hadoop. Sehingga langkah yang dilakukan ialah menyalin

template mapredsite.xml ke dalam sebuah file mapredsite.xml.

Selanjutnya konfigurasi file mapredsite ialah mengisi parameter

<value></value> dengan localhost. Langkah ini menunjukkan proses

mapreduce hanya berjalan pada localhost atau sistem lokal.

7. Konfigurasi hdfssite.xml

konfigurasi file hdfssite.xml memperlihatkan jumlah replikasi pada

sistem. Dengan kata lain, langkah ini menunjukkan berapa jumlah slave

node yang akan digunakan. Konfigurasi ini menggunakan parameter 1

karena konfigurasi masih dilakukan pada single node.

8. Konfigurasi yarnsite.xml

Konfigurasi fitur Yarn diterapkan pada sistem lokal yaitu localhost.


PLAGIAT MERUPAKAN TINDAKAN TIDAK

9. Melakukan format HDFS

Langkah ini akan menghapus semua data pada HDFS. Namun langkah ini

tidak direkomendasikan dilakukan pada saat yang bersamaan dengan

manajemen data karena dapat mengakibatkan kerusakan atau kegagalan

data.

10. Menjalankan perintah startdfs.sh

Perintah startdfs.sh yang digunakan untuk menjalankan service dari

NameNode dan SecondaryNamenode pada master node dan DataNode

pada slave node. Karena sistem ini bersifat single node cluster maka

semua service berjalan pada localhost atau lokal sistem Ubuntu.

11. Menjalankan perintah startyarn.sh

Perintah startyarn.sh yang digunakan untuk menjalankan service

ResourceManager dan NodeManager yang dimiliki oleh fitur Yarn.

Adapun konfigurasi ini dilakukan pada single node cluster sehingga

ResourceManager dan NodeManager berjalan pada localhost.

12. Menjalankan jps

Perintah jps yang digunakan untuk mengecek seluruh service Java yang

sedang berjalan pada sistem. Proses ini dilakukan untuk mengecek

keberhasilan semua service yang berjalan. Sehingga luaran dari perintah

ini ialah service NameNode, SecondaruNamenode, ResourceManager,

DataNode, dan NodeManager.


PLAGIAT MERUPAKAN TINDAKAN TIDAK

4.1.2 Konfigurasi Multi Node Cluster

Langkah ini dilakukan ketika konfigurasi single node cluster sudah

diterapkan pada seluruh komputer cluster. Proses multi node cluster merupakan

proses penggabungan seluruh single node cluster menjadi satu kelompok dalam

sistem Hadoop. Berikut langkahlangkah konfigurasi multi node cluster:

4.1.2.1 Konfigurasi Hostname, Hosts, & SSH

Screenshot dari langkah ini dapat dilihat pada bagian Lampiran 6. Berikut

merupakan urutan langkahlangkah konfigurasi Hostname, Hosts, dan SSH:

1. Mengubah hostname

Proses mengubah hostname yang merupakan nama mesin komputer.

Penelitian ini menggunakan hostname master untuk komputer master

node, hostname slave1 untuk komputer slave node 1, hostname slave2

untuk komputer slave node 2, dan hostname slave3 untuk komputer slave

node 3. Tujuan mengubah hostname ialah untuk memudahkan mengenali

masingmasing komputer cluster.

2. Konfigurasi IP Address pada seluruh komputer cluster

Penelitian ini seluruh IP Address pada komputer cluster diberi nama host

yang berfungsi untuk memudahkan dalam mengingat alamat komputer

cluster. Pemberian nama host dilakukan pada file /etc/hosts.

Konfigurasi tidak hanya dilakukan pada sisi master node saja, tetapi juga

pada seluruh slave node. Adapaun host yang digunakan untuk master node

ialah master. Komputer slave akan diberi host slave1, slave2, dan

slave3.
PLAGIAT MERUPAKAN TINDAKAN TIDAK

3. Konfigurasi akses SSH

Konfigurasi SSH dilakukan dengan menyalin SSH public key dari master

node ke semua slave node. Konfigurasi akses SSH dilakukan untuk

memudahkan dalam memanajemen sistem Hadoop. Ketika melakukan

monitoring menggunakan SSH, sistem tidak perlu untuk meminta

password tetapi akan mengarahkan langsung ke dalam sistem yang aktif.

Adapun pada konfigurasi single node, Public SSH key atau kunci publik

SSH telah ditempatkan pada file authorized_keys. Dengan menggunakan

perintah sshcopyid maka maka sebuah node dapat mengakses node lain

dengan menggunakan SSH akses tanpa menggunakan password. Adapun

perintah untuk mengakses node lain ialah $ssh master untuk mengakses

node lokal master, $ssh slave1 untuk mengakses node slave1, $ssh slave2

untuk mengakses node slave2, dan $ssh slave3 untuk mengakses node

slave3.

4.1.2.2 Identifikasi Master Node & Slave Node

Setiap node sudah memiliki identifikasi host yakni master, slave1, slave2,

dan slave3. Namun, host merupakan identifikasi sistem Ubuntu. Untuk melakukan

identifikasi master node dan slave node pada lingkungan Hadoop ialah dengan

mengisi master node pada file masters dan daftar slave node pada file slaves.

Daftar node diberikan dengan nama host masingmasing node. Adapun

screenshot langakah ini dapat dilihat pada bagian Lampiran 7.


PLAGIAT MERUPAKAN TINDAKAN TIDAK

4.1.2.3 Konfigurasi Environment Hadoop Multi Node Cluster

Konfigurasi environment Hadoop multi node cluster dilakukan pada 4

file konfigurasi yakni coresite.xml, mapredsite.xml, dan hdfssite.xml. Adapaun

screenshot langkah ini dapat dilihat pada Lampiran 8. Berikut penjelasan langkah

langkah konfigurasi environment Hadoop multi node cluster:

1. Konfigurasi coresite.xml

Terdapat perubahan pada parameter fs.default.name, hal ini dikarenakan

nilai dari parameter dikhsusukan buat host dan port dari master node.

Sehingga perubahan dilakukan dengan mengubah localhost menjadi

master. Adapun perubahan pada file coresite.xml ini dilakukan pada

semua node.

2. Konfigurasi mapredsite.xml

Terdapat perubahan konfigurasi pada parameter mapred.job.trackern yakni

mengubah localhost menjadi master. Hal ini dikarenakan karena

komputasi MapReduce dijalankan pada master node. Adapun perubahan

ini diterapkan pada seluruh node.

3. Konfigurasi hdfssite.xml

Konfigurasi hdfssite.xml ialah mengganti nilai block replication.

Penelitian ini menggunakan 3 slave node. Sehingga parameter value

memiliki nilai 3.

4. Melakukan format HDFS di multi node cluster


PLAGIAT MERUPAKAN TINDAKAN TIDAK

Proses ditujukan untuk memberikan inisialisasi HDFS atau temporary

directory. Selama melakukan penelitian, proses format HDFS tidak

sepenuhnya dapat menghapus semua data pada HDFS. Oleh karena itu,

cara yang digunakan ialah menghapus secara manual semua file.

5. Mengetes konfigurasi multi node cluster

Mengetes konfigurasi dilakukan dengan menjalankan startdfs.sh dan start

yarn.sh di master node. Perintah ini bertujuan untuk menjalankan service

HDFS yaitu NameNode, SecondaryNamenode, dan DataNode. Hasil dari

perintah startdfs.sh ialah service NameNode dan SecondaryNamenode

berjalan pada master node. Luaran dari perintah startdfs.sh pada slave

node ialah service DataNode yang berjalan pada slave1 node, slave2 node,

dan slave3 node. Sedangkan luaran perintah startyarn.sh yakni service

ResourceManager yang berjalan pada master node dan service

NodeManager yang berjalan pada slave node.

4.2 Implementasi Library Mahout Pada Sistem Hadoop

Berikut implementasi library Mahout pada sistem Hadoop:

4.2.1 Install Maven

Maven dibutuhkan untuk melakukan compile dan build library Mahout.

Proses install maven sama seperti proses install paket Java dan Hadoop. Source

code maven diletakkan pada direktori /usr/local. Maven digunakan dalam


PLAGIAT MERUPAKAN TINDAKAN TIDAK

lingkungan pengguna hduser, sehingga maven diberikan hak akses khusus

dengan menggunakan perintah $chown hduser:hadoop.

Konfigurasi variable Maven juga dilakukan karena maven diinstall

menggunakan source code. Sama seperti konfigurasi pada Java dan Hadoop,

langkah ini bertujuan agar Maven dapat dikenali oleh sistem Linux. Proses

mengetes Maven ialah dengan menjalankan perintah mvn –version. Luaran dari

perintah tersebut ialah versi Maven dan metadata lain. Adapun sreenshot langkah

ini dapat dilihat pada bagian Lampiran 9.

4.2.2 Install Eclipse

IDE Eclipse dibutuhkan karena proses pengembangan dan pengujian

sistem ini menggunakan source code tambahan. Eclipse juga memiliki plugin m2e

yang dapat berintegrasi dengan Maven, sehingga selain melakukan compile dan

build source code menggunakan perintah di terminal. Eclipse pun dapat

melakuakan compile dengan menggunakan perintah yang telah tersedia.

4.2.3 Install Mahout

Proses konfigurasi Mahout dilakukan pada master node. Konfigurasi

dilakukan dengan menulis variabel Mahout pada sistem Linux. Oleh karena

Mahout berjalan pada lingkungan Hadoop, maka konfigurasi juga dilakukan

dengan mengintegrasikan Hadoop dan Mahout.

Source code Mahout dapat dibukan pada Eclipse dengan menggunakan

fitur plugin maven yang telah disediakan Eclipse yaitu m2e. Dengan

menggunakan fitur Existing Maven Project maka eclipse dalam langsung


PLAGIAT MERUPAKAN TINDAKAN TIDAK

menginput atau melakukan import dan secara otomatis Eclipse akan melakukan

compile source code Mahout.

4.3 Implementasi Metode K-Means Menggunakan Library Mahout

4.3.1 Preprocessing

Sebelum menjalankan komputasi KMeans, ada beberapa hal yang harus

dilakukan yakni mengkonversi data dari format csv ke format sequence dan

membuat direktori untuk menyimpan data trining dan data centroid pada HDFS.

Konversi data numerik pada file csv akan dilakukan dengan menggunakan

program tambahan berbasis bahasa pemrograman Java.

Data liver disorder memiliki susunan informasi yakni id, mvc, alkphos,

sqpt, sgot, gammagt, drink, dan selector. Namun dalam melakukan konversi,

susunan file tersebut diubah menjadi selector, id, mvc, alkphos, sqpt, sgot,

gammagt, dan drink. Hasil atau output yang akan dicapai ialah file data liver

disorder dan file centroid yang masingmasing berformat sequence. Adapun data

centroid dipilih secara manual. Hasil output tersebut akan diinputkan ke dalam

Hadoop Distributed File System.

Adapun file sequence tidak human readable atau tidak dapat dibaca secara

langsung. Gambar 4.1 menunjukkan fitur yang telah disediakan oleh Mahout

untuk membaca sequence file. Adapun nama dari sequence file ialah

sampleseqfile. Sehingga perintah yang digunakan ialah $mahout seqdumper i

sampeseqfile | less. Mahout seqdumper menjelaskan bahwa mahout

menggunakan metode seqdumper. Parameter i menjelaskan input file yang

kemudian diikuti
PLAGIAT MERUPAKAN TINDAKAN TIDAK

olah nama file. | less merupakan perintah dari bash linux yang digunakan untuk

menerima output dari perintah sebelumnya, lalu kemudian menginputkan perintah

tersebut ke dalam perintah less. Less merupakan perintah bash yang digunakan

untuk membaca sebuah file atau output.

Gambar 4.1: Menjalankan metode seqdumper pada command line

Langkah selanjutnya ialah dengan menjalankan perintah startdfs.sh dan

startyarn.sh, Perintah startdfs.sh berfungsi untuk menjalankan service

NameNode dan SecondaryNamenode pada master node, dan DataNode pada

slave node. Sedangkan perintah startyarn.sh berfungsi untuk menjalankan service

ResourceManager pada master node dan service NodeManager pada slave node.

Gambar 4.2 menunjukkan proses membuat direktori pada HDFS. Perintah

yang digunakan ialah $hdfs dfs mkdir diikuti nama direkori. Direktori yang
PLAGIAT MERUPAKAN TINDAKAN TIDAK

digunakan dalam penelitian ini ialah /user/hduser/data dan /user/hduser/centroid.

Direktori /user/hduser/data digunakan untuk menyimpan data training. Sedangkan

direktori /user/hduser/centroid digunakan untuk menyimpan data centroid.

Parameter p digunakan untuk mebuat direktori dalam direktori. Sehingga

perintah yang digunakan ialah $hdfs dfs mkdir p diikuti nama direktori. Perintah

$hdfs dfs ls digunakan untuk melihat sebuah file atau direktori. Sehingga

perintah dapat digunakan untuk mengecek keberhasilan dalam membuat direktori.

Gambar 4.2: Membuat direktori data dan direktori centroid pada hdfs

Gambar 4.3 menunjukkan proses menyimpan file data training pada

HDFS.

Gambar 4.3: Menyimpan sebuah file data trining dari sistem lokal ke dalam
HDFS

Sedangkan gambar 4.4 menunjukkan proses menyimpan file data centroid

pada HDFS. Perintah yang digunakan dalam menyimpan file ialah $hdfs dfs

copyFromLocal kemudian diikuti lokasi input data dan diakhir dengan lokasi

output data. Lokasi input data berasal dari sistem lokal, sedangkan lokasi output

ditujukan pada direktori pada HDFS. Perintah $hdfs dfs ls digunakan mengecek

keberhasilan dalam menyimpan file pada HDFS.


PLAGIAT MERUPAKAN TINDAKAN TIDAK

Gambar 4.4: Menyimpan sebuah file centroid pada sistem lokal ke dalam HDFS

4.3.2 Proses Menjalankan Komputasi K-Means

Perintah yang digunakan untuk menjalankan komputasi KMeans ialah

$mahout kmeans diikuti lokasi file data, lokasi file centroid, lokasi file output,

distance measure atau algoritma yang digunakan untuk menghitung jarang antara

item data dan pusat cluster atau centroid, iterasi maksimal, jumlah K atau cluster

dari data, convergen delta atau nilai untuk menentukan proses iterasi berhenti,

execution method atau metode yang digunakan untuk mengeksekusi data, dan

clustering menentukan agar proses clustering berjalan setelah proses iterasi telah

berlangsung.

Adapun semua lokasi data yang digunakan dalam perintah $mahout

kmeans berada pada HDFS. Sehingga lokasi output data juga terdapat dalam

HDFS. Gambar 4.5 menunjukkan bahwa Distance Measure (parameter dm) yang

digunakan dalam penelitian ini ialah Euclidean Distance Measure. Iterasi

maksimal (parameter x) yang digunakan berjumlah 100. Total K (parameter k)

yang digunakan berjumlah 2. Hal ini dikarenakan data dikelompokkan dalam 2

kategori yakni kelompok yang memiliki kelainan hati (liver disorder) dan

kelompok yang tidak memiliki kelainan hati (non liver disorder). Convergen delta
PLAGIAT MERUPAKAN TINDAKAN TIDAK

51

(parameter cd) yang digunakan bernilai 0.1. Execution method (parameter xm)

yang digunakan ialah mapreduce. Parameter ow atau –overwrite berfungsi untuk

memaksa sistem untuk menulis hasil output walaupun sistem sudah memiliki

lokasi output tersebut sebelumnya.

Gambar 4.5: Menjalankan KMeans menggunakan library Mahout

Gambar 4.6 menunjukkan hasil akhir dari iterasi yan gditunjukkan dengan

menampilkan beberapa metadata dari proses KMeans dan waktu komputasi

dijalankan.

Gambar 4.6: Akhir dari iterasi KMeans

Gambar 4.7 menunjukkan perintah $hdfs dfs ls dapat digunakan untuk

melihat hasil dari proses KMeans. Sedangkan perintah $hdfs dfs ls output atau
PLAGIAT MERUPAKAN TINDAKAN TIDAK

52

$hdfs dfs ls /user/hduser/output digunakan untuk melihat isi dari direktori output.

Hasil proses KMeans dapat dilihat dari aplikasi NameNode Web Interface yang

beralamat di master:50070.

Gambar 4.7: Perintah $hdfs dfs ls output

Gambar 4.8 menunjukkan hasil KMeans melalui aplikasi NameNode web

interface.

Gambar 4.8: Hasil proses KMeans pada direktori /user/hduser/output

Gambar 4.9 menunjukkan bahwa aplikasi ini dapat menunjukkan

aktivitas dan semua informasi dari sistem Hadoop baik sebelum dan sesudah

komputasi
PLAGIAT MERUPAKAN TINDAKAN TIDAK

MapReduce dijalankan. Beberapa informasi yang ditunjukkan pada sistem ini

ialah DataNode information atau informasi DataNode (slave node). Informasi

DataNode ini menunjukkan slave node yang aktif dan tidak aktif, kapasitas HDFS

dari masingmasing DataNode, dan storage HDFS yang telah digunakan, Aplikasi

ini juga dapat digunakan untuk mencari dan melihat data pada HDFS.

Gambar 4.9: Summary berisi ringkasan informasi DataNode

NameNode web interface juga dapat memperlihatkan informasi tentang

DataNode. Gambar 4.10 menampilkan beberapa informasi DataNode pada sistem

Hadoop. Beberapa informasi DataNode yang ditampilkan ialah alamat slave node.

Status slave node digunakan yang diperlihatkan pada Admin State. Informasi

ukuran HDFS juga diperlihatkan seperti total ukuran disk yang dapat digunakan

untuk menyimpan data (capacity) dan total kapasitas disk yang telah digunakan

(used).
PLAGIAT MERUPAKAN TINDAKAN TIDAK

Gambar 4.10: Informasi DataNode pada aplikasi NameNode Web Interface

Gambar 4.11 menjelaskan bahwa HDFS memiliki direktori data, centroid,

dan output.

Gambar 4.11: Informasi direktori /user/hduser pada HDFS

Gambar 4.12 menunjukkan informasi direktori /user/hduser/data pada

HDFS yakni permission, owner, group, size, replication, block size, dan name.

Permission merupakan hak akses atau priviledge yang diijinkan olah sistem

Hadoop. Owner merupakan pemilik atau pengguna sistem Hadoop. Group

merupakan pengelompokkan data pada sistem Hadoop. Replication menjelaskan

bahwa data mengalami proses replikasi di beberapa node. Block size merupakan

ukuran blok data. Sedangkan name merupakan name file tersebut.


PLAGIAT MERUPAKAN TINDAKAN TIDAK

55

Gambar 4.12: Informasi direktori /user/hduser/data

Aplikasi ini juga mampu menampilkan metadata dari file pada HDFS.

Gambar 4.13 menampilkan metadata dan availability dari file sampleseqfile.

Availability menunjukkan bahwa file sampleseqfile telah mengalami proses

replikasi pada 3 DataNode.

Gambar 4.13: Informasi file sampleseqfile


PLAGIAT MERUPAKAN TINDAKAN TIDAK

BAB 5 ANALISA HASIL

Analisa hasil diurai menjadi 2 yakni analisa implementasi KMeans

dengan menggunakan library Mahout dan analisa unjuk kerja dari sistem Hadoop.

5.1 Analisa Implementasi K-Means Menggunakan Library Mahout Pada


Lingkungan Big Data

Hasil yang diperoleh dari algoritma KMeans ialah berupa direktori

/user/hduser/output pada HDFS. Mahout menyediakan metode untuk menganalisa

hasil dari komputasi KMeans. Metode yang digunakan ialah dengan

menggunakan perintah clusterdump. Metode ini dapat membuat atau generate

file analisa yang mengelompokkan item data berdasarkan centroid atau pusat

kelompoknya. Perintah yang digunakan ialah $mahout clusterdump i direktori

iterasi terakhir p clusteredPoints o output_file_analisa. Parameter i atau –input

merupakan perintah untuk memeasukkan direktori input yang berupa direktori

iterasi terakhir. Parameter p atau –pointsDir merupakan perintah untuk

menginputkan direktori clusteredPoints yang berupa hasil akhir dari data yang

telah mengalami proses komputasi KMeans. Sedangkan parameter o atau – output

digunakan untuk menghasilkan file analisa output.

Gambar 5.1 menunjukkan direktori iterasi terakhir ialah

/user/hduser/output/clusters9final. Direktori clusters9final memiliki data

centroid akhir. Direktori /user/hduser/output/clusteredPoints terdiri dari data hasil

56
PLAGIAT MERUPAKAN TINDAKAN TIDAK

iterasi. Sedangkan analisa_menggunakan_clusterdumper_liverdisorder.txt

merupakan file hasil analisa.

Gambar 5.1: Analisa hasil KMeans menggunakan clusterdump

Hasil dari clusterdump ditampilkan pada gambar 5.2. VL27 merupakan

identitas yang secara otomatis diberikan oleh Mahout. “n” merupakan total data

pada kelompok tersebut. “c” merupakan centroid atau pusat kelompok akhir. “r”

merupakan radius dari kelompok. Sedangkan dibaris selanjutnya merupakan

pengelompokkan data yang telah masuk kategori kelompok VL27.

Gambar 5.2: Beberapa hasil analisa cluster data dengan identitas VL27

Gambar 5.2 menunjukkan bahwa kelompok VL27 memiliki total item data

sebanyak 306. Sedangkan pada gambar 5.3 menunjukkan bahwa kelompok VL49

memiliki total item data sebanyak 38. Sehingga total item data keseluruhan ialah

344.

Gambar 5.3: Beberapa hasil analisa cluster data dengan identitas VL49
PLAGIAT MERUPAKAN TINDAKAN TIDAK

Pengujian hasil implementasi KMeans menggunakan library Mahout

dilakukan dengan membandingkan dengan hasil dari penghitungan manual.

Penghitungan manual juga menggunakan data centroid yang sama dengan

penghitungan menggunakan library Mahout. Penghitungan manual menggunakan

label centroid C1 dan C2. Item data pada centroid C1 berjumlah 306, sedangkan

item data pada centroid C2 berjumlah 38.

Tabel 5.1 menunjukkan bahwa hasil penghitungan manual memiliki item

data centroid yang sama dengan hasil penghitungan menggunakan library

Mahout. Sehingga dapat disimpulkan bahwa library Mahout dapat melakukan

komputasi KMeans dengan benar.

Tabel 5.1: Perbandingan hasil penghitungan manual dan library Mahout


Jumlah
Label
Item Data Centroid Item
Centroid
Data
C1 89.95751 69.21241 26.8169 22.87581 27.05882 3.148692 306
634 83 9346 699 353 81
VL27 89.958 69.212 26.817 22.876 27.059 3.149 306
C2 91.68421 75.47368 59.5526 39.05263 129 5.960526 38
053 421 3158 158 316
VL49 91.684 75.474 59.553 39.053 129 5.961 38

5.2 Analisa Unjuk Kerja Implementasi K-Means Menggunakan Library


Mahout Pada Lingkungan Big Data

Analisa unjuk kerja dilakukan dengan menjalankan komputasi KMeans

menggunakan library Mahout sebanyak 10 kali dalam jumlah slave node yang

berbda. Nilai ratarata digunakan untuk mengevaluasi hasil unjuk kerja. Tabel 5.2
PLAGIAT MERUPAKAN TINDAKAN TIDAK

59

menunjukkan bahwa semakin banyak jumlah slave node maka waktu eksekusi K

Means semakin cepat.

Tabel 5.2: Unjuk kerja implementasi K-Means menggunakan library mahout


pada lingkungan big data

Percobaan ke- Waktu eksekusi K-Means pada Slave Node (Menit)


1 2 3
1 4.523 4.646 2.8
2 5.295 5.029 4.553
3 4.525 4.94 4.946
4 4.96 4.95 5.461
5 4.93 4.058 2.759
6 5.397 5.384 4.967
7 4.001 5.368 4.544
8 4.923 3.631 5.449
9 5.297 4.045 5.434
10 5.428 4.548 5.416
Ratarata 4.9279 4.6599 4.6329

Gambar 5.4 menunjukkan semakin banyak jumlah slave node yang

digunakan maka waktu eksekusi untuk menjalankan KMeans menggunakan

library Mahout semakin cepat.

5
4.9
4.8
4.7
Waktu Eksekusi
4.6
KMeans (menit)
4.5
4.4
1 2 3
Gambar 5.4: Grafik hasil unjuk kerja sistem Hadoop
PLAGIAT MERUPAKAN TINDAKAN TIDAK

BAB 6 PENUTUP

6.1 Kesimpulan

Dalam hasil penelitian implementasi KMeans dalam lingkungan big data

menggunakan model pemrograman MapReduce dapat disimpulkan sebagai

berikut:

1. Implementasi KMeans pada data liver disorder menggunakan library

Mahout dapat berjalan dengan benar. Hal ini dibuktikan dengan

melakukan penghitungan KMeans secara manual. Komputasi KMeans

dengan menggunakan library Mahout menghasilkan output item data

centroid yang sama dengan penghitungan manual.

2. Hasil unjuk kerja menunjukkan bahwa semakin banyak slave node yang

digunakan maka semakin cepat waktu yang dibutuhkan untuk menjalankan

komputasi KMeans yang menggunakan library Mahout.

6.2 Saran

Dari hasil penelitian implementasi KMeans pada lingkungan big data ini,

ada beberapa saran yang dapat dikemukakan oleh peneliti untuk penelitian dengan

topik yang sama ialah menggunakan algoritma data mining yang berbeda.

60
PLAGIAT MERUPAKAN TINDAKAN TIDAK

DAFTAR PUSTAKA

Apache (2015) MapReduce Tutorial, Available at:

http://Hadoop.apache.org/docs/r2.7.1/HadoopMapReduceclient/Hadoop

MapReduceclientcore/MapReduceTutorial.html [Accessed 6 Januari

2015].

Apache (2016) kMeans commandline introduction, Available at:

https://mahout.apache.org/users/clustering/kmeanscommandline.html

[Accessed 9 November 2016]

deRoos, D. et al., (eds.). (2014) Hadoop for Dummies. New Jersey: John Wiley

& Sons, Inc

Data Science Indonesia (2015) Konsep Big Data, Available at :

http://datascience.or.id/2015/08/15/konsepbigdata/ [Accessed 29 Maret

2016].

DeZyre (2015) Hadoop MapReduce Tutorial, Available at:

https://www.dezyre.com/Hadooptutorial/HadoopMapReduce

tutorial#topics [Accessed 20 Novemver 2015].

Esteves, M. R., Pais, R., & Rong, C. (2011) ‘Kmeans clustering in the cloud a

Mahout test’, Workshops of International Conference on Advanced

Information Networking and Applications, pp. 514519

Han, J. et al. (2000) DATA MINING Concepts and Techniques. 3th Ed. London :

Pearson.
PLAGIAT MERUPAKAN TINDAKAN TIDAK

Kamath, C. (2009) Scientific Data Mining: A Practical Perspective. Philadelphia,

USA: Society for Industrial and Applied Mathematics (SIAM)

Mahout (2016), kMeans clustering – basics, Available at:

https://mahout.apache.org/users/clustering/kmeansclustering.html

[Accessed 2 November 2016].

Owen, S. et al., (2012) Mahout in Action: Manning Publications

Prasetya, U., 2013, Aplikasi Rekomendasi Dokter Untuk Sales Obat Pada

Android Menggunakan Metode KMean clustering Dan Euclidean

Distance, Skripsi, Jurusan Teknik Informatika, Universitas Sanata

Dharma, Yogyakarta.

Rathi, R. dan Lohiya, S. (2014) 'big data and Hadoop', International Journal of

Advanced Research in Computer Science & Technology (IJARCST 2014),

2(2), pp. 214 – 217

Ronk, J. (2014). structured, semi strcutured, and unstructured data,

Available at: http://jeremyronk.wordpress.com/2014/09/01/structured

semistrcuturedandunstructureddata [Accessed 8 December 2015].

Santosa, B. (2007) DATA MINING: Teknik Pemanfaatan Data untuk Keperluan

Bisnis. 1st Ed. Yogyakarta: Graha Ilmu.

The Glowing Python (2012) KMeans Clustering with Scipy, Available at:

http://glowingpython.blogspot.co.id/2012/04/KMeansclusteringwith

scipy.html [Accessed 8 January 2016]


PLAGIAT MERUPAKAN TINDAKAN TIDAK

Vishnupriya, N. dan Francis, S. (2015) ‘Data Clustering using MapReduce for

Multidimensional Datasets’, International Advanced Research Journal

in Science, Engineering and Technology, 2(8), pp. 3942

Voruganti, S. (2014) 'Map Reduce a Programming Model for Cloud Computing

Based On Hadoop Ecosystem', (IJCSIT) International Journal of Computer

Science and Information Technologies, 5(3), pp. 37943799.

White, T. (2015) Hadoop: The Definitive Guide. 4Th Ed. United States of

America : O’Reilly Media, Inc.

Yahoo! (2014) Yahoo! Hadoop Tutorial, Available at:

https://developer.yahoo.com/Hadoop/tutorial/index.html [Accessed 10

December 2015].

Zhang, Y. (2014) Apache Mahout Clustering Algorithms Implementation at:

https://yunmingzhang.wordpress.com/2014/01/13/apachemahoutkmeans

implementation/ [Accessed 21 October 2016]


PLAGIAT MERUPAKAN TINDAKAN TIDAK

64

LAMPIRAN-LAMPIRAN

Lampiran 1 : Install Java


PLAGIAT MERUPAKAN TINDAKAN TIDAK

65
PLAGIAT MERUPAKAN TINDAKAN TIDAK

66

Lampiran 2 : Konfigurasi Group Dan User Sistem Hadoop


PLAGIAT MERUPAKAN TINDAKAN TIDAK

67
PLAGIAT MERUPAKAN TINDAKAN TIDAK

68

Lampiran 3 : Melakukan Disable IPv6

Lampiran 4 : Install Hadoop


PLAGIAT MERUPAKAN TINDAKAN TIDAK

69
PLAGIAT MERUPAKAN TINDAKAN TIDAK

70

Lampiran 5 : Konfigurasi Environment Hadoop Single Node Cluster


PLAGIAT MERUPAKAN TINDAKAN TIDAK

71
PLAGIAT MERUPAKAN TINDAKAN TIDAK

72
PLAGIAT MERUPAKAN TINDAKAN TIDAK

73
PLAGIAT MERUPAKAN TINDAKAN TIDAK

74

Lampiran 6 : Konfigurasi Hostname, Hosts, & SSH


PLAGIAT MERUPAKAN TINDAKAN TIDAK

Lampiran 7 : Identifikasi Master Node & Slave Node


PLAGIAT MERUPAKAN TINDAKAN TIDAK

76

Lampiran 8 : Konfigurasi Environment Hadoop Multi Node Cluster


PLAGIAT MERUPAKAN TINDAKAN TIDAK

77
PLAGIAT MERUPAKAN TINDAKAN TIDAK

78
PLAGIAT MERUPAKAN TINDAKAN TIDAK

79
PLAGIAT MERUPAKAN TINDAKAN TIDAK

80
PLAGIAT MERUPAKAN TINDAKAN TIDAK

81
PLAGIAT MERUPAKAN TINDAKAN TIDAK

82
PLAGIAT MERUPAKAN TINDAKAN TIDAK

83
PLAGIAT MERUPAKAN TINDAKAN TIDAK

84

Lampiran 9 : Install Maven


PLAGIAT MERUPAKAN TINDAKAN TIDAK

85

Lampiran 10 : Install Mahout


PLAGIAT MERUPAKAN TINDAKAN TIDAK

Lampiran 11 : Source Code Kelas KmeansDriver.java

/* Licensed to the Apache Software Foundation (ASF) under one


* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.mahout.clustering.kmeans;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.util.ToolRunner;
import org.apache.mahout.clustering.Cluster;
import org.apache.mahout.clustering.classify.ClusterClassificationDriver;
import org.apache.mahout.clustering.classify.ClusterClassifier;
import org.apache.mahout.clustering.iterator.ClusterIterator;
import org.apache.mahout.clustering.iterator.ClusteringPolicy;
import org.apache.mahout.clustering.iterator.KMeansClusteringPolicy;
import org.apache.mahout.clustering.topdown.PathDirectory;
import org.apache.mahout.common.AbstractJob;
import org.apache.mahout.common.ClassUtils;
import org.apache.mahout.common.HadoopUtil;
import org.apache.mahout.common.commandline.DefaultOptionCreator;
import org.apache.mahout.common.distance.DistanceMeasure;
import org.apache.mahout.common.distance.SquaredEuclideanDistanceMeasure;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
PLAGIAT MERUPAKAN TINDAKAN TIDAK

public class KMeansDriver extends AbstractJob {

private static final Logger log =


LoggerFactory.getLogger(KMeansDriver.class);

public static void main(String[] args) throws Exception {


ToolRunner.run(new Configuration(), new KMeansDriver(), args);
}

@Override
public int run(String[] args) throws Exception {

addInputOption();
addOutputOption();
addOption(DefaultOptionCreator.distanceMeasureOption().create());
addOption(DefaultOptionCreator
.clustersInOption()
.withDescription(
"The input centroids, as Vectors. Must be a SequenceFile of Writable,
Cluster/Canopy. "
+ "If k is also specified, then a random set of vectors will be selected"
+ " and written out to this path
first").create()); addOption(DefaultOptionCreator
.numClustersOption()
.withDescription(
"The k in kMeans. If specified, then a random selection of k Vectors
will be chosen"
+ " as the Centroid and written to the clusters input
path.").create());
addOption(DefaultOptionCreator.useSetRandomSeedOption().create());
addOption(DefaultOptionCreator.convergenceOption().create());
addOption(DefaultOptionCreator.maxIterationsOption().create());
addOption(DefaultOptionCreator.overwriteOption().create());
addOption(DefaultOptionCreator.clusteringOption().create());
addOption(DefaultOptionCreator.methodOption().create());
addOption(DefaultOptionCreator.outlierThresholdOption().create());

if (parseArguments(args) == null) {
return 1;
}

Path input = getInputPath();


Path clusters = new
Path(getOption(DefaultOptionCreator.CLUSTERS_IN_OPTION));
PLAGIAT MERUPAKAN TINDAKAN TIDAK

Path output = getOutputPath();


String measureClass =
getOption(DefaultOptionCreator.DISTANCE_MEASURE_OPTION);
if (measureClass == null) {
measureClass = SquaredEuclideanDistanceMeasure.class.getName();
}
double convergenceDelta =
Double.parseDouble(getOption(DefaultOptionCreator.CONVERGENCE_DELT
A_OPTION));
int maxIterations =
Integer.parseInt(getOption(DefaultOptionCreator.MAX_ITERATIONS_OPTIO
N));
if (hasOption(DefaultOptionCreator.OVERWRITE_OPTION)) {
HadoopUtil.delete(getConf(), output);
}
DistanceMeasure measure = ClassUtils.instantiateAs(measureClass,
DistanceMeasure.class);

if (hasOption(DefaultOptionCreator.NUM_CLUSTERS_OPTION)) {
int numClusters =
Integer.parseInt(getOption(DefaultOptionCreator.NUM_CLUSTERS_OPTION)
);

Long seed = null;


if (hasOption(DefaultOptionCreator.RANDOM_SEED)) {
seed =
Long.parseLong(getOption(DefaultOptionCreator.RANDOM_SEED));
}

clusters = RandomSeedGenerator.buildRandom(getConf(), input,


clusters, numClusters, measure, seed);
}
boolean runClustering =
hasOption(DefaultOptionCreator.CLUSTERING_OPTION);
boolean runSequential =
getOption(DefaultOptionCreator.METHOD_OPTION).equalsIgnoreCase(
DefaultOptionCreator.SEQUENTIAL_METHOD);
double clusterClassificationThreshold = 0.0;
if (hasOption(DefaultOptionCreator.OUTLIER_THRESHOLD)) {
clusterClassificationThreshold =
Double.parseDouble(getOption(DefaultOptionCreator.OUTLIER_THRESHOL
D));
}
run(getConf(), input, clusters, output, convergenceDelta, maxIterations,
PLAGIAT MERUPAKAN TINDAKAN TIDAK

runClustering,
clusterClassificationThreshold, runSequential);
return 0;
}

/**
* Iterate over the input vectors to produce clusters and, if requested, use the
results of the final iteration to
* cluster the input vectors.
*
* @param input
* the directory pathname for input points
* @param clustersIn
* the directory pathname for initial & computed clusters
* @param output
* the directory pathname for output points
* @param convergenceDelta
* the convergence delta value
* @param maxIterations
* the maximum number of iterations
* @param runClustering
* true if points are to be clustered after iterations are completed
* @param clusterClassificationThreshold
* Is a clustering strictness / outlier removal parameter. Its value should be
between 0 and 1. Vectors
* having pdf below this value will not be clustered.
* @param runSequential
* if true execute sequential algorithm
*/
public static void run(Configuration conf, Path input, Path clustersIn, Path
output,
double convergenceDelta, int maxIterations, boolean runClustering,
double clusterClassificationThreshold,
boolean runSequential) throws IOException,
InterruptedException, ClassNotFoundException {

// iterate until the clusters converge


String delta = Double.toString(convergenceDelta);
if (log.isInfoEnabled()) {
log.info("Input: {} Clusters In: {} Out: {}", input, clustersIn,
output); log.info("convergence: {} max Iterations: {}",
convergenceDelta,
maxIterations);
}
Path clustersOut = buildClusters(conf, input, clustersIn, output, maxIterations,
PLAGIAT MERUPAKAN TINDAKAN TIDAK

delta, runSequential);
if (runClustering) {
log.info("Clustering data");
clusterData(conf, input, clustersOut, output, clusterClassificationThreshold,
runSequential);
}
}

/**
* Iterate over the input vectors to produce clusters and, if requested, use the
results of the final iteration to
* cluster the input vectors.
*
* @param input
* the directory pathname for input points
* @param clustersIn
* the directory pathname for initial & computed clusters
* @param output
* the directory pathname for output points
* @param convergenceDelta
* the convergence delta value
* @param maxIterations
* the maximum number of iterations
* @param runClustering
* true if points are to be clustered after iterations are completed
* @param clusterClassificationThreshold
* Is a clustering strictness / outlier removal parameter. Its value should be
between 0 and 1. Vectors
* having pdf below this value will not be clustered.
* @param runSequential
* if true execute sequential algorithm
*/
public static void run(Path input, Path clustersIn, Path output,
double convergenceDelta,
int maxIterations, boolean runClustering, double
clusterClassificationThreshold, boolean runSequential)
throws IOException, InterruptedException, ClassNotFoundException {
run(new Configuration(), input, clustersIn, output, convergenceDelta,
maxIterations, runClustering,
clusterClassificationThreshold, runSequential);
}

/**
* Iterate over the input vectors to produce cluster directories for each iteration
PLAGIAT MERUPAKAN TINDAKAN TIDAK

*
*
* @param conf
* the Configuration to use
* @param input
* the directory pathname for input points
* @param clustersIn
* the directory pathname for initial & computed clusters
* @param output
* the directory pathname for output points
* @param maxIterations
* the maximum number of iterations
* @param delta
* the convergence delta value
* @param runSequential
* if true execute sequential algorithm
*
* @return the Path of the final clusters directory
*/
public static Path buildClusters(Configuration conf, Path input, Path
clustersIn, Path output,
int maxIterations, String delta, boolean runSequential) throws
IOException, InterruptedException, ClassNotFoundException {

double convergenceDelta = Double.parseDouble(delta);


List<Cluster> clusters = new ArrayList<>();
KMeansUtil.configureWithClusterInfo(conf, clustersIn, clusters);

if (clusters.isEmpty()) {
throw new IllegalStateException("No input clusters found in " + clustersIn +
". Check your c argument.");
}

Path priorClustersPath = new


Path(output,
Cluster.INITIAL_CLUSTERS_DIR);
ClusteringPolicy policy = new KMeansClusteringPolicy(convergenceDelta);
ClusterClassifier prior = new ClusterClassifier(clusters, policy);
prior.writeToSeqFiles(priorClustersPath);

if (runSequential) {
ClusterIterator.iterateSeq(conf, input, priorClustersPath, output,
maxIterations);
} else {
ClusterIterator.iterateMR(conf, input, priorClustersPath, output,
PLAGIAT MERUPAKAN TINDAKAN TIDAK

maxIterations);
}
return output;
}

/**
* Run the job using supplied arguments
*
* @param input
* the directory pathname for input points
* @param clustersIn
* the directory pathname for input clusters
* @param output
* the directory pathname for output points
* @param clusterClassificationThreshold
* Is a clustering strictness / outlier removal parameter. Its value should be
between 0 and 1. Vectors
* having pdf below this value will not be clustered.
* @param runSequential
* if true execute sequential algorithm
*/
public static void clusterData(Configuration conf, Path input, Path
clustersIn, Path output,
double clusterClassificationThreshold, boolean runSequential) throws
IOException, InterruptedException,
ClassNotFoundException {

if (log.isInfoEnabled()) {
log.info("Running Clustering");
log.info("Input: {} Clusters In: {} Out: {}", input, clustersIn, output);
}
ClusterClassifier.writePolicy(new KMeansClusteringPolicy(), clustersIn);
ClusterClassificationDriver.run(conf, input, output, new Path(output,
PathDirectory.CLUSTERED_POINTS_DIRECTORY),
clusterClassificationThreshold, true, runSequential);
}

}
PLAGIAT MERUPAKAN TINDAKAN TIDAK

Lampiran 12 : Source Code Kelas ClusterIterator.java

/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.mahout.clustering.iterator;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.SequenceFileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.SequenceFileOutputFormat;
import org.apache.mahout.clustering.Cluster;
import org.apache.mahout.clustering.classify.ClusterClassifier;
import org.apache.mahout.common.iterator.sequencefile.PathFilters;
import org.apache.mahout.common.iterator.sequencefile.PathType;
import
org.apache.mahout.common.iterator.sequencefile.SequenceFileDirValueIterable;
import
org.apache.mahout.common.iterator.sequencefile.SequenceFileValueIterator;
import org.apache.mahout.math.Vector;
import org.apache.mahout.math.VectorWritable;
PLAGIAT MERUPAKAN TINDAKAN TIDAK

import com.google.common.io.Closeables;

/**
* This is a clustering iterator which works with a set of Vector data and a
prior ClusterClassifier which has been
* initialized with a set of models. Its implementation is algorithmneutral
and works for any iterative clustering
* algorithm (currently kmeans and fuzzykmeans) that processes all the input
vectors in each iteration.
* The cluster classifier is configured with a ClusteringPolicy to select
the desired clustering algorithm.
*/
public final class ClusterIterator {

public static final String PRIOR_PATH_KEY


= "org.apache.mahout.clustering.prior.path";

private ClusterIterator() {
}

/**
* Iterate over data using a priortrained ClusterClassifier, for a number
of iterations
*
* @param data
* a {@code List<Vector>} of input vectors
* @param classifier
* a prior ClusterClassifier
* @param numIterations
* the int number of iterations to perform
*
* @return the posterior ClusterClassifier
*/
public static ClusterClassifier iterate(Iterable<Vector> data, ClusterClassifier
classifier, int numIterations) {
ClusteringPolicy policy = classifier.getPolicy();
for (int iteration = 1; iteration <= numIterations; iteration+
+) { for (Vector vector : data) {
// update the policy based upon the
prior policy.update(classifier);
// classification yields probabilities
Vector probabilities = classifier.classify(vector);
// policy selects weights for models given those
probabilities Vector weights =
PLAGIAT MERUPAKAN TINDAKAN TIDAK

// training causes all models to observe data


for (Vector.Element e :
weights.nonZeroes()) { int index =
e.index();
classifier.train(index, vector, weights.get(index));
}
}
// compute the posterior
models classifier.close();
}
return classifier;
}

/**
* Iterate over data using a priortrained ClusterClassifier, for a number
of iterations using a sequential
* implementation
*
* @param conf
* the Configuration
* @param inPath
* a Path to input VectorWritables
* @param priorPath
* a Path to the prior classifier
* @param outPath
* a Path of output directory
* @param numIterations
* the int number of iterations to perform
*/
public static void iterateSeq(Configuration conf, Path inPath, Path
priorPath, Path outPath, int numIterations)
throws IOException {
ClusterClassifier classifier = new
ClusterClassifier();
classifier.readFromSeqFiles(conf, priorPath);
Path clustersOut =
null; int iteration =
1;
while (iteration <=
PathFilters.logsCRCFilter(), conf)) {
numIterations)
Vector vector {=forvw.get();
(VectorWritable vw : new
// classification yields probabilities
SequenceFileDirValueIterable<VectorWritable>(inPath,
Vector probabilities = classifier.classify(vector); PathType.LIST,
// policy selects weights for models given those
probabilities Vector weights =
PLAGIAT MERUPAKAN TINDAKAN TIDAK

// training causes all models to observe data


for (Vector.Element e : weights.nonZeroes()) {
int index = e.index();
classifier.train(index, vector, weights.get(index));
}
}
// compute the posterior models
classifier.close();
// update the policy
classifier.getPolicy().update(classifier);
// output the classifier
clustersOut = new Path(outPath, Cluster.CLUSTERS_DIR + iteration);
classifier.writeToSeqFiles(clustersOut);
FileSystem fs = FileSystem.get(outPath.toUri(), conf);
iteration++;
if (isConverged(clustersOut, conf, fs)) {
break;
}
}
Path finalClustersIn = new Path(outPath, Cluster.CLUSTERS_DIR
+ (iteration 1) + Cluster.FINAL_ITERATION_SUFFIX);
FileSystem.get(clustersOut.toUri(), conf).rename(clustersOut,
finalClustersIn);
}

/**
* Iterate over data using a priortrained ClusterClassifier, for a number of
iterations using a mapreduce
* implementation
*
* @param conf
* the Configuration
* @param inPath
* a Path to input VectorWritables
* @param priorPath
* a Path to the prior classifier
* @param outPath
* a Path of output directory
* @param numIterations
* the int number of iterations to perform
*/
public static void iterateMR(Configuration conf, Path inPath, Path priorPath,
Path outPath, int numIterations)
throws IOException, InterruptedException, ClassNotFoundException
PLAGIAT MERUPAKAN TINDAKAN TIDAK

ClusteringPolicy policy = ClusterClassifier.readPolicy(priorPath);


Path clustersOut = null;
int iteration = 1;
while (iteration <= numIterations) {
conf.set(PRIOR_PATH_KEY, priorPath.toString());

String jobName = "Cluster Iterator running iteration " + iteration + "


over priorPath: " + priorPath;
Job job = new Job(conf, jobName);
job.setMapOutputKeyClass(IntWritable.class);
job.setMapOutputValueClass(ClusterWritable.class);
job.setOutputKeyClass(IntWritable.class);
job.setOutputValueClass(ClusterWritable.class);

job.setInputFormatClass(SequenceFileInputFormat.class);
job.setOutputFormatClass(SequenceFileOutputFormat.class);
job.setMapperClass(CIMapper.class);
job.setReducerClass(CIReducer.class);

FileInputFormat.addInputPath(job, inPath);
clustersOut = new Path(outPath, Cluster.CLUSTERS_DIR + iteration);
priorPath = clustersOut;
FileOutputFormat.setOutputPath(job, clustersOut);

job.setJarByClass(ClusterIterator.class);
if (!job.waitForCompletion(true)) {
throw new InterruptedException("Cluster Iteration " + iteration + "
failed processing " + priorPath);
}
ClusterClassifier.writePolicy(policy, clustersOut);
FileSystem fs = FileSystem.get(outPath.toUri(), conf);
iteration++;
if (isConverged(clustersOut, conf, fs)) {
break;
}
}
Path finalClustersIn = new Path(outPath, Cluster.CLUSTERS_DIR
+ (iteration 1) + Cluster.FINAL_ITERATION_SUFFIX);
FileSystem.get(clustersOut.toUri(), conf).rename(clustersOut,
finalClustersIn);
}

/**
* Return if all of the Clusters in the parts in the filePath have converged or not
PLAGIAT MERUPAKAN TINDAKAN TIDAK

*
* @param filePath
* the file path to the single file containing the clusters
@return true if all Clusters are converged
@throws IOException
if there was an IO error
*/
private static boolean isConverged(Path filePath, Configuration conf, FileSystem fs) throws I
for (FileStatus part : fs.listStatus(filePath, PathFilters.partFilter())) { SequenceFileValueItera
SequenceFileValueIterator<>( part.getPath(), true, conf);
while (iterator.hasNext()) { ClusterWritable value = iterator.next(); if (!value.getValue().isCon
return false;
}
}
}
return true;
}
}

Lampiran 13 : Source Code Kelas CIMapper.java

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
either
PLAGIAT MERUPAKAN TINDAKAN TIDAK

* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.apache.mahout.clustering.iterator;

import java.io.IOException;
import java.util.List;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.WritableComparable;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.mahout.clustering.Cluster;
import org.apache.mahout.clustering.classify.ClusterClassifier;
import org.apache.mahout.math.Vector;
import org.apache.mahout.math.Vector.Element;
import org.apache.mahout.math.VectorWritable;

public class CIMapper extends Mapper<WritableComparable<?


>,VectorWritable,IntWritable,ClusterWritable> {

private ClusterClassifier classifier;


private ClusteringPolicy policy;

@Override
protected void setup(Context context) throws
IOException, InterruptedException {
Configuration conf = context.getConfiguration();
String priorClustersPath = conf.get(ClusterIterator.PRIOR_PATH_KEY);
classifier = new ClusterClassifier();
classifier.readFromSeqFiles(conf, new Path(priorClustersPath));
policy = classifier.getPolicy();
policy.update(classifier);
super.setup(context);
}

@Override
protected void map(WritableComparable<?> key, VectorWritable value,
Context context) throws IOException,
InterruptedException {
Vector probabilities = classifier.classify(value.get());
Vector selections = policy.select(probabilities);
PLAGIAT MERUPAKAN TINDAKAN TIDAK

for (Element el : selections.nonZeroes()) {


classifier.train(el.index(), value.get(),
el.get());
}
}

@Override
protected void cleanup(Context context) throws
IOException, InterruptedException {
List<Cluster> clusters =
classifier.getModels(); ClusterWritable cw =
new ClusterWritable();
for (int index = 0; index < clusters.size(); index++)
{ cw.setValue(clusters.get(index));
context.write(new IntWritable(index), cw);
}
super.cleanup(context);
}

Lampiran 14 : Source Code Kelas CIReducer.java

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.apache.mahout.clustering.iterator;
PLAGIAT MERUPAKAN TINDAKAN TIDAK

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.mahout.clustering.Cluster;
import org.apache.mahout.clustering.classify.ClusterClassifier;

public class CIReducer extends


Reducer<IntWritable,ClusterWritable,IntWritable,ClusterWritable> {

private ClusterClassifier classifier;


private ClusteringPolicy policy;

@Override
protected void reduce(IntWritable key, Iterable<ClusterWritable>
values, Context context) throws IOException,
InterruptedException {
Iterator<ClusterWritable> iter = values.iterator();
Cluster first = iter.next().getValue(); // there must always be at least
one while (iter.hasNext()) {
Cluster cluster = iter.next().getValue();
first.observe(cluster);
}
List<Cluster> models = new ArrayList<>();
models.add(first);
classifier = new ClusterClassifier(models, policy);
classifier.close();
context.write(key, new ClusterWritable(first));
}

@Override
protected void setup(Context context) throws
IOException, InterruptedException {
Configuration conf = context.getConfiguration();
String priorClustersPath = conf.get(ClusterIterator.PRIOR_PATH_KEY);
classifier = new ClusterClassifier();
classifier.readFromSeqFiles(conf, new Path(priorClustersPath));
policy = classifier.getPolicy();
policy.update(classifier);
PLAGIAT MERUPAKAN TINDAKAN TIDAK

super.setup(context);
}

Lampiran 15 : Source Code Kelas VectorDataCreator.java

//sumber : http://bigdatatechworld.blogspot.co.id/2014/09/runningkmeans
clusteringalgorithm.html

package org.apache.mahout.clustering.liverdisorder2.kmeans;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.io.Text;
import org.apache.mahout.math.DenseVector;
import org.apache.mahout.math.NamedVector;
import org.apache.mahout.math.VectorWritable;

public class VectorDataCreation {


private VectorDataCreation() {
}

public static final int NUM_COLUMNS = 7;

public static void main(String[] args) throws Exception {


String INPUT_FILE = "bupa_data_with_selection.csv";
String OUTPUT_FILE = "sampleseqfile";

List<NamedVector> apples = new ArrayList<NamedVector>();

NamedVector apple;

BufferedReader br = null;
PLAGIAT MERUPAKAN TINDAKAN TIDAK

br = new BufferedReader(new

FileReader(INPUT_FILE)); String sCurrentLine;

while ((sCurrentLine = br.readLine()) != null) {

String item_name = sCurrentLine.split(",")

[0];

double[] features = new double[NUM_COLUMNS];

for (int indx = 1; indx < NUM_COLUMNS; ++indx)


{ features[indx 1] = Double
.parseDouble(sCurrentLine.split(",
"
)[indx]);
}

apple = new NamedVector(new DenseVector(features),


item_name);

apples.add(apple);
}

Configuration conf = new

Configuration(); FileSystem fs =

FileSystem.get(conf); Path path = new

Path(OUTPUT_FILE);

SequenceFile.Writer writer = new SequenceFile.Writer(fs, conf,


path,
Text.class,

VectorWritable.class); VectorWritable vec =

new VectorWritable();

for (NamedVector vector :


apples) { vec.set(vector);
PLAGIAT MERUPAKAN TINDAKAN TIDAK

OUTPUT_FILE),
conf);

Text key = new Text();

VectorWritable value = new

VectorWritable(); while (reader.next(key,

value)) {
System.out.println(key.toString() + ","
+ value.get().asFormatString());
}

Lampiran 16 : Source Code Kelas VectorCentroidCreator.java

//sumber : http://bigdatatechworld.blogspot.co.id/2014/09/runningk-
means clusteringalgorithm.html

package org.apache.mahout.clustering.liverdisorder2.kmeans;

import java.io.BufferedReader;
import java.io.FileReader;
import
java.util.ArrayList;
import java.util.List;

import
org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import
org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.io.Text;
import org.apache.mahout.math.DenseVector;
import org.apache.mahout.math.NamedVector;
import org.apache.mahout.math.VectorWritable;

public class VectorCentroidCreation


{ private VectorCentroidCreation()
{
PLAGIAT MERUPAKAN TINDAKAN TIDAK

public static void main(String[] args) throws Exception {


String INPUT_FILE =
"bupa_data_centroid_with_selection.csv"; String
OUTPUT_FILE = "centroidfile";

List<NamedVector> apples = new ArrayList<NamedVector>();

NamedVector apple;

BufferedReader br = null;

br = new BufferedReader(new

FileReader(INPUT_FILE)); String sCurrentLine;

while ((sCurrentLine = br.readLine()) != null) {

String item_name = sCurrentLine.split(",")

[0];

double[] features = new double[NUM_COLUMNS];

for (int indx = 1; indx < NUM_COLUMNS; ++indx)


{ features[indx 1] = Double
.parseDouble(sCurrentLine.split(",
"
)[indx]);
}

apple = new NamedVector(new DenseVector(features),


item_name);

apples.add(apple);
}

Configuration conf = new

Configuration(); FileSystem fs =

FileSystem.get(conf); Path path = new

Path(OUTPUT_FILE);
PLAGIAT MERUPAKAN TINDAKAN TIDAK

for (NamedVector vector :


apples) { vec.set(vector);
writer.append(new Text(vector.getName()), vec);
}

writer.close();

SequenceFile.Reader reader = new SequenceFile.Reader(fs, new


Path(
OUTPUT_FILE),
conf);

Text key = new Text();

VectorWritable value = new

VectorWritable(); while (reader.next(key,

value)) {
System.out.println(key.toString() + ","
+ value.get().asFormatString());
}

Lampiran 17 : Source Code File Core-site.xml

<?xml version="1.0" encoding="UTF8"?>


<?xmlstylesheet type="text/xsl" href="configuration.xsl"?>
<!
Licensed under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE2.0

Unless required by applicable law or agreed to in writing, software


distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied.
See the License for the specific language governing permissions
and limitations under the License. See accompanying LICENSE
file.
PLAGIAT MERUPAKAN TINDAKAN TIDAK

<! Put sitespecific property overrides in this file. >

<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>

<property>
<name>fs.default.name</name>
<value>hdfs://master:54310</value>
<description>The name of the default file system. A URI whose
scheme and authority determine the FileSystem implementation. The
uri's scheme determines the config property (fs.SCHEME.impl)
naming the FileSystem implementation class. The uri's authority is
used to determine the host, port, etc. for a
filesystem.</description>
</property>

Lampiran 18 : Source Code File Mapred-site.xml

<?xml version="1.0"?>
<?xmlstylesheet type="text/xsl" href="configuration.xsl"?>
<!
Licensed under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE2.0

Unless required by applicable law or agreed to in writing,


software distributed under the License is distributed on an "AS
IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
either
express or implied.
See the License for the specific language governing permissions
and limitations under the License. See accompanying LICENSE
PLAGIAT MERUPAKAN TINDAKAN TIDAK

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:54311</value>
<description>The host and port that the MapReduce job tracker
runs at. If "local", then jobs are run inprocess as a single map
and reduce task.
</description>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
Lampiran 19 : Source Code File Hdfs-site.xml

<?xml version="1.0" encoding="UTF8"?>


<?xmlstylesheet type="text/xsl" href="configuration.xsl"?>
<!
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE2.0

Unless required by applicable law or agreed to in writing,


software distributed under the License is distributed on an "AS
IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
>

<! Put sitespecific property overrides in this file. >

<configuration>
<property>
<name>dfs.replication</name>
<value>3</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.
PLAGIAT MERUPAKAN TINDAKAN TIDAK

</description>
</property>
<property>
<name>dfs.DataNode.data.dir</name>
<value>/app/hadoop/tmp/files</value>
</property>
<property>
<name>dfs.NameNode.name.dir</name>
<value>/app/hadoop/tmp/metadata</value>
</property>
</configuration>
Lampiran 20 : Source Code File Yarn-site.xml

<?xml version="1.0"?>
<!
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE2.0

Unless required by applicable law or agreed to in writing,


software distributed under the License is distributed on an "AS
IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
>
<configuration>

<! Site specific YARN configuration properties >

<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>

<property>
<name>yarn.nodemanager.auxservices</name>
<value>mapreduce_shuffle</value>
</property>
PLAGIAT MERUPAKAN TINDAKAN TIDAK

<property>
<name>yarn.nodemanager.resource.memorymb</name>
<value>2200</value>
<! <description>Amount of physical memory, in MB, that can be allocated for
containers.</description> >
</property>

<property>
<name>yarn.scheduler.minimumallocationmb</name>
<value>500</value>
</property>

</configuration>
Lampiran 21 : Hasil Kalkulasi Manual

mcv,alkphos,sgpt,sgot,gammagt,drinks,Cluster
Selector 85,92,45,27,31,0,C1
85,64,59,32,23,0,C1
86,54,33,16,54,0,C1
91,78,34,24,36,0,C1
87,70,12,28,10,0,C1
98,55,13,17,17,0,C1
88,62,20,17,9,0.5,C1
88,67,21,11,11,0.5,C1
92,54,22,20,7,0.5,C1
90,60,25,19,5,0.5,C1
89,52,13,24,15,0.5,C1
82,62,17,17,15,0.5,C1
90,64,61,32,13,0.5,C1
86,77,25,19,18,0.5,C1
96,67,29,20,11,0.5,C1
91,78,20,31,18,0.5,C1
89,67,23,16,10,0.5,C1
89,79,17,17,16,0.5,C1
91,107,20,20,56,0.5,C1
94,116,11,33,11,0.5,C1
92,59,35,13,19,0.5,C1
93,23,35,20,20,0.5,C1
90,60,23,27,5,0.5,C1
96,68,18,19,19,0.5,C1
92,70,24,13,26,0.5,C1
90,47,28,15,18,0.5,C1
PLAGIAT MERUPAKAN TINDAKAN TIDAK

88,66,20,21,10,0.5,C1
91,102,17,13,19,0.5,C1
87,41,31,19,16,0.5,C1
86,79,28,16,17,0.5,C1
91,57,31,23,42,0.5,C1
93,77,32,18,29,0.5,C1
88,96,28,21,40,0.5,C1
94,65,22,18,11,0.5,C1
85,54,47,33,22,0.5,C1
79,39,14,19,9,0.5,C1
85,85,25,26,30,0.5,C1
89,63,24,20,38,0.5,C1
84,92,68,37,44,0.5,C1
89,68,26,39,42,0.5,C1
89,101,18,25,13,0.5,C1
86,84,18,14,16,0.5,C1
85,65,25,14,18,0.5,C1
88,61,19,21,13,0.5,C1
92,56,14,16,10,0.5,C1
95,50,29,25,50,0.5,C1
91,75,24,22,11,0.5,C1
83,40,29,25,38,0.5,C1
89,74,19,23,16,0.5,C1
85,64,24,22,11,0.5,C1
94,48,11,23,43,0.5,C1
87,52,21,19,30,0.5,C1
85,65,23,29,15,0.5,C1
84,82,21,21,19,0.5,C1
88,49,20,22,19,0.5,C1
96,67,26,26,36,0.5,C1
90,63,24,24,24,0.5,C1
90,45,33,34,27,0.5,C1
90,72,14,15,18,0.5,C1
91,55,4,8,13,0.5,C1
91,52,15,22,11,0.5,C1
87,71,32,19,27,1,C1
89,77,26,20,19,1,C1
89,67,5,17,14,1,C1
85,51,26,24,23,1,C1
103,75,19,30,13,1,C1
90,63,16,21,14,1,C1
90,63,29,23,57,2,C1
90,67,35,19,35,2,C1
87,66,27,22,9,2,C
PLAGIAT MERUPAKAN TINDAKAN TIDAK

90,73,34,21,22,2,C1
86,54,20,21,16,2,C1
90,80,19,14,42,2,C1
96,72,28,19,30,2,C1
91,55,9,25,16,2,C1
95,78,27,25,30,2,C1
92,101,34,30,64,2,C1
89,51,41,22,48,2,C1
91,99,42,33,16,2,C1
94,58,21,18,26,2,C1
88,47,33,26,29,2,C1
92,65,17,25,9,2,C1
92,79,22,20,11,3,C1
84,83,20,25,7,3,C1
88,68,27,21,26,3,C1
86,48,20,20,6,3,C1
99,69,45,32,30,3,C1
88,66,23,12,15,3,C1
89,62,42,30,20,3,C1
90,51,23,17,27,3,C1
81,61,32,37,53,3,C1
89,65,26,18,36,3,C1
92,75,26,26,24,3,C1
85,59,25,20,25,3,C1
92,61,18,13,81,3,C1
89,63,22,27,10,4,C1
90,84,18,23,13,4,C1
88,95,25,19,14,4,C1
89,35,27,29,17,4,C1
91,80,37,23,27,4,C1
91,109,33,15,18,4,C1
91,65,17,5,7,4,C1
88,107,29,20,50,4,C1
87,76,22,55,9,4,C1
87,86,28,23,21,4,C1
87,42,26,23,17,4,C1
88,80,24,25,17,4,C1
86,67,11,15,8,4,C1
92,40,19,20,21,4,C1
85,60,17,21,14,4,C1
89,90,15,17,25,4,C1
91,57,15,16,16,4,C1
96,55,48,39,42,4,C1
79,101,17,27,23,4,C
PLAGIAT MERUPAKAN TINDAKAN TIDAK

90,134,14,20,14,4,C1
89,76,14,21,24,4,C1
88,93,29,27,31,4,C1
90,67,10,16,16,4,C1
92,73,24,21,48,4,C1
91,55,28,28,82,4,C1
83,45,19,21,13,4,C1
90,74,19,14,22,4,C1
92,66,21,16,33,5,C1
93,63,26,18,18,5,C1
87,59,15,19,12,5,C1
86,44,21,11,15,5,C1
87,64,16,20,24,5,C1
92,57,21,23,22,5,C1
99,59,17,19,11,5,C1
92,80,10,26,20,6,C1
95,60,26,22,28,6,C1
91,63,25,26,15,6,C1
92,62,37,21,36,6,C1
95,50,13,14,15,6,C1
90,76,37,19,50,6,C1
96,70,70,26,36,6,C1
92,62,20,23,20,6,C1
91,63,25,26,15,6,C1
92,82,27,24,37,6,C1
90,63,12,26,21,6,C1
88,37,9,15,16,6,C1
100,60,29,23,76,6,C1
98,43,35,23,69,6,C1
92,87,57,25,44,6,C1
93,99,36,34,48,6,C1
90,72,17,19,19,6,C1
97,93,21,20,68,6,C1
93,50,18,25,17,6,C1
90,57,20,26,33,6,C1
92,76,31,28,41,6,C1
88,55,19,17,14,6,C1
89,63,24,29,29,6,C1
93,84,58,47,62,7,C1
97,71,29,22,52,8,C1
84,99,33,19,26,8,C1
96,44,42,23,73,8,C1
90,62,22,21,21,8,C1
92,94,18,17,6,8,C
PLAGIAT MERUPAKAN TINDAKAN TIDAK

97,71,29,22,52,8,C1
91,69,25,25,66,8,C1
93,59,17,20,14,8,C1
90,50,26,22,53,8,C1
91,62,59,47,60,8,C1
92,77,86,41,31,10,C1
86,66,22,24,26,10,C1
98,57,31,34,73,10,C1
95,80,50,64,55,10,C1
97,92,22,28,49,12,C1
87,75,25,21,14,0,C1
88,56,23,18,12,0,C1
84,97,41,20,32,0,C1
94,91,27,20,15,0.5,C1
97,62,17,13,5,0.5,C1
92,85,25,20,12,0.5,C1
82,48,27,15,12,0.5,C1
88,74,31,25,15,0.5,C1
95,77,30,14,21,0.5,C1
88,94,26,18,8,0.5,C1
91,70,19,19,22,0.5,C1
83,54,27,15,12,0.5,C1
91,105,40,26,56,0.5,C1
86,79,37,28,14,0.5,C1
89,82,23,14,35,0.5,C1
90,73,24,23,11,0.5,C1
90,87,19,25,19,0.5,C1
89,82,33,32,18,0.5,C1
85,79,17,8,9,0.5,C1
85,119,30,26,17,0.5,C1
78,69,24,18,31,0.5,C1
88,107,34,21,27,0.5,C1
89,115,17,27,7,0.5,C1
92,67,23,15,12,0.5,C1
89,101,27,34,14,0.5,C1
91,84,11,12,10,0.5,C1
94,101,41,20,53,0.5,C1
88,46,29,22,18,0.5,C1
88,122,35,29,42,0.5,C1
84,88,28,25,35,0.5,C1
90,79,18,15,24,0.5,C1
87,69,22,26,11,0.5,C1
65,63,19,20,14,0.5,C1
90,64,12,17,14,0.5,C1
PLAGIAT MERUPAKAN TINDAKAN TIDAK

85,58,18,24,16,0.5,C1
88,81,41,27,36,0.5,C1
86,78,52,29,62,0.5,C1
82,74,38,28,48,0.5,C1
86,58,36,27,59,0.5,C1
94,56,30,18,27,0.5,C1
87,57,30,30,22,0.5,C1
94,75,20,25,38,0.5,C1
83,68,17,20,71,0.5,C1
93,56,25,21,33,0.5,C1
101,65,18,21,22,0.5,C1
92,65,25,20,31,0.5,C1
92,58,14,16,13,0.5,C1
86,58,16,23,23,0.5,C1
85,62,15,13,22,0.5,C1
86,57,13,20,13,0.5,C1
86,54,26,30,13,0.5,C1
81,41,33,27,34,1,C1
91,67,32,26,13,1,C1
91,80,21,19,14,1,C1
92,60,23,15,19,1,C1
91,60,32,14,8,1,C1
93,65,28,22,10,1,C1
87,92,21,22,37,1,C1
95,62,24,23,14,1,C1
93,59,41,30,48,1,C1
84,82,43,32,38,2,C1
87,71,33,20,22,2,C1
86,44,24,15,18,2,C1
86,66,28,24,21,2,C1
88,58,31,17,17,2,C1
90,61,28,29,31,2,C1
88,69,70,24,64,2,C1
93,87,18,17,26,2,C1
98,58,33,21,28,2,C1
91,44,18,18,23,2,C1
87,75,37,19,70,2,C1
94,91,30,26,25,2,C1
88,85,14,15,10,2,C1
89,109,26,25,27,2,C1
87,59,37,27,34,2,C1
93,58,20,23,18,2,C1
88,57,9,15,16,2,C1
94,65,38,27,17,3,C
PLAGIAT MERUPAKAN TINDAKAN TIDAK

91,71,12,22,11,3,C1
90,55,20,20,16,3,C1
91,64,21,17,26,3,C1
88,47,35,26,33,3,C1
85,58,83,49,51,3,C1
91,54,25,22,35,4,C1
98,50,27,25,53,4,C1
86,62,29,21,26,4,C1
89,48,32,22,14,4,C1
82,68,20,22,9,4,C1
83,70,17,19,23,4,C1
96,70,21,26,21,4,C1
94,117,77,56,52,4,C1
93,45,11,14,21,4,C1
93,49,27,21,29,4,C1
84,73,46,32,39,4,C1
91,63,17,17,46,4,C1
90,57,31,18,37,4,C1
87,45,19,13,16,4,C1
91,68,14,20,19,4,C1
91,86,52,47,52,4,C1
88,46,15,33,55,4,C1
85,52,22,23,34,4,C1
89,72,33,27,55,4,C1
95,59,23,18,19,4,C1
96,56,38,26,23,5,C1
90,52,10,17,12,5,C1
94,45,20,16,12,5,C1
99,42,14,21,49,5,C1
93,102,47,23,37,5,C1
94,71,25,26,31,5,C1
87,54,41,29,23,6,C1
92,67,15,14,14,6,C1
98,101,31,26,32,6,C1
93,43,11,16,54,6,C1
93,68,24,18,19,6,C1
95,36,38,19,15,6,C1
92,80,10,26,20,6,C1
96,74,27,25,43,6,C1
95,93,21,27,47,6,C1
86,109,16,22,28,6,C1
91,46,30,24,39,7,C1
85,50,12,18,14,7,C1
91,57,33,23,12,8,C
PLAGIAT MERUPAKAN TINDAKAN TIDAK

91,52,76,32,24,8,C1
93,70,46,30,33,8,C1
87,55,36,19,25,8,C1
98,123,28,24,31,8,C1
82,55,18,23,44,8,C1
97,80,17,20,53,8,C1
100,83,25,24,28,8,C1
91,138,45,21,48,10,C1
92,41,37,22,37,10,C1
86,123,20,25,23,10,C1
91,93,35,34,37,10,C1
87,87,15,23,11,10,C1
87,56,52,43,55,10,C1
99,75,26,24,41,12,C1
91,68,27,26,14,16,C1
98,99,57,45,65,20,C1
84,80,47,33,97,0.5,C2
91,72,155,68,82,0.5,C2
92,57,64,36,90,0.5,C2
87,90,43,28,156,2,C2
92,60,30,27,297,2,C2
89,89,23,18,104,3,C2
90,96,34,49,169,4,C2
86,78,47,39,107,5,C2
97,44,113,45,150,5,C2
90,70,25,23,112,5,C2
95,62,64,42,76,6,C2
82,56,67,38,92,6,C2
91,74,87,50,67,6,C2
92,79,70,32,84,7,C2
92,93,58,35,120,7,C2
90,67,77,39,114,8,C2
92,95,85,48,200,8,C2
92,93,22,28,123,9,C2
92,108,53,33,94,12,C2
93,77,39,37,108,16,C2
94,83,81,34,201,20,C2
91,96,35,22,135,0.5,C2
98,74,148,75,159,0.5,C2
90,63,45,24,85,1,C2
83,78,31,19,115,1,C2
82,72,31,20,84,3,C2
86,55,29,35,108,4,C2
94,43,154,82,121,4,C2
PLAGIAT MERUPAKAN TINDAKAN TIDAK

92,73,33,34,115,5,C2
92,53,51,33,92,6,C2
97,94,43,43,82,6,C2
99,86,58,42,203,6,C2
98,66,103,57,114,6,C2
102,82,34,78,203,7,C2
95,73,20,25,225,8,C2
88,91,56,35,126,9,C2
96,69,53,43,203,12,C2
98,77,55,35,89,15,C2
Lampiran 22 : Hasil K-Means Dengan Menggunakan Library Mahout

{"r":[4.376,18.582,12.582,7.431,16.407,3.032],"c":
[89.958,69.212,26.817,22.876,27.059,3.149],"n":306,"identifier":"VL27"}
Weight : [props optional]: Point:
1.0 : [distance=30.280828894023347]: [85.0,92.0,45.0,27.0,31.0]
1.0 : [distance=34.599583998773824]: [85.0,64.0,59.0,32.0,23.0]
1.0 : [distance=32.68527636902549]: [86.0,54.0,33.0,16.0,54.0]
1.0 : [distance=14.86696464396173]: [91.0,78.0,34.0,24.0,36.0]
1.0 : [distance=23.581464357715724]: [87.0,70.0,12.0,28.0,10.0]
1.0 : [distance=24.560193572385426]: [98.0,55.0,13.0,17.0,17.0]
1.0 : [distance=21.67911792635194]: [88.0,62.0,20.0,17.0,9.0,0.5]
1.0 : [distance=21.17783024613144]: [88.0,67.0,21.0,11.0,11.0,0.5]
1.0 : [distance=26.008366624162214]: [92.0,54.0,22.0,20.0,7.0,0.5]
1.0 : [distance=24.42951386189925]: [90.0,60.0,25.0,19.0,5.0,0.5]
1.0 : [distance=25.333536579666625]: [89.0,52.0,13.0,24.0,15.0,0.5]
1.0 : [distance=19.96673304710818]: [82.0,62.0,17.0,17.0,15.0,0.5]
1.0 : [distance=38.517085214370525]: [90.0,64.0,61.0,32.0,13.0,0.5]
1.0 : [distance=13.553953086120329]: [86.0,77.0,25.0,19.0,18.0,0.5]
1.0 : [distance=17.870188336692532]: [96.0,67.0,29.0,20.0,11.0,0.5]
1.0 : [distance=16.729015842485673]: [91.0,78.0,20.0,31.0,18.0,0.5]
1.0 : [distance=19.122681938530324]: [89.0,67.0,23.0,16.0,10.0,0.5]
1.0 : [distance=18.89246756078381]: [89.0,79.0,17.0,17.0,16.0,0.5]
1.0 : [distance=48.25284546263715]: [91.0,107.0,20.0,20.0,56.0,0.5]
1.0 : [distance=53.1318852099199]: [94.0,116.0,11.0,33.0,11.0,0.5]
1.0 : [distance=18.571989516138252]: [92.0,59.0,35.0,13.0,19.0,0.5]
1.0 : [distance=47.71707026408424]: [93.0,23.0,35.0,20.0,20.0,0.5]
1.0 : [distance=24.699312733141195]: [90.0,60.0,23.0,27.0,5.0,0.5]
1.0 : [distance=14.237384180847348]: [96.0,68.0,18.0,19.0,19.0,0.5]
1.0 : [distance=10.880988869149485]: [92.0,70.0,24.0,13.0,26.0,0.5]
1.0 : [distance=25.414546754652328]: [90.0,47.0,28.0,15.0,18.0,0.5]
1.0 : [distance=19.03051824446491]:
PLAGIAT MERUPAKAN TINDAKAN TIDAK

1.0 : [distance=36.63301268141846]: [91.0,102.0,17.0,13.0,19.0,0.5]


1.0 : [distance=31.08890641011838]: [87.0,41.0,31.0,19.0,16.0,0.5]
1.0 : [distance=16.380798493768058]: [86.0,79.0,28.0,16.0,17.0,0.5]
1.0 : [distance=19.94986781811093]: [91.0,57.0,31.0,23.0,42.0,0.5]
1.0 : [distance=11.459669425673594]: [93.0,77.0,32.0,18.0,29.0,0.5]
1.0 : [distance=30.01356725589532]: [88.0,96.0,28.0,21.0,40.0,0.5]
1.0 : [distance=18.600122209854998]: [94.0,65.0,22.0,18.0,11.0,0.5]
1.0 : [distance=28.25694148877354]: [85.0,54.0,47.0,33.0,22.0,0.5]
1.0 : [distance=39.31019388920845]: [79.0,39.0,14.0,19.0,9.0,0.5]
1.0 : [distance=17.394044426632252]: [85.0,85.0,25.0,26.0,30.0,0.5]
1.0 : [distance=13.507097038392336]: [89.0,63.0,24.0,20.0,38.0,0.5]
1.0 : [distance=52.386233758479044]: [84.0,92.0,68.0,37.0,44.0,0.5]
1.0 : [distance=22.210310208434212]: [89.0,68.0,26.0,39.0,42.0,0.5]
1.0 : [distance=36.03171946576312]: [89.0,101.0,18.0,25.0,13.0,0.5]
1.0 : [distance=22.807173446102958]: [86.0,84.0,18.0,14.0,16.0,0.5]
1.0 : [distance=14.610985117055456]: [85.0,65.0,25.0,14.0,18.0,0.5]
1.0 : [distance=18.45442639073566]: [88.0,61.0,19.0,21.0,13.0,0.5]
1.0 : [distance=26.23568088406133]: [92.0,56.0,14.0,16.0,10.0,0.5]
1.0 : [distance=30.61265230034901]: [95.0,50.0,29.0,25.0,50.0,0.5]
1.0 : [distance=17.555249028246802]: [91.0,75.0,24.0,22.0,11.0,0.5]
1.0 : [distance=32.21451541988305]: [83.0,40.0,29.0,25.0,38.0,0.5]
1.0 : [distance=14.63802362902934]: [89.0,74.0,19.0,23.0,16.0,0.5]
1.0 : [distance=18.037465651708676]: [85.0,64.0,24.0,22.0,11.0,0.5]
1.0 : [distance=31.26719924834838]: [94.0,48.0,11.0,23.0,43.0,0.5]
1.0 : [distance=19.22341565956041]: [87.0,52.0,21.0,19.0,30.0,0.5]
1.0 : [distance=15.710738089586245]: [85.0,65.0,23.0,29.0,15.0,0.5]
1.0 : [distance=17.559343931179136]: [84.0,82.0,21.0,21.0,19.0,0.5]
1.0 : [distance=23.055853689655322]: [88.0,49.0,20.0,22.0,19.0,0.5]
1.0 : [distance=11.781112493352193]: [96.0,67.0,26.0,26.0,36.0,0.5]
1.0 : [distance=8.010440724493497]: [90.0,63.0,24.0,24.0,24.0,0.5]
1.0 : [distance=27.481613053557545]: [90.0,45.0,33.0,34.0,27.0,0.5]
1.0 : [distance=17.976487106918295]: [90.0,72.0,14.0,15.0,18.0,0.5]
1.0 : [distance=33.90650115731999]: [91.0,55.0,4.0,8.0,13.0,0.5]
1.0 : [distance=26.507808144521608]: [91.0,52.0,15.0,22.0,11.0,0.5]
1.0 : [distance=7.645142663957237]: [87.0,71.0,32.0,19.0,27.0,1.0]
1.0 : [distance=11.83480398812023]: [89.0,77.0,26.0,20.0,19.0,1.0]
1.0 : [distance=26.295775596003992]: [89.0,67.0,5.0,17.0,14.0,1.0]
1.0 : [distance=19.475403554411006]: [85.0,51.0,26.0,24.0,23.0,1.0]
1.0 : [distance=22.753664586257027]: [103.0,75.0,19.0,30.0,13.0,1.0]
1.0 : [distance=18.28309973073562]: [90.0,63.0,16.0,21.0,14.0,1.0]
1.0 : [distance=30.67850108096023]: [90.0,63.0,29.0,23.0,57.0,2.0]
1.0 : [distance=12.298858965060592]: [90.0,67.0,35.0,19.0,35.0,2.0]
1.0 : [distance=18.63619283749865]: [87.0,66.0,27.0,22.0,9.0,2.0]
1.0 : [distance=9.816977281911395]:
PLAGIAT MERUPAKAN TINDAKAN TIDAK

1.0 : [distance=20.51065012240617]: [86.0,54.0,20.0,21.0,16.0,2.0]


1.0 : [distance=21.927550875508327]: [90.0,80.0,19.0,14.0,42.0,2.0]
1.0 : [distance=8.406764927624202]: [96.0,72.0,28.0,19.0,30.0,2.0]
1.0 : [distance=25.46868839781899]: [91.0,55.0,9.0,25.0,16.0,2.0]
1.0 : [distance=10.82422711452259]: [95.0,78.0,27.0,25.0,30.0,2.0]
1.0 : [distance=49.82912472043377]: [92.0,101.0,34.0,30.0,64.0,2.0]
1.0 : [distance=31.215158414606655]: [89.0,51.0,41.0,22.0,48.0,2.0]
1.0 : [distance=36.67460480666168]: [91.0,99.0,42.0,33.0,16.0,2.0]
1.0 : [distance=14.21659611317242]: [94.0,58.0,21.0,18.0,26.0,2.0]
1.0 : [distance=23.458498407373128]: [88.0,47.0,33.0,26.0,29.0,2.0]
1.0 : [distance=21.218914298316843]: [92.0,65.0,17.0,25.0,9.0,2.0]
1.0 : [distance=19.731958015781757]: [92.0,79.0,22.0,20.0,11.0,3.0]
1.0 : [distance=26.056697302730317]: [84.0,83.0,20.0,25.0,7.0,3.0]
1.0 : [distance=3.1618390155257496]: [88.0,68.0,27.0,21.0,26.0,3.0]
1.0 : [distance=31.04619955817227]: [86.0,48.0,20.0,20.0,6.0,3.0]
1.0 : [distance=22.457887324596726]: [99.0,69.0,45.0,32.0,30.0,3.0]
1.0 : [distance=17.10092601014762]: [88.0,66.0,23.0,12.0,15.0,3.0]
1.0 : [distance=19.597514777063516]: [89.0,62.0,42.0,30.0,20.0,3.0]
1.0 : [distance=19.51446180206238]: [90.0,51.0,23.0,17.0,27.0,3.0]
1.0 : [distance=32.35743750527551]: [81.0,61.0,32.0,37.0,53.0,3.0]
1.0 : [distance=11.093652301426191]: [89.0,65.0,26.0,18.0,36.0,3.0]
1.0 : [distance=7.581183953915614]: [92.0,75.0,26.0,26.0,24.0,3.0]
1.0 : [distance=12.029260505660602]: [85.0,59.0,25.0,20.0,25.0,3.0]
1.0 : [distance=56.18326545745956]: [92.0,61.0,18.0,13.0,81.0,3.0]
1.0 : [distance=19.273076410529715]: [89.0,63.0,22.0,27.0,10.0,4.0]
1.0 : [distance=22.244199592311375]: [90.0,84.0,18.0,23.0,13.0,4.0]
1.0 : [distance=29.298673325593505]: [88.0,95.0,25.0,19.0,14.0,4.0]
1.0 : [distance=36.205664848702526]: [89.0,35.0,27.0,29.0,17.0,4.0]
1.0 : [distance=14.896171278907833]: [91.0,80.0,37.0,23.0,27.0,4.0]
1.0 : [distance=42.03788173147994]: [91.0,109.0,33.0,15.0,18.0,4.0]
1.0 : [distance=28.945302888265548]: [91.0,65.0,17.0,5.0,7.0,4.0]
1.0 : [distance=44.40485720737272]: [88.0,107.0,29.0,20.0,50.0,4.0]
1.0 : [distance=37.9055478695855]: [87.0,76.0,22.0,55.0,9.0,4.0]
1.0 : [distance=18.149897922235066]: [87.0,86.0,28.0,23.0,21.0,4.0]
1.0 : [distance=29.186472331142966]: [87.0,42.0,26.0,23.0,17.0,4.0]
1.0 : [distance=15.315222802477097]: [88.0,80.0,24.0,25.0,17.0,4.0]
1.0 : [distance=26.39556750914889]: [86.0,67.0,11.0,15.0,8.0,4.0]
1.0 : [distance=31.053935324894265]: [92.0,40.0,19.0,20.0,21.0,4.0]
1.0 : [distance=19.508850944527477]: [85.0,60.0,17.0,21.0,14.0,4.0]
1.0 : [distance=24.74207809733212]: [89.0,90.0,15.0,17.0,25.0,4.0]
1.0 : [distance=21.451583358215817]: [91.0,57.0,15.0,16.0,16.0,4.0]
1.0 : [distance=34.222462864647746]: [96.0,55.0,48.0,39.0,42.0,4.0]
1.0 : [distance=35.51194916010166]: [79.0,101.0,17.0,27.0,23.0,4.0]
1.0 : [distance=67.3886918410767]:
PLAGIAT MERUPAKAN TINDAKAN TIDAK

1.0 : [distance=14.995440608131462]: [89.0,76.0,14.0,21.0,24.0,4.0]


1.0 : [distance=24.65183385135087]: [88.0,93.0,29.0,27.0,31.0,4.0]
1.0 : [distance=21.401098800801687]: [90.0,67.0,10.0,16.0,16.0,4.0]
1.0 : [distance=21.661700120348225]: [92.0,73.0,24.0,21.0,48.0,4.0]
1.0 : [distance=57.00871826296609]: [91.0,55.0,28.0,28.0,82.0,4.0]
1.0 : [distance=29.960766892012085]: [83.0,45.0,19.0,21.0,13.0,4.0]
1.0 : [distance=13.75226079379277]: [90.0,74.0,19.0,14.0,22.0,4.0]
1.0 : [distance=11.590106095003355]: [92.0,66.0,21.0,16.0,33.0,5.0]
1.0 : [distance=12.56111219938695]: [93.0,63.0,26.0,18.0,18.0,5.0]
1.0 : [distance=22.313654715093467]: [87.0,59.0,15.0,19.0,12.0,5.0]
1.0 : [distance=31.225678176688014]: [86.0,44.0,21.0,11.0,15.0,5.0]
1.0 : [distance=13.19005754790196]: [87.0,64.0,16.0,20.0,24.0,5.0]
1.0 : [distance=14.703291075257832]: [92.0,57.0,21.0,23.0,22.0,5.0]
1.0 : [distance=23.638283943428792]: [99.0,59.0,17.0,19.0,11.0,5.0]
1.0 : [distance=21.704202112927184]: [92.0,80.0,10.0,26.0,20.0,6.0]
1.0 : [distance=10.988429913921863]: [95.0,60.0,26.0,22.0,28.0,6.0]
1.0 : [distance=14.362732178569068]: [91.0,63.0,25.0,26.0,15.0,6.0]
1.0 : [distance=15.858045847990281]: [92.0,62.0,37.0,21.0,36.0,6.0]
1.0 : [distance=28.596822755539417]: [95.0,50.0,13.0,14.0,15.0,6.0]
1.0 : [distance=26.442696159969515]: [90.0,76.0,37.0,19.0,50.0,6.0]
1.0 : [distance=44.718442012501555]: [96.0,70.0,70.0,26.0,36.0,6.0]
1.0 : [distance=12.674165884272467]: [92.0,62.0,20.0,23.0,20.0,6.0]
1.0 : [distance=14.362732178569068]: [91.0,63.0,25.0,26.0,15.0,6.0]
1.0 : [distance=16.61168884708161]: [92.0,82.0,27.0,24.0,37.0,6.0]
1.0 : [distance=17.6844297625188]: [90.0,63.0,12.0,26.0,21.0,6.0]
1.0 : [distance=39.387473172997126]: [88.0,37.0,9.0,15.0,16.0,6.0]
1.0 : [distance=50.93004785958586]: [100.0,60.0,29.0,23.0,76.0,6.0]
1.0 : [distance=50.85215502222638]: [98.0,43.0,35.0,23.0,69.0,6.0]
1.0 : [distance=39.130924498456345]: [92.0,87.0,57.0,25.0,44.0,6.0]
1.0 : [distance=39.38647752187306]: [93.0,99.0,36.0,34.0,48.0,6.0]
1.0 : [distance=13.865147817434858]: [90.0,72.0,17.0,19.0,19.0,6.0]
1.0 : [distance=48.39280152080478]: [97.0,93.0,21.0,20.0,68.0,6.0]
1.0 : [distance=23.87331427466314]: [93.0,50.0,18.0,25.0,17.0,6.0]
1.0 : [distance=15.773535288659467]: [90.0,57.0,20.0,26.0,33.0,6.0]
1.0 : [distance=17.218715226888165]: [92.0,76.0,31.0,28.0,41.0,6.0]
1.0 : [distance=21.91159832127226]: [88.0,55.0,19.0,17.0,14.0,6.0]
1.0 : [distance=9.841248250937168]: [89.0,63.0,24.0,29.0,29.0,6.0]
1.0 : [distance=54.93636101807085]: [93.0,84.0,58.0,47.0,62.0,7.0]
1.0 : [distance=26.531529593323622]: [97.0,71.0,29.0,22.0,52.0,8.0]
1.0 : [distance=31.633840113700778]: [84.0,99.0,33.0,19.0,26.0,8.0]
1.0 : [distance=55.107564192122105]: [96.0,44.0,42.0,23.0,73.0,8.0]
1.0 : [distance=11.789292686100037]: [90.0,62.0,22.0,21.0,21.0,8.0]
1.0 : [distance=34.61025534404088]: [92.0,94.0,18.0,17.0,6.0,8.0]
1.0 : [distance=26.531529593323622]:
PLAGIAT MERUPAKAN TINDAKAN TIDAK

1.0 : [distance=39.356015026556726]: [91.0,69.0,25.0,25.0,66.0,8.0]


1.0 : [distance=20.304234332829566]: [93.0,59.0,17.0,20.0,14.0,8.0]
1.0 : [distance=32.66547372490594]: [90.0,50.0,26.0,22.0,53.0,8.0]
1.0 : [distance=52.72081329100189]: [91.0,62.0,59.0,47.0,60.0,8.0]
1.0 : [distance=62.91586225024752]: [92.0,77.0,86.0,41.0,31.0,10.0]
1.0 : [distance=9.925235405546932]: [86.0,66.0,22.0,24.0,26.0,10.0]
1.0 : [distance=50.1258596048337]: [98.0,57.0,31.0,34.0,73.0,10.0]
1.0 : [distance=56.55173324620247]: [95.0,80.0,50.0,64.0,55.0,10.0]
1.0 : [distance=34.32334478459133]: [97.0,92.0,22.0,28.0,49.0,12.0]
1.0 : [distance=15.149597283608882]: [87.0,75.0,25.0,21.0,14.0]
1.0 : [distance=21.29378619539665]: [88.0,56.0,23.0,18.0,12.0]
1.0 : [distance=32.4252862245566]: [84.0,97.0,41.0,20.0,32.0]
1.0 : [distance=25.529884522611518]: [94.0,91.0,27.0,20.0,15.0,0.5]
1.0 : [distance=28.091421197838162]: [97.0,62.0,17.0,13.0,5.0,0.5]
1.0 : [distance=22.333271227876114]: [92.0,85.0,25.0,20.0,12.0,0.5]
1.0 : [distance=28.445289256080056]: [82.0,48.0,27.0,15.0,12.0,0.5]
1.0 : [distance=14.184262560721159]: [88.0,74.0,31.0,25.0,15.0,0.5]
1.0 : [distance=14.788835121832891]: [95.0,77.0,30.0,14.0,21.0,0.5]
1.0 : [distance=31.826898597351846]: [88.0,94.0,26.0,18.0,8.0,0.5]
1.0 : [distance=10.509123198656479]: [91.0,70.0,19.0,19.0,22.0,0.5]
1.0 : [distance=23.993132946209382]: [83.0,54.0,27.0,15.0,12.0,0.5]
1.0 : [distance=48.06243050408602]: [91.0,105.0,40.0,26.0,56.0,0.5]
1.0 : [distance=20.468463798581112]: [86.0,79.0,37.0,28.0,14.0,0.5]
1.0 : [distance=18.107084442445412]: [89.0,82.0,23.0,14.0,35.0,0.5]
1.0 : [distance=16.946971420852297]: [90.0,73.0,24.0,23.0,11.0,0.5]
1.0 : [distance=21.30675052927981]: [90.0,87.0,19.0,25.0,19.0,0.5]
1.0 : [distance=19.364845105502347]: [89.0,82.0,33.0,32.0,18.0,0.5]
1.0 : [distance=27.770014341882074]: [85.0,79.0,17.0,8.0,9.0,0.5]
1.0 : [distance=51.2978344006391]: [85.0,119.0,30.0,26.0,17.0,0.5]
1.0 : [distance=14.045811036015298]: [78.0,69.0,24.0,18.0,31.0,0.5]
1.0 : [distance=38.65056929730594]: [88.0,107.0,34.0,21.0,27.0,0.5]
1.0 : [distance=51.1876322615956]: [89.0,115.0,17.0,27.0,7.0,0.5]
1.0 : [distance=17.873114064209837]: [92.0,67.0,23.0,15.0,12.0,0.5]
1.0 : [distance=36.231154720286334]: [89.0,101.0,27.0,34.0,14.0,0.5]
1.0 : [distance=29.76976748356394]: [91.0,84.0,11.0,12.0,10.0,0.5]
1.0 : [distance=43.774195966300105]: [94.0,101.0,41.0,20.0,53.0,0.5]
1.0 : [distance=25.2439827259606]: [88.0,46.0,29.0,22.0,18.0,0.5]
1.0 : [distance=55.902434591709564]: [88.0,122.0,35.0,29.0,42.0,0.5]
1.0 : [distance=21.55121208424175]: [84.0,88.0,28.0,25.0,35.0,0.5]
1.0 : [distance=15.872567606744951]: [90.0,79.0,18.0,15.0,24.0,0.5]
1.0 : [distance=17.511634894522487]: [87.0,69.0,22.0,26.0,11.0,0.5]
1.0 : [distance=30.1396071436003]: [65.0,63.0,19.0,20.0,14.0,0.5]
1.0 : [distance=21.419338823439602]: [90.0,64.0,12.0,17.0,14.0,0.5]
1.0 : [distance=18.93704319700076]:
PLAGIAT MERUPAKAN TINDAKAN TIDAK

1.0 : [distance=21.163783279275115]: [88.0,81.0,41.0,27.0,36.0,0.5]


1.0 : [distance=44.63714092707]: [86.0,78.0,52.0,29.0,62.0,0.5]
1.0 : [distance=26.13634130996944]: [82.0,74.0,38.0,28.0,48.0,0.5]
1.0 : [distance=35.63665363315206]: [86.0,58.0,36.0,27.0,59.0,0.5]
1.0 : [distance=15.226090347403545]: [94.0,56.0,30.0,18.0,27.0,0.5]
1.0 : [distance=15.85505745417324]: [87.0,57.0,30.0,30.0,22.0,0.5]
1.0 : [distance=15.084636076748568]: [94.0,75.0,20.0,25.0,38.0,0.5]
1.0 : [distance=45.74235716523579]: [83.0,68.0,17.0,20.0,71.0,0.5]
1.0 : [distance=15.262962041289008]: [93.0,56.0,25.0,21.0,33.0,0.5]
1.0 : [distance=15.923135544481948]: [101.0,65.0,18.0,21.0,22.0,0.5]
1.0 : [distance=7.485749237476372]: [92.0,65.0,25.0,20.0,31.0,0.5]
1.0 : [distance=23.368960975430955]: [92.0,58.0,14.0,16.0,13.0,0.5]
1.0 : [distance=16.789659043491646]: [86.0,58.0,16.0,23.0,23.0,0.5]
1.0 : [distance=18.61118778926855]: [85.0,62.0,15.0,13.0,22.0,0.5]
1.0 : [distance=23.846400582296386]: [86.0,57.0,13.0,20.0,13.0,0.5]
1.0 : [distance=22.431387843836678]: [86.0,54.0,26.0,30.0,13.0,0.5]
1.0 : [distance=31.37216779622678]: [81.0,41.0,33.0,27.0,34.0,1.0]
1.0 : [distance=15.64841982289472]: [91.0,67.0,32.0,26.0,13.0,1.0]
1.0 : [distance=18.47884775074992]: [91.0,80.0,21.0,19.0,14.0,1.0]
1.0 : [distance=15.336226404796731]: [92.0,60.0,23.0,15.0,19.0,1.0]
1.0 : [distance=23.65279565505886]: [91.0,60.0,32.0,14.0,8.0,1.0]
1.0 : [distance=18.021877694438594]: [93.0,65.0,28.0,22.0,10.0,1.0]
1.0 : [distance=25.808314966013157]: [87.0,92.0,21.0,22.0,37.0,1.0]
1.0 : [distance=16.141444965304316]: [95.0,62.0,24.0,23.0,14.0,1.0]
1.0 : [distance=28.43609686727539]: [93.0,59.0,41.0,30.0,48.0,1.0]
1.0 : [distance=25.791151592550225]: [84.0,82.0,43.0,32.0,38.0,2.0]
1.0 : [distance=9.238692283566333]: [87.0,71.0,33.0,20.0,22.0,2.0]
1.0 : [distance=28.36677099263031]: [86.0,44.0,24.0,15.0,18.0,2.0]
1.0 : [distance=8.16539628850507]: [86.0,66.0,28.0,24.0,21.0,2.0]
1.0 : [distance=16.854447168590042]: [88.0,58.0,31.0,17.0,17.0,2.0]
1.0 : [distance=11.09968955930941]: [90.0,61.0,28.0,29.0,31.0,2.0]
1.0 : [distance=56.88482088286064]: [88.0,69.0,70.0,24.0,64.0,2.0]
1.0 : [distance=20.9847556825935]: [93.0,87.0,18.0,17.0,26.0,2.0]
1.0 : [distance=15.308606569849136]: [98.0,58.0,33.0,21.0,28.0,2.0]
1.0 : [distance=27.49653282621954]: [91.0,44.0,18.0,18.0,23.0,2.0]
1.0 : [distance=44.79087759975438]: [87.0,75.0,37.0,19.0,70.0,2.0]
1.0 : [distance=22.726431528341394]: [94.0,91.0,30.0,26.0,25.0,2.0]
1.0 : [distance=27.77960360204761]: [88.0,85.0,14.0,15.0,10.0,2.0]
1.0 : [distance=39.88071065276106]: [89.0,109.0,26.0,25.0,27.0,2.0]
1.0 : [distance=16.829804633426825]: [87.0,59.0,37.0,27.0,34.0,2.0]
1.0 : [distance=16.27401705753237]: [93.0,58.0,20.0,23.0,18.0,2.0]
1.0 : [distance=25.613782489337275]: [88.0,57.0,9.0,15.0,16.0,2.0]
1.0 : [distance=16.654029635024852]: [94.0,65.0,38.0,27.0,17.0,3.0]
1.0 : [distance=21.965893879693493]:
PLAGIAT MERUPAKAN TINDAKAN TIDAK

1.0 : [distance=19.469361815157537]: [90.0,55.0,20.0,20.0,16.0,3.0]


1.0 : [distance=9.887463367439343]: [91.0,64.0,21.0,17.0,26.0,3.0]
1.0 : [distance=24.683297993102727]: [88.0,47.0,35.0,26.0,33.0,3.0]
1.0 : [distance=67.5462840867945]: [85.0,58.0,83.0,49.0,51.0,3.0]
1.0 : [distance=17.33089642973334]: [91.0,54.0,25.0,22.0,35.0,4.0]
1.0 : [distance=33.34686740654036]: [98.0,50.0,27.0,25.0,53.0,4.0]
1.0 : [distance=8.821051606826568]: [86.0,62.0,29.0,21.0,26.0,4.0]
1.0 : [distance=25.49062054489896]: [89.0,48.0,32.0,22.0,14.0,4.0]
1.0 : [distance=20.949374953144122]: [82.0,68.0,20.0,22.0,9.0,4.0]
1.0 : [distance=13.327468212929233]: [83.0,70.0,17.0,19.0,23.0,4.0]
1.0 : [distance=10.870321643206944]: [96.0,70.0,21.0,26.0,21.0,4.0]
1.0 : [distance=80.85992388890537]: [94.0,117.0,77.0,56.0,52.0,4.0]
1.0 : [distance=31.014341566811417]: [93.0,45.0,11.0,14.0,21.0,4.0]
1.0 : [distance=20.635979046046206]: [93.0,49.0,27.0,21.0,29.0,4.0]
1.0 : [distance=25.38489020651263]: [84.0,73.0,46.0,32.0,39.0,4.0]
1.0 : [distance=23.023301009168875]: [91.0,63.0,17.0,17.0,46.0,4.0]
1.0 : [distance=17.028441331942034]: [90.0,57.0,31.0,18.0,37.0,4.0]
1.0 : [distance=29.608234543070804]: [87.0,45.0,19.0,13.0,16.0,4.0]
1.0 : [distance=15.516821058581186]: [91.0,68.0,14.0,20.0,19.0,4.0]
1.0 : [distance=46.06361582729123]: [91.0,86.0,52.0,47.0,52.0,4.0]
1.0 : [distance=39.57553178614511]: [88.0,46.0,15.0,33.0,55.0,4.0]
1.0 : [distance=19.823415805440682]: [85.0,52.0,22.0,23.0,34.0,4.0]
1.0 : [distance=29.07507473865104]: [89.0,72.0,33.0,27.0,55.0,4.0]
1.0 : [distance=15.28831318614806]: [95.0,59.0,23.0,18.0,19.0,4.0]
1.0 : [distance=19.125928671014414]: [96.0,56.0,38.0,26.0,23.0,5.0]
1.0 : [distance=29.048255498888935]: [90.0,52.0,10.0,17.0,12.0,5.0]
1.0 : [distance=30.438900074161815]: [94.0,45.0,20.0,16.0,12.0,5.0]
1.0 : [distance=38.40467152037045]: [99.0,42.0,14.0,21.0,49.0,5.0]
1.0 : [distance=39.923748855689]: [93.0,102.0,47.0,23.0,37.0,5.0]
1.0 : [distance=7.180481701346524]: [94.0,71.0,25.0,26.0,31.0,5.0]
1.0 : [distance=22.437287413655437]: [87.0,54.0,41.0,29.0,23.0,6.0]
1.0 : [distance=20.153183885712497]: [92.0,67.0,15.0,14.0,14.0,6.0]
1.0 : [distance=33.68879835281803]: [98.0,101.0,31.0,26.0,32.0,6.0]
1.0 : [distance=41.56631645778338]: [93.0,43.0,11.0,16.0,54.0,6.0]
1.0 : [distance=10.74757171902221]: [93.0,68.0,24.0,18.0,19.0,6.0]
1.0 : [distance=37.71098170285124]: [95.0,36.0,38.0,19.0,15.0,6.0]
1.0 : [distance=21.704202112927184]: [92.0,80.0,10.0,26.0,20.0,6.0]
1.0 : [distance=18.061817519394175]: [96.0,74.0,27.0,25.0,43.0,6.0]
1.0 : [distance=32.37132148551056]: [95.0,93.0,21.0,27.0,47.0,6.0]
1.0 : [distance=41.53918345258864]: [86.0,109.0,16.0,22.0,28.0,6.0]
1.0 : [distance=26.621846595534628]: [91.0,46.0,30.0,24.0,39.0,7.0]
1.0 : [distance=28.67710429815777]: [85.0,50.0,12.0,18.0,14.0,7.0]
1.0 : [distance=20.947034914558515]: [91.0,57.0,33.0,23.0,12.0,8.0]
1.0 : [distance=53.22090328265331]:
PLAGIAT MERUPAKAN TINDAKAN TIDAK

1.0 : [distance=22.078303248350256]: [93.0,70.0,46.0,30.0,33.0,8.0]


1.0 : [distance=18.38105652654369]: [87.0,55.0,36.0,19.0,25.0,8.0]
1.0 : [distance=54.767844889161424]: [98.0,123.0,28.0,24.0,31.0,8.0]
1.0 : [distance=25.565764942031656]: [82.0,55.0,18.0,23.0,44.0,8.0]
1.0 : [distance=31.098102791037594]: [97.0,80.0,17.0,20.0,53.0,8.0]
1.0 : [distance=17.886730681061728]: [100.0,83.0,25.0,24.0,28.0,8.0]
1.0 : [distance=74.51464196037561]: [91.0,138.0,45.0,21.0,48.0,10.0]
1.0 : [distance=32.40895498492662]: [92.0,41.0,37.0,22.0,37.0,10.0]
1.0 : [distance=54.98330558111946]: [86.0,123.0,20.0,25.0,23.0,10.0]
1.0 : [distance=30.056817174142658]: [91.0,93.0,35.0,34.0,37.0,10.0]
1.0 : [distance=27.74216907371065]: [87.0,87.0,15.0,23.0,11.0,10.0]
1.0 : [distance=45.27837467145001]: [87.0,56.0,52.0,43.0,55.0,10.0]
1.0 : [distance=19.745782303331573]: [99.0,75.0,26.0,24.0,41.0,12.0]
1.0 : [distance=18.655822405357323]: [91.0,68.0,27.0,26.0,14.0,16.0]
1.0 : [distance=63.84335791719533]: [98.0,99.0,57.0,45.0,65.0,20.0]
{"r":[4.68,15.11,34.875,15.439,50.335,4.44],"c":
[91.684,75.474,59.553,39.053,129.0,5.961],"n":38,"identifier":"VL49"}
Weight : [props optional]: Point:
1.0 : [distance=36.43562655247567]: [84.0,80.0,47.0,33.0,97.0,0.5]
1.0 : [distance=110.45135694364518]: [91.0,72.0,155.0,68.0,82.0,0.5]
1.0 : [distance=43.8325418425252]: [92.0,57.0,64.0,36.0,90.0,0.5]
1.0 : [distance=37.06469646950741]: [87.0,90.0,43.0,28.0,156.0,2.0]
1.0 : [distance=171.74936493610585]: [92.0,60.0,30.0,27.0,297.0,2.0]
1.0 : [distance=51.021947167839215]: [89.0,89.0,23.0,18.0,104.0,3.0]
1.0 : [distance=52.724728425423]: [90.0,96.0,34.0,49.0,169.0,4.0]
1.0 : [distance=26.099549061599447]: [86.0,78.0,47.0,39.0,107.0,5.0]
1.0 : [distance=65.97549096889881]: [97.0,44.0,113.0,45.0,150.0,5.0]
1.0 : [distance=42.12234234200099]: [90.0,70.0,25.0,23.0,112.0,5.0]
1.0 : [distance=55.045456222039945]: [95.0,62.0,64.0,42.0,76.0,6.0]
1.0 : [distance=43.572711621620975]: [82.0,56.0,67.0,38.0,92.0,6.0]
1.0 : [distance=68.70112339660594]: [91.0,74.0,87.0,50.0,67.0,6.0]
1.0 : [distance=46.87752393943721]: [92.0,79.0,70.0,32.0,84.0,7.0]
1.0 : [distance=20.203624952439153]: [92.0,93.0,58.0,35.0,120.0,7.0]
1.0 : [distance=24.66197025803702]: [90.0,67.0,77.0,39.0,114.0,8.0]
1.0 : [distance=78.44845534125803]: [92.0,95.0,85.0,48.0,200.0,8.0]
1.0 : [distance=43.41509727900109]: [92.0,93.0,22.0,28.0,123.0,9.0]
1.0 : [distance=48.98068511005547]: [92.0,108.0,53.0,33.0,94.0,12.0]
1.0 : [distance=31.18454641169313]: [93.0,77.0,39.0,37.0,108.0,16.0]
1.0 : [distance=76.997622233676]: [94.0,83.0,81.0,34.0,201.0,20.0]
1.0 : [distance=37.16502512844258]: [91.0,96.0,35.0,22.0,135.0,0.5]
1.0 : [distance=100.43420018341352]: [98.0,74.0,148.0,75.0,159.0,0.5]
1.0 : [distance=50.570712744973406]: [90.0,63.0,45.0,24.0,85.0,1.0]
1.0 : [distance=38.98416869175549]: [83.0,78.0,31.0,19.0,115.0,1.0]
1.0 : [distance=57.60096068422073]:
PLAGIAT MERUPAKAN TINDAKAN TIDAK

1.0 : [distance=42.96757820739147]: [86.0,55.0,29.0,35.0,108.0,4.0]


1.0 : [distance=109.05287051005114]: [94.0,43.0,154.0,82.0,121.0,4.0]
1.0 : [distance=30.5567141068589]: [92.0,73.0,33.0,34.0,115.0,5.0]
1.0 : [distance=44.54154935690461]: [92.0,53.0,51.0,33.0,92.0,6.0]
1.0 : [distance=53.57289316689423]: [97.0,94.0,43.0,43.0,82.0,6.0]
1.0 : [distance=75.17594896856357]: [99.0,86.0,58.0,42.0,203.0,6.0]
1.0 : [distance=50.64013530120229]: [98.0,66.0,103.0,57.0,114.0,6.0]
1.0 : [distance=88.29452589670602]: [102.0,82.0,34.0,78.0,203.0,7.0]
1.0 : [distance=104.87688089102076]: [95.0,73.0,20.0,25.0,225.0,8.0]
1.0 : [distance=17.375940357980312]: [88.0,91.0,56.0,35.0,126.0,9.0]
1.0 : [distance=75.04351115507578]: [96.0,69.0,53.0,43.0,203.0,12.0]
1.0 : [distance=41.96523797217092]: [98.0,77.0,55.0,35.0,89.0,15.0]

Anda mungkin juga menyukai