implementasi kmeans clustering pada lingkungan … · implementasi kmeans clustering pada...
TRANSCRIPT
IMPLEMENTASI KMEANS 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
KMEANS 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
ii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
HALAMAN PERSETUJUAN PEMBIMBING
SKRIPSI
IMPLEMENTASI KMEANS 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 KMEANS 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
vii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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
viii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 TERPUJI
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 TERPUJI
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 TERPUJI
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 TERPUJI
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 TERPUJI
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 TERPUJI
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 TERPUJI
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
xvii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
DAFTAR LAMPIRAN
Lampiran 1 : Install Java.....................................................................................64Lampiran 2 : Konfigurasi Group Dan User Sistem Hadoop...............................66Lampiran 3 : Melakukan Disable IPv6................................................................68Lampiran 4 : Install Hadoop................................................................................68Lampiran 5 : Konfigurasi Environment Hadoop Single Node Cluster...............70Lampiran 6 : Konfigurasi Hostname, Hosts, & SSH..........................................74Lampiran 7 : Identifikasi Master Node & Slave Node........................................75Lampiran 8 : Konfigurasi Environment Hadoop Multi Node Cluster.................76Lampiran 9 : Install maven..................................................................................84Lampiran 10 : Install Mahout................................................................................85Lampiran 11 : Source code kelas KmeansDriver.java..........................................86Lampiran 12 : Source code kelas ClusterIterator.java..........................................93Lampiran 13 : Source code Kelas CIMapper.java................................................98Lampiran 14 : Source code Kelas CIReducer.java..............................................100Lampiran 15 : Source code Kelas VectorDataCreator.java................................102Lampiran 16 : Source code Kelas VectorCentroidCreator.java..........................104Lampiran 17 : Source code file coresite.xml.....................................................106Lampiran 18 : Source code file mapredsite.xml................................................107Lampiran 19 : Source code file hdfssite.xml.....................................................108Lampiran 20 : Source code file yarnsite.xml.....................................................109Lampiran 21 : Hasil kalkulasi manual.................................................................110Lampiran 22 : Hasil KMeans dengan menggunakan library Mahout................118
xviii
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 TERPUJI
2
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 TERPUJI
3
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 TERPUJI
4
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 TERPUJI
5
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 TERPUJI
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 TERPUJI
7
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 TERPUJI
8
‖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−X2)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 TERPUJI
9
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 TERPUJI
10
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 TERPUJI
11
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 TERPUJI
12
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.
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
Gambar 2.2: Distribusi chunk data (Yahoo!, 2014).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
13
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 TERPUJI
14
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 TERPUJI
15
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.
Gambar 2.3: Yarn berfungsi sebagai ResourceManager pada sistem Hadoop
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
16
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 TERPUJI
17
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 TERPUJI
18
Gambar 2.6 menunjukkan Proses reducing sebuah iterasi list pada seluruh
value masukkan untuk menghasilkan sebuah kumpulan value sebagai output.
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
Gambar 2.5: Proses Mapping (Yahoo!, 2014).
Gambar 2.6: Proses Reducing (Yahoo!, 2014).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
19
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.
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
Gambar 2.7: Proses Shuffle(Yahoo!, 2014).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
20
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
KMeans
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 TERPUJI
21
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 TERPUJI
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.
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.
Gambar 2.8: Konsep MapReduce pada library Mahout berdasarkan algoritma KMeans (Vishnupriya N. et al., 2015)
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
23
Tabel 2.1: Metode Menjalankan Library Mahout berdasarkan algoritma KMeans menggunakan Command Line (Mahout, 2016)
Perintah Penjelasan
input atau i Merupakan alamat file input yang harus berupaSequence File
clusters atau c Merupakan alamat input file centroid yang harus berupasequence file
output atau o Merupakan alamat file output yang harus berupaSequence File
distanceMeasure ataudm
Algoritma pengukuran jarak.
convergenceDeltaatau cd
Nilai konvergen merupakan nilai untuk menetukanproses iterasi berhenti. Secara default, convergen deltabernilai 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 menghapusdirektori tersebut, sebelum menjalankan perintah atauJob.
help (h) Menampilkan informasi help
clustering (cl) Jika job berjalan maka jalankan proses clusteringsetelah iterasi berjalan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 TERPUJI
25
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 TERPUJI
26
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 gammaglutamil 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 KMeans 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 TERPUJI
27
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 keras
a) Spesifikasi komputer cluster.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
28
Tabel 3.2: Spesifikasi Komputer Cluster
Jenis Node Processor Memory Hard Drive Network
Master Node Intel®Core(TM) i3CPU 530 @2.93GHz
4GB 500GB RTL8111/8168/8411PCI Express GigabitEthernet Controller
Slave1 Node Intel®Core(TM) i3CPU 530 @2.93GHz
4GB 500GB RTL8111/8168/8411PCI Express GigabitEthernet Controller
Slave2 Node Intel®Core(TM) i3CPU 530 @2.93GHz
4GB 500GB RTL8111/8168/8411PCI Express GigabitEthernet Controller
Slave3 Node Intel®Core(TM) i3CPU 530 @2.93GHz
4GB 500GB RTL8111/8168/8411PCI Express GigabitEthernet Controller
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:
a) Ubuntu 14.04
Ubuntu merupakan sistem operasi yang menggunakan Linux sebagai
kernelnya.
b) Sun Java 7
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
29
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 TERPUJI
30
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 TERPUJI
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.
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
Gambar 3.2: Skemasingle node cluster
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 TERPUJI
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 TERPUJI
34
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 TERPUJI
35
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 TERPUJI
36
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 TERPUJI
37
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 TERPUJI
38
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 TERPUJI
39
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 TERPUJI
40
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 TERPUJI
41
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 TERPUJI
42
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 TERPUJI
43
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 TERPUJI
44
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 TERPUJI
45
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 TERPUJI
46
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 TERPUJI
47
menginput atau melakukan import dan secara otomatis Eclipse akan melakukan
compile source code Mahout.
4.3 Implementasi Metode KMeans 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 TERPUJI
48
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.
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
Gambar 4.1: Menjalankan metode seqdumper pada command line
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
49
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.3 menunjukkan proses menyimpan file data training pada
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.
Gambar 4.2: Membuat direktori data dan direktori centroid pada hdfs
Gambar 4.3: Menyimpan sebuah file data trining dari sistem lokal ke dalamHDFS
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
50
4.3.2 Proses Menjalankan Komputasi KMeans
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
Gambar 4.4: Menyimpan sebuah file centroid pada sistem lokal ke dalam HDFS
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.6 menunjukkan hasil akhir dari iterasi yan gditunjukkan dengan
menampilkan beberapa metadata dari proses KMeans dan waktu komputasi
dijalankan.
Gambar 4.7 menunjukkan perintah $hdfs dfs ls dapat digunakan untuk
melihat hasil dari proses KMeans. Sedangkan perintah $hdfs dfs ls output atau
Gambar 4.5: Menjalankan KMeans menggunakan library Mahout
Gambar 4.6: Akhir dari iterasi KMeans
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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.8 menunjukkan hasil KMeans melalui aplikasi NameNode web
interface.
Gambar 4.9 menunjukkan bahwa aplikasi ini dapat menunjukkan aktivitas
dan semua informasi dari sistem Hadoop baik sebelum dan sesudah komputasi
Gambar 4.7: Perintah $hdfs dfs ls output
Gambar 4.8: Hasil proses KMeans pada direktori /user/hduser/output
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
53
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.
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).
Gambar 4.9: Summary berisi ringkasan informasi DataNode
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
54
Gambar 4.11 menjelaskan bahwa HDFS memiliki direktori data, centroid,
dan output.
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.
Gambar 4.10: Informasi DataNode pada aplikasi NameNode Web Interface
Gambar 4.11: Informasi direktori /user/hduser pada HDFS
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
55
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
Gambar 4.12: Informasi direktori /user/hduser/data
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 KMeans 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 TERPUJI
57
iterasi. Sedangkan analisa_menggunakan_clusterdumper_liverdisorder.txt
merupakan file hasil analisa.
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 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.1: Analisa hasil KMeans menggunakan clusterdump
Gambar 5.2: Beberapa hasil analisa cluster data dengan identitas VL27
Gambar 5.3: Beberapa hasil analisa cluster data dengan identitas VL49
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
58
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
LabelCentroid Item Data Centroid
JumlahItemData
C1 89.95751634
69.2124183
26.81699346
22.87581699
27.05882353
3.14869281
306
VL27 89.958 69.212 26.817 22.876 27.059 3.149 306
C2 91.68421053
75.47368421
59.55263158
39.05263158
129 5.960526316
38
VL49 91.684 75.474 59.553 39.053 129 5.961 38
5.2 Analisa Unjuk Kerja Implementasi KMeans 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 TERPUJI
59
menunjukkan bahwa semakin banyak jumlah slave node maka waktu eksekusi K
Means semakin cepat.
Tabel 5.2: Unjuk kerja implementasi KMeans menggunakan library mahoutpada lingkungan big data
Percobaan ke Waktu eksekusi KMeans 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.
1 2 34.4
4.5
4.6
4.7
4.8
4.9
5
Waktu Eksekusi KMeans (menit)
Gambar 5.4: Grafik hasil unjuk kerja sistem Hadoop
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 TERPUJI
61
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 TERPUJI
62
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 TERPUJI
63
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 TERPUJI
64
LAMPIRANLAMPIRAN
Lampiran 1 : Install Java
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
65
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
66
Lampiran 2 : Konfigurasi Group Dan User Sistem Hadoop
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
67
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
68
Lampiran 3 : Melakukan Disable IPv6
Lampiran 4 : Install Hadoop
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
69
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
70
Lampiran 5 : Konfigurasi Environment Hadoop Single Node Cluster
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
71
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
72
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
73
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
74
Lampiran 6 : Konfigurasi Hostname, Hosts, & SSH
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
75
Lampiran 7 : Identifikasi Master Node & Slave Node
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
76
Lampiran 8 : Konfigurasi Environment Hadoop Multi Node Cluster
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
77
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
78
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
79
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
80
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
81
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
82
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
83
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
84
Lampiran 9 : Install Maven
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
85
Lampiran 10 : Install Mahout
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
86
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 TERPUJI
87
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 TERPUJI
88
Path output = getOutputPath(); String measureClass = getOption(DefaultOptionCreator.DISTANCE_MEASURE_OPTION); if (measureClass == null) { measureClass = SquaredEuclideanDistanceMeasure.class.getName(); } double convergenceDelta = Double.parseDouble(getOption(DefaultOptionCreator.CONVERGENCE_DELTA_OPTION)); int maxIterations = Integer.parseInt(getOption(DefaultOptionCreator.MAX_ITERATIONS_OPTION)); 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_THRESHOLD)); } run(getConf(), input, clusters, output, convergenceDelta, maxIterations,
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
89
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 bebetween 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 TERPUJI
90
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 bebetween 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 TERPUJI
91
* * * @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 TERPUJI
92
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 bebetween 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 TERPUJI
93
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 TERPUJI
94
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 = policy.select(probabilities);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
95
// 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 <= numIterations) { for (VectorWritable vw : new SequenceFileDirValueIterable<VectorWritable>(inPath, PathType.LIST, PathFilters.logsCRCFilter(), conf)) { Vector vector = vw.get(); // classification yields probabilities Vector probabilities = classifier.classify(vector); // policy selects weights for models given those probabilities Vector weights = classifier.getPolicy().select(probabilities);
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
96
// 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 TERPUJI
97
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 TERPUJI
98
* * @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 IOException { for (FileStatus part : fs.listStatus(filePath, PathFilters.partFilter())) { SequenceFileValueIterator<ClusterWritable> iterator = new SequenceFileValueIterator<>( part.getPath(), true, conf); while (iterator.hasNext()) { ClusterWritable value = iterator.next(); if (!value.getValue().isConverged()) { Closeables.close(iterator, true); 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, eitherexpress or implied.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
99
* 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 TERPUJI
100
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 TERPUJI
101
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 TERPUJI
102
super.setup(context); } }
Lampiran 15 : Source Code Kelas VectorDataCreator.java
//sumber : http://bigdatatechworld.blogspot.co.id/2014/09/runningkmeansclusteringalgorithm.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 TERPUJI
103
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);writer.append(new Text(vector.getName()), vec);
}
writer.close();
SequenceFile.Reader reader = new SequenceFile.Reader(fs, new Path(
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
104
OUTPUT_FILE), conf);
Text key = new Text();
VectorWritable value = new VectorWritable();
while (reader.next(key, value)) {System.out.println(key.toString() + ","
+ value.get().asFormatString());}reader.close();
}}
Lampiran 16 : Source Code Kelas VectorCentroidCreator.java
//sumber : http://bigdatatechworld.blogspot.co.id/2014/09/runningkmeansclusteringalgorithm.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() {}
public static final int NUM_COLUMNS = 7;
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
105
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);
SequenceFile.Writer writer = new SequenceFile.Writer(fs, conf, path,
Text.class, VectorWritable.class);
VectorWritable vec = new VectorWritable();
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
106
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());}reader.close();
}}
Lampiran 17 : Source Code File Coresite.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 TERPUJI
107
<! 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>
</configuration>
Lampiran 18 : Source Code File Mapredsite.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, eitherexpress 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. >
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
108
<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 Hdfssite.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, eitherexpress 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 TERPUJI
109
</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 Yarnsite.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, eitherexpress 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 TERPUJI
110
<property> <name>yarn.nodemanager.resource.memorymb</name> <value>2200</value> <! <description>Amount of physical memory, in MB, that can be allocated forcontainers.</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 Selector85,92,45,27,31,0,C185,64,59,32,23,0,C186,54,33,16,54,0,C191,78,34,24,36,0,C187,70,12,28,10,0,C198,55,13,17,17,0,C188,62,20,17,9,0.5,C188,67,21,11,11,0.5,C192,54,22,20,7,0.5,C190,60,25,19,5,0.5,C189,52,13,24,15,0.5,C182,62,17,17,15,0.5,C190,64,61,32,13,0.5,C186,77,25,19,18,0.5,C196,67,29,20,11,0.5,C191,78,20,31,18,0.5,C189,67,23,16,10,0.5,C189,79,17,17,16,0.5,C191,107,20,20,56,0.5,C194,116,11,33,11,0.5,C192,59,35,13,19,0.5,C193,23,35,20,20,0.5,C190,60,23,27,5,0.5,C196,68,18,19,19,0.5,C192,70,24,13,26,0.5,C190,47,28,15,18,0.5,C1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
111
88,66,20,21,10,0.5,C191,102,17,13,19,0.5,C187,41,31,19,16,0.5,C186,79,28,16,17,0.5,C191,57,31,23,42,0.5,C193,77,32,18,29,0.5,C188,96,28,21,40,0.5,C194,65,22,18,11,0.5,C185,54,47,33,22,0.5,C179,39,14,19,9,0.5,C185,85,25,26,30,0.5,C189,63,24,20,38,0.5,C184,92,68,37,44,0.5,C189,68,26,39,42,0.5,C189,101,18,25,13,0.5,C186,84,18,14,16,0.5,C185,65,25,14,18,0.5,C188,61,19,21,13,0.5,C192,56,14,16,10,0.5,C195,50,29,25,50,0.5,C191,75,24,22,11,0.5,C183,40,29,25,38,0.5,C189,74,19,23,16,0.5,C185,64,24,22,11,0.5,C194,48,11,23,43,0.5,C187,52,21,19,30,0.5,C185,65,23,29,15,0.5,C184,82,21,21,19,0.5,C188,49,20,22,19,0.5,C196,67,26,26,36,0.5,C190,63,24,24,24,0.5,C190,45,33,34,27,0.5,C190,72,14,15,18,0.5,C191,55,4,8,13,0.5,C191,52,15,22,11,0.5,C187,71,32,19,27,1,C189,77,26,20,19,1,C189,67,5,17,14,1,C185,51,26,24,23,1,C1103,75,19,30,13,1,C190,63,16,21,14,1,C190,63,29,23,57,2,C190,67,35,19,35,2,C187,66,27,22,9,2,C1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
112
90,73,34,21,22,2,C186,54,20,21,16,2,C190,80,19,14,42,2,C196,72,28,19,30,2,C191,55,9,25,16,2,C195,78,27,25,30,2,C192,101,34,30,64,2,C189,51,41,22,48,2,C191,99,42,33,16,2,C194,58,21,18,26,2,C188,47,33,26,29,2,C192,65,17,25,9,2,C192,79,22,20,11,3,C184,83,20,25,7,3,C188,68,27,21,26,3,C186,48,20,20,6,3,C199,69,45,32,30,3,C188,66,23,12,15,3,C189,62,42,30,20,3,C190,51,23,17,27,3,C181,61,32,37,53,3,C189,65,26,18,36,3,C192,75,26,26,24,3,C185,59,25,20,25,3,C192,61,18,13,81,3,C189,63,22,27,10,4,C190,84,18,23,13,4,C188,95,25,19,14,4,C189,35,27,29,17,4,C191,80,37,23,27,4,C191,109,33,15,18,4,C191,65,17,5,7,4,C188,107,29,20,50,4,C187,76,22,55,9,4,C187,86,28,23,21,4,C187,42,26,23,17,4,C188,80,24,25,17,4,C186,67,11,15,8,4,C192,40,19,20,21,4,C185,60,17,21,14,4,C189,90,15,17,25,4,C191,57,15,16,16,4,C196,55,48,39,42,4,C179,101,17,27,23,4,C1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
113
90,134,14,20,14,4,C189,76,14,21,24,4,C188,93,29,27,31,4,C190,67,10,16,16,4,C192,73,24,21,48,4,C191,55,28,28,82,4,C183,45,19,21,13,4,C190,74,19,14,22,4,C192,66,21,16,33,5,C193,63,26,18,18,5,C187,59,15,19,12,5,C186,44,21,11,15,5,C187,64,16,20,24,5,C192,57,21,23,22,5,C199,59,17,19,11,5,C192,80,10,26,20,6,C195,60,26,22,28,6,C191,63,25,26,15,6,C192,62,37,21,36,6,C195,50,13,14,15,6,C190,76,37,19,50,6,C196,70,70,26,36,6,C192,62,20,23,20,6,C191,63,25,26,15,6,C192,82,27,24,37,6,C190,63,12,26,21,6,C188,37,9,15,16,6,C1100,60,29,23,76,6,C198,43,35,23,69,6,C192,87,57,25,44,6,C193,99,36,34,48,6,C190,72,17,19,19,6,C197,93,21,20,68,6,C193,50,18,25,17,6,C190,57,20,26,33,6,C192,76,31,28,41,6,C188,55,19,17,14,6,C189,63,24,29,29,6,C193,84,58,47,62,7,C197,71,29,22,52,8,C184,99,33,19,26,8,C196,44,42,23,73,8,C190,62,22,21,21,8,C192,94,18,17,6,8,C1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
114
97,71,29,22,52,8,C191,69,25,25,66,8,C193,59,17,20,14,8,C190,50,26,22,53,8,C191,62,59,47,60,8,C192,77,86,41,31,10,C186,66,22,24,26,10,C198,57,31,34,73,10,C195,80,50,64,55,10,C197,92,22,28,49,12,C187,75,25,21,14,0,C188,56,23,18,12,0,C184,97,41,20,32,0,C194,91,27,20,15,0.5,C197,62,17,13,5,0.5,C192,85,25,20,12,0.5,C182,48,27,15,12,0.5,C188,74,31,25,15,0.5,C195,77,30,14,21,0.5,C188,94,26,18,8,0.5,C191,70,19,19,22,0.5,C183,54,27,15,12,0.5,C191,105,40,26,56,0.5,C186,79,37,28,14,0.5,C189,82,23,14,35,0.5,C190,73,24,23,11,0.5,C190,87,19,25,19,0.5,C189,82,33,32,18,0.5,C185,79,17,8,9,0.5,C185,119,30,26,17,0.5,C178,69,24,18,31,0.5,C188,107,34,21,27,0.5,C189,115,17,27,7,0.5,C192,67,23,15,12,0.5,C189,101,27,34,14,0.5,C191,84,11,12,10,0.5,C194,101,41,20,53,0.5,C188,46,29,22,18,0.5,C188,122,35,29,42,0.5,C184,88,28,25,35,0.5,C190,79,18,15,24,0.5,C187,69,22,26,11,0.5,C165,63,19,20,14,0.5,C190,64,12,17,14,0.5,C1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
115
85,58,18,24,16,0.5,C188,81,41,27,36,0.5,C186,78,52,29,62,0.5,C182,74,38,28,48,0.5,C186,58,36,27,59,0.5,C194,56,30,18,27,0.5,C187,57,30,30,22,0.5,C194,75,20,25,38,0.5,C183,68,17,20,71,0.5,C193,56,25,21,33,0.5,C1101,65,18,21,22,0.5,C192,65,25,20,31,0.5,C192,58,14,16,13,0.5,C186,58,16,23,23,0.5,C185,62,15,13,22,0.5,C186,57,13,20,13,0.5,C186,54,26,30,13,0.5,C181,41,33,27,34,1,C191,67,32,26,13,1,C191,80,21,19,14,1,C192,60,23,15,19,1,C191,60,32,14,8,1,C193,65,28,22,10,1,C187,92,21,22,37,1,C195,62,24,23,14,1,C193,59,41,30,48,1,C184,82,43,32,38,2,C187,71,33,20,22,2,C186,44,24,15,18,2,C186,66,28,24,21,2,C188,58,31,17,17,2,C190,61,28,29,31,2,C188,69,70,24,64,2,C193,87,18,17,26,2,C198,58,33,21,28,2,C191,44,18,18,23,2,C187,75,37,19,70,2,C194,91,30,26,25,2,C188,85,14,15,10,2,C189,109,26,25,27,2,C187,59,37,27,34,2,C193,58,20,23,18,2,C188,57,9,15,16,2,C194,65,38,27,17,3,C1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
116
91,71,12,22,11,3,C190,55,20,20,16,3,C191,64,21,17,26,3,C188,47,35,26,33,3,C185,58,83,49,51,3,C191,54,25,22,35,4,C198,50,27,25,53,4,C186,62,29,21,26,4,C189,48,32,22,14,4,C182,68,20,22,9,4,C183,70,17,19,23,4,C196,70,21,26,21,4,C194,117,77,56,52,4,C193,45,11,14,21,4,C193,49,27,21,29,4,C184,73,46,32,39,4,C191,63,17,17,46,4,C190,57,31,18,37,4,C187,45,19,13,16,4,C191,68,14,20,19,4,C191,86,52,47,52,4,C188,46,15,33,55,4,C185,52,22,23,34,4,C189,72,33,27,55,4,C195,59,23,18,19,4,C196,56,38,26,23,5,C190,52,10,17,12,5,C194,45,20,16,12,5,C199,42,14,21,49,5,C193,102,47,23,37,5,C194,71,25,26,31,5,C187,54,41,29,23,6,C192,67,15,14,14,6,C198,101,31,26,32,6,C193,43,11,16,54,6,C193,68,24,18,19,6,C195,36,38,19,15,6,C192,80,10,26,20,6,C196,74,27,25,43,6,C195,93,21,27,47,6,C186,109,16,22,28,6,C191,46,30,24,39,7,C185,50,12,18,14,7,C191,57,33,23,12,8,C1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
117
91,52,76,32,24,8,C193,70,46,30,33,8,C187,55,36,19,25,8,C198,123,28,24,31,8,C182,55,18,23,44,8,C197,80,17,20,53,8,C1100,83,25,24,28,8,C191,138,45,21,48,10,C192,41,37,22,37,10,C186,123,20,25,23,10,C191,93,35,34,37,10,C187,87,15,23,11,10,C187,56,52,43,55,10,C199,75,26,24,41,12,C191,68,27,26,14,16,C198,99,57,45,65,20,C184,80,47,33,97,0.5,C291,72,155,68,82,0.5,C292,57,64,36,90,0.5,C287,90,43,28,156,2,C292,60,30,27,297,2,C289,89,23,18,104,3,C290,96,34,49,169,4,C286,78,47,39,107,5,C297,44,113,45,150,5,C290,70,25,23,112,5,C295,62,64,42,76,6,C282,56,67,38,92,6,C291,74,87,50,67,6,C292,79,70,32,84,7,C292,93,58,35,120,7,C290,67,77,39,114,8,C292,95,85,48,200,8,C292,93,22,28,123,9,C292,108,53,33,94,12,C293,77,39,37,108,16,C294,83,81,34,201,20,C291,96,35,22,135,0.5,C298,74,148,75,159,0.5,C290,63,45,24,85,1,C283,78,31,19,115,1,C282,72,31,20,84,3,C286,55,29,35,108,4,C294,43,154,82,121,4,C2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
118
92,73,33,34,115,5,C292,53,51,33,92,6,C297,94,43,43,82,6,C299,86,58,42,203,6,C298,66,103,57,114,6,C2102,82,34,78,203,7,C295,73,20,25,225,8,C288,91,56,35,126,9,C296,69,53,43,203,12,C298,77,55,35,89,15,C2
Lampiran 22 : Hasil KMeans 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]: [88.0,66.0,20.0,21.0,10.0,0.5]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
119
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]: [90.0,73.0,34.0,21.0,22.0,2.0]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
120
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]: [90.0,134.0,14.0,20.0,14.0,4.0]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
121
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]: [97.0,71.0,29.0,22.0,52.0,8.0]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
122
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]: [85.0,58.0,18.0,24.0,16.0,0.5]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
123
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]: [91.0,71.0,12.0,22.0,11.0,3.0]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
124
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]: [91.0,52.0,76.0,32.0,24.0,8.0]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
125
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]: [82.0,72.0,31.0,20.0,84.0,3.0]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
126
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]
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI