PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
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 Ketua
Tanda Tangan
: 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.....................................................................................64 Lampiran 2 : Konfigurasi Group Dan User Sistem Hadoop...............................66 Lampiran 3 : Melakukan Disable IPv6................................................................68 Lampiran 4 : Install Hadoop................................................................................68 Lampiran 5 : Konfigurasi Environment Hadoop Single Node Cluster...............70 Lampiran 6 : Konfigurasi Hostname, Hosts, & SSH..........................................74 Lampiran 7 : Identifikasi Master Node & Slave Node........................................75 Lampiran 8 : Konfigurasi Environment Hadoop Multi Node Cluster.................76 Lampiran 9 : Install maven..................................................................................84 Lampiran 10 : Install Mahout................................................................................85 Lampiran 11 : Source code kelas KmeansDriver.java..........................................86 Lampiran 12 : Source code kelas ClusterIterator.java..........................................93 Lampiran 13 : Source code Kelas CIMapper.java................................................98 Lampiran 14 : Source code Kelas CIReducer.java..............................................100 Lampiran 15 : Source code Kelas VectorDataCreator.java................................102 Lampiran 16 : Source code Kelas VectorCentroidCreator.java..........................104 Lampiran 17 : Source code file coresite.xml.....................................................106 Lampiran 18 : Source code file mapredsite.xml................................................107 Lampiran 19 : Source code file hdfssite.xml.....................................................108 Lampiran 20 : Source code file yarnsite.xml.....................................................109 Lampiran 21 : Hasil kalkulasi manual.................................................................110 Lampiran 22 : Hasil KMeans dengan menggunakan library Mahout................118
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 2.1.1
Penambangan Data 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 2 2 ialah sebagai berikut: d ( ¯A , ¯B)=√(X 1− X 2) +(Y 1−Y 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 2.3.1
Hadoop 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.
Gambar 2.2: Distribusi chunk data (Yahoo!, 2014). Data pada Hadoop programming framework menggunakan konsep record oriented. Setiap input file akan dipecah dalam baris atau format lain yang spesifik pada aplikasi. Setiap proses berjalan pada sebuah node dalam keseluruhan cluster
PLAGIAT MERUPAKAN TINDAKAN TIDAK 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
Gambar 2.3: Yarn berfungsi sebagai ResourceManager pada sistem Hadoop
Sedangkan NodeManager berjalan pada slave node. NodeManager betugas mencari sumber daya yang memungkinkan untuk memproses data pada slave node
dan mengirimkan laporan aktivitas secara periodik kepada
ResourceManager. Sumber data proses pada sistem Hadoop membutuhkan potongan bitesize yang disebut containers. Container adalah sebuah koleksi dari semua sumber daya yang diperlukan untuk menjalankan aplikasi seperti CPU cores, memory, network bandwidth, dan ruang pada disk. Container bersifat umum atau generic sehingga dapat menjalankan berbagai jenis model komputasi, selama sumber daya yang diperlukan cukup untuk menjalankan model komputasi tersebut. Semua proses Container yang berjalan pada slave node dimonitor oleh service NodeManager pada slave node (deRoos, D. et al., 2014). 2.4 2.4.1
MapReduce Definisi MapReduce Hadoop mengurangin komunikasi yang dapat dikerjakan oleh sebuah
proses. Setiap record diproses oleh sebuah task yang terisolasi dari task yang lain. Model pemrograman yang digunakan untuk manajemen data disebut MapReduce.
PLAGIAT MERUPAKAN TINDAKAN TIDAK 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.5: Proses Mapping (Yahoo!, 2014).
Gambar 2.6 menunjukkan Proses reducing sebuah iterasi list pada seluruh value masukkan untuk menghasilkan sebuah kumpulan value sebagai output.
Gambar 2.6: Proses Reducing (Yahoo!, 2014). Dalam MapReduce, tidak ada value yang berdiri sendiri. Setiap value memiliki key yang berasosiasi. key bertugas untuk mengidentifikasi value. Fungsi mapping dan reducing tidak hanya menerima value, tetapi pasangan key dan value. Sebuah fungsi reducing berfungsi untuk mengubah sebuah list dari value yang besar ke dalam sebuah (atau beberapa) value output. Semua output value tidak mengalami proses reduce bersamaan. Tetapi semua value yang memiliki key
PLAGIAT MERUPAKAN TINDAKAN TIDAK 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.
Gambar 2.7: Proses Shuffle(Yahoo!, 2014).
2.5
Apache Mahout Mahout memiliki tiga kualitas yang dapat dijelaskan sebagai berikut.
Pertama, Mahout merupakan library machine learning dari Apache. Mahout memiliki dasar komputasi yakni recommender engine, clustering, dan classification. Selain itu, Apache Mahout bersifat scalable. Apache Mahout dapat digunakan sebagai pilihan alat machine learning ketika koleksi data yang akan diproses sangat besar yang ukurannya tidak dapat disimpan dalam sebuah komputer. Mahout ditulis dengan menggunakan bahasa Java dan beberapa dari
PLAGIAT MERUPAKAN TINDAKAN TIDAK 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
. 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 merupakan pusat dari kelompok (cluster) data zj. 3) Reducer Proses dilanjutkan pada pada fase Reducer. Proses pertama yang dilakukan ialah membaca luaran item data 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.
Gambar 2.8: Konsep MapReduce pada library Mahout berdasarkan algoritma K Means (Vishnupriya N. et al., 2015)
2.5.2
Metode Menjalankan Library Mahout Berdasarkan website resmi Mahout (2016), library Mahout dapat berjalan
pada sistem lokal atau pun pada Hadoop Distributed File System (HDFS). Metode yang digunakan dalam menjalankan library Mahout ialah melalui command line. Metode yang digunakan untuk menjalankan perintah KMeans ialah dengan menjalankan perintah $mahout kmeans pada command line lalu diikuti dengan parameter pada yang tertera pada tabel 2.1.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 23
Tabel 2.1: Metode Menjalankan Library Mahout berdasarkan algoritma K Means menggunakan Command Line (Mahout, 2016) Perintah
Penjelasan
input atau i
Merupakan alamat file input yang harus berupa Sequence File
clusters atau c
Merupakan alamat input file centroid yang harus berupa sequence file
output atau o
Merupakan alamat file output yang harus berupa Sequence File
distanceMeasure atau Algoritma pengukuran jarak. dm convergenceDelta atau cd
Nilai konvergen merupakan nilai untuk menetukan proses iterasi berhenti. Secara default, convergen delta bernilai 0.5
maxIter (x) maxIter Jumlah maksimal iterasi maxRed (r) maxRed Jumlah Task Reducin. Secara default, bernilai 2 k (k) k
Nilai jumlah kelompok data atau cluster
overwrite (ow)
Jika direktori ada, maka perintah ini akan menghapus direktori tersebut, sebelum menjalankan perintah atau Job.
help (h)
Menampilkan informasi help
clustering (cl)
Jika job berjalan maka jalankan proses clustering setelah iterasi berjalan.
PLAGIAT MERUPAKAN TINDAKAN TIDAK 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 gamma glutamil transpeptidase dalam darah
6.
drink
jumlah minum minuman beralkohol per hari dalam satuan halfpint (257 ml per satuan)
7.
selector
Attribut ini adalah atribut class yang nantinya menjadi sumber penghitungan akurasi. Bernilai 1 atau 2. Jika 1 maka instance tersebut menderita penyakit hati. Jika 2 maka instance tersebut normal.
7. Data liver disorder tidak memiliki missing value atau hilangnya sebuah item data. 3.1.2
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® 4GB Core(TM) i3 CPU 530 @ 2.93GHz
500GB
RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
Slave1 Node
Intel® 4GB Core(TM) i3 CPU 530 @ 2.93GHz
500GB
RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
Slave2 Node
Intel® 4GB Core(TM) i3 CPU 530 @ 2.93GHz
500GB
RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
Slave3 Node
Intel® 4GB Core(TM) i3 CPU 530 @ 2.93GHz
500GB
RTL8111/8168/8411 PCI Express Gigabit Ethernet 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.
Gambar 3.2: Skema single node cluster
3.3.2
Skema Multi Node Cluster Skema multi node cluster yang memperlihatkan sistem Hadoop yang
diimplementasikan pada multi komputer dapat dilihat pada gambar 3.3. Perancangan multi node cluster menggunakan 4 komputer yang terdiri dari 1
PLAGIAT MERUPAKAN TINDAKAN TIDAK 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 . 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 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 4.3.1
Implementasi Metode KMeans Menggunakan Library Mahout 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.
Gambar 4.1: Menjalankan metode seqdumper pada command line
Langkah selanjutnya ialah dengan menjalankan perintah startdfs.sh dan startyarn.sh, Perintah startdfs.sh berfungsi untuk menjalankan service NameNode dan SecondaryNamenode pada master node, dan DataNode pada slave node. Sedangkan perintah startyarn.sh berfungsi untuk menjalankan service ResourceManager pada master node dan service NodeManager pada slave node. Gambar 4.2 menunjukkan proses membuat direktori pada HDFS. Perintah yang digunakan ialah $hdfs dfs mkdir diikuti nama direkori. Direktori yang
PLAGIAT MERUPAKAN TINDAKAN TIDAK 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.2: Membuat direktori data dan direktori centroid pada hdfs Gambar 4.3 menunjukkan proses menyimpan file data training pada HDFS.
Gambar 4.3: Menyimpan sebuah file data trining dari sistem lokal ke dalam HDFS Sedangkan gambar 4.4 menunjukkan proses menyimpan file data centroid pada HDFS. Perintah yang digunakan dalam menyimpan file ialah $hdfs dfs copyFromLocal kemudian diikuti lokasi input data dan diakhir dengan lokasi output data. Lokasi input data berasal dari sistem lokal, sedangkan lokasi output ditujukan pada direktori pada HDFS. Perintah $hdfs dfs ls digunakan mengecek keberhasilan dalam menyimpan file pada HDFS.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 50
Gambar 4.4: Menyimpan sebuah file centroid pada sistem lokal ke dalam HDFS
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
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.5: Menjalankan KMeans menggunakan library Mahout
Gambar 4.6 menunjukkan hasil akhir dari iterasi yan gditunjukkan dengan menampilkan beberapa metadata dari proses KMeans dan waktu komputasi dijalankan.
Gambar 4.6: Akhir dari iterasi KMeans Gambar 4.7 menunjukkan perintah $hdfs dfs ls dapat digunakan untuk melihat hasil dari proses KMeans. Sedangkan perintah $hdfs dfs ls output atau
PLAGIAT MERUPAKAN TINDAKAN TIDAK 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.7: Perintah $hdfs dfs ls output Gambar 4.8 menunjukkan hasil KMeans melalui aplikasi NameNode web interface.
Gambar 4.8: Hasil proses KMeans pada direktori /user/hduser/output
Gambar 4.9 menunjukkan bahwa aplikasi ini dapat menunjukkan aktivitas dan semua informasi dari sistem Hadoop baik sebelum dan sesudah komputasi
PLAGIAT MERUPAKAN TINDAKAN TIDAK 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.
Gambar 4.9: Summary berisi ringkasan informasi DataNode
NameNode web interface juga dapat memperlihatkan informasi tentang DataNode. Gambar 4.10 menampilkan beberapa informasi DataNode pada sistem Hadoop. Beberapa informasi DataNode yang ditampilkan ialah alamat slave node. Status slave node digunakan yang diperlihatkan pada Admin State. Informasi ukuran HDFS juga diperlihatkan seperti total ukuran disk yang dapat digunakan untuk menyimpan data (capacity) dan total kapasitas disk yang telah digunakan (used).
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 54
Gambar 4.10: Informasi DataNode pada aplikasi NameNode Web Interface Gambar 4.11 menjelaskan bahwa HDFS memiliki direktori data, centroid, dan output.
Gambar 4.11: Informasi direktori /user/hduser pada HDFS Gambar 4.12 menunjukkan informasi direktori /user/hduser/data pada HDFS yakni permission, owner, group, size, replication, block size, dan name. Permission merupakan hak akses atau priviledge yang diijinkan olah sistem Hadoop. Owner merupakan pemilik atau pengguna sistem Hadoop. Group merupakan pengelompokkan data pada sistem Hadoop. Replication menjelaskan bahwa data mengalami proses replikasi di beberapa node. Block size merupakan ukuran blok data. Sedangkan name merupakan name file tersebut.
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 55
Gambar 4.12: Informasi direktori /user/hduser/data Aplikasi ini juga mampu menampilkan metadata dari file pada HDFS. Gambar 4.13 menampilkan metadata dan availability dari file sampleseqfile. Availability menunjukkan bahwa file sampleseqfile telah mengalami proses replikasi pada 3 DataNode.
Gambar 4.13: Informasi file sampleseqfile
PLAGIAT MERUPAKAN TINDAKAN TIDAK 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.
Gambar 5.1: Analisa hasil KMeans menggunakan clusterdump Hasil dari clusterdump ditampilkan pada gambar 5.2. VL27 merupakan identitas yang secara otomatis diberikan oleh Mahout. “n” merupakan total data pada kelompok tersebut. “c” merupakan centroid atau pusat kelompok akhir. “r” merupakan radius dari kelompok. Sedangkan dibaris selanjutnya merupakan pengelompokkan data yang telah masuk kategori kelompok VL27.
Gambar 5.2: Beberapa hasil analisa cluster data dengan identitas VL27 Gambar 5.2 menunjukkan bahwa kelompok VL27 memiliki total item data sebanyak 306. Sedangkan pada gambar 5.3 menunjukkan bahwa kelompok VL49 memiliki total item data sebanyak 38. Sehingga total item data keseluruhan ialah 344.
Gambar 5.3: Beberapa hasil analisa cluster data dengan identitas VL49
PLAGIAT MERUPAKAN TINDAKAN TIDAK 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 Label Centroid
Jumlah Item Data
Item Data Centroid
C1
89.95751 69.21241 26.8169 22.87581 27.05882 3.148692 306 634 83 9346 699 353 81
VL27
89.958
C2
91.68421 75.47368 59.5526 39.05263 129 053 421 3158 158
5.960526 38 316
VL49
91.684
5.961
5.2
69.212
75.474
26.817
59.553
22.876
39.053
27.059
129
3.149
306
38
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 mahout pada 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. 5 4.9 4.8
Waktu Eksekusi KMeans (menit)
4.7 4.6 4.5 4.4 1
2
3
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_DELT A_OPTION)); int maxIterations = Integer.parseInt(getOption(DefaultOptionCreator.MAX_ITERATIONS_OPTIO N)); if (hasOption(DefaultOptionCreator.OVERWRITE_OPTION)) { HadoopUtil.delete(getConf(), output); } DistanceMeasure measure = ClassUtils.instantiateAs(measureClass, DistanceMeasure.class); if (hasOption(DefaultOptionCreator.NUM_CLUSTERS_OPTION)) { int numClusters = Integer.parseInt(getOption(DefaultOptionCreator.NUM_CLUSTERS_OPTION) ); Long seed = null; if (hasOption(DefaultOptionCreator.RANDOM_SEED)) { seed = Long.parseLong(getOption(DefaultOptionCreator.RANDOM_SEED)); } clusters = RandomSeedGenerator.buildRandom(getConf(), input, clusters, numClusters, measure, seed); } boolean runClustering = hasOption(DefaultOptionCreator.CLUSTERING_OPTION); boolean runSequential = getOption(DefaultOptionCreator.METHOD_OPTION).equalsIgnoreCase( DefaultOptionCreator.SEQUENTIAL_METHOD); double clusterClassificationThreshold = 0.0; if (hasOption(DefaultOptionCreator.OUTLIER_THRESHOLD)) { clusterClassificationThreshold = Double.parseDouble(getOption(DefaultOptionCreator.OUTLIER_THRESHOL D)); } run(getConf(), input, clusters, output, convergenceDelta, maxIterations,
PLAGIAT MERUPAKAN TINDAKAN TIDAK 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 be between 0 and 1. Vectors * having pdf below this value will not be clustered. * @param runSequential * if true execute sequential algorithm */ public static void run(Configuration conf, Path input, Path clustersIn, Path output, double convergenceDelta, int maxIterations, boolean runClustering, double clusterClassificationThreshold, boolean runSequential) throws IOException, InterruptedException, ClassNotFoundException { // iterate until the clusters converge String delta = Double.toString(convergenceDelta); if (log.isInfoEnabled()) { log.info("Input: {} Clusters In: {} Out: {}", input, clustersIn, output); log.info("convergence: {} max Iterations: {}", convergenceDelta, maxIterations); } Path clustersOut = buildClusters(conf, input, clustersIn, output, maxIterations,
PLAGIAT MERUPAKAN TINDAKAN TIDAK 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 be between 0 and 1. Vectors * having pdf below this value will not be clustered. * @param runSequential * if true execute sequential algorithm */ public static void run(Path input, Path clustersIn, Path output, double convergenceDelta, int maxIterations, boolean runClustering, double clusterClassificationThreshold, boolean runSequential) throws IOException, InterruptedException, ClassNotFoundException { run(new Configuration(), input, clustersIn, output, convergenceDelta, maxIterations, runClustering, clusterClassificationThreshold, runSequential); } /** * Iterate over the input vectors to produce cluster directories for each iteration
PLAGIAT MERUPAKAN TINDAKAN TIDAK 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 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 be between 0 and 1. Vectors * having pdf below this value will not be clustered. * @param runSequential * if true execute sequential algorithm */ public static void clusterData(Configuration conf, Path input, Path clustersIn, Path output, double clusterClassificationThreshold, boolean runSequential) throws IOException, InterruptedException, ClassNotFoundException { if (log.isInfoEnabled()) { log.info("Running Clustering"); log.info("Input: {} Clusters In: {} Out: {}", input, clustersIn, output); } ClusterClassifier.writePolicy(new KMeansClusteringPolicy(), clustersIn); ClusterClassificationDriver.run(conf, input, output, new Path(output, PathDirectory.CLUSTERED_POINTS_DIRECTORY), clusterClassificationThreshold, true, runSequential); } }
PLAGIAT MERUPAKAN TINDAKAN TIDAK 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} 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 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(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 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, either express 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 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 { private ClusterClassifier classifier; private ClusteringPolicy policy; @Override protected void reduce(IntWritable key, Iterable values, Context context) throws IOException, InterruptedException { Iterator 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 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/runningkmeans clusteringalgorithm.html package org.apache.mahout.clustering.liverdisorder2.kmeans; import java.io.BufferedReader; import java.io.FileReader; import java.util.ArrayList; import java.util.List; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.SequenceFile; import org.apache.hadoop.io.Text; import org.apache.mahout.math.DenseVector; import org.apache.mahout.math.NamedVector; import org.apache.mahout.math.VectorWritable; public class VectorDataCreation { private VectorDataCreation() { } public static final int NUM_COLUMNS = 7; public static void main(String[] args) throws Exception { String INPUT_FILE = "bupa_data_with_selection.csv"; String OUTPUT_FILE = "sampleseqfile"; List apples = new ArrayList(); 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();
Path(
SequenceFile.Reader reader = new SequenceFile.Reader(fs, new
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/runningkmeans clusteringalgorithm.html package org.apache.mahout.clustering.liverdisorder2.kmeans; import java.io.BufferedReader; import java.io.FileReader; import java.util.ArrayList; import java.util.List; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.SequenceFile; import org.apache.hadoop.io.Text; import org.apache.mahout.math.DenseVector; import org.apache.mahout.math.NamedVector; import org.apache.mahout.math.VectorWritable; public class 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 apples = new ArrayList(); 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); path,
SequenceFile.Writer writer = new SequenceFile.Writer(fs, conf, 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
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 107
<property> hadoop.tmp.dir /app/hadoop/tmp <description>A base for other temporary directories. <property> fs.default.name hdfs://master:54310 <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.
Lampiran 18 : Source Code File Mapredsite.xml
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 108
<property> mapred.job.tracker master:54311 <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. <property> mapreduce.framework.name yarn Lampiran 19 : Source Code File Hdfssite.xml <property> dfs.replication 3 <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
<property> dfs.DataNode.data.dir /app/hadoop/tmp/files <property> dfs.NameNode.name.dir /app/hadoop/tmp/metadata Lampiran 20 : Source Code File Yarnsite.xml <property> yarn.resourcemanager.hostname localhost <property> yarn.nodemanager.auxservices mapreduce_shuffle
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 110
<property> yarn.nodemanager.resource.memorymb 2200 Amount of physical memory, in MB, that can be allocated for containers. > <property> yarn.scheduler.minimumallocationmb 500 Lampiran 21 : Hasil Kalkulasi Manual mcv,alkphos,sgpt,sgot,gammagt,drinks,Cluster Selector 85,92,45,27,31,0,C1 85,64,59,32,23,0,C1 86,54,33,16,54,0,C1 91,78,34,24,36,0,C1 87,70,12,28,10,0,C1 98,55,13,17,17,0,C1 88,62,20,17,9,0.5,C1 88,67,21,11,11,0.5,C1 92,54,22,20,7,0.5,C1 90,60,25,19,5,0.5,C1 89,52,13,24,15,0.5,C1 82,62,17,17,15,0.5,C1 90,64,61,32,13,0.5,C1 86,77,25,19,18,0.5,C1 96,67,29,20,11,0.5,C1 91,78,20,31,18,0.5,C1 89,67,23,16,10,0.5,C1 89,79,17,17,16,0.5,C1 91,107,20,20,56,0.5,C1 94,116,11,33,11,0.5,C1 92,59,35,13,19,0.5,C1 93,23,35,20,20,0.5,C1 90,60,23,27,5,0.5,C1 96,68,18,19,19,0.5,C1 92,70,24,13,26,0.5,C1 90,47,28,15,18,0.5,C1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 111
88,66,20,21,10,0.5,C1 91,102,17,13,19,0.5,C1 87,41,31,19,16,0.5,C1 86,79,28,16,17,0.5,C1 91,57,31,23,42,0.5,C1 93,77,32,18,29,0.5,C1 88,96,28,21,40,0.5,C1 94,65,22,18,11,0.5,C1 85,54,47,33,22,0.5,C1 79,39,14,19,9,0.5,C1 85,85,25,26,30,0.5,C1 89,63,24,20,38,0.5,C1 84,92,68,37,44,0.5,C1 89,68,26,39,42,0.5,C1 89,101,18,25,13,0.5,C1 86,84,18,14,16,0.5,C1 85,65,25,14,18,0.5,C1 88,61,19,21,13,0.5,C1 92,56,14,16,10,0.5,C1 95,50,29,25,50,0.5,C1 91,75,24,22,11,0.5,C1 83,40,29,25,38,0.5,C1 89,74,19,23,16,0.5,C1 85,64,24,22,11,0.5,C1 94,48,11,23,43,0.5,C1 87,52,21,19,30,0.5,C1 85,65,23,29,15,0.5,C1 84,82,21,21,19,0.5,C1 88,49,20,22,19,0.5,C1 96,67,26,26,36,0.5,C1 90,63,24,24,24,0.5,C1 90,45,33,34,27,0.5,C1 90,72,14,15,18,0.5,C1 91,55,4,8,13,0.5,C1 91,52,15,22,11,0.5,C1 87,71,32,19,27,1,C1 89,77,26,20,19,1,C1 89,67,5,17,14,1,C1 85,51,26,24,23,1,C1 103,75,19,30,13,1,C1 90,63,16,21,14,1,C1 90,63,29,23,57,2,C1 90,67,35,19,35,2,C1 87,66,27,22,9,2,C1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 112
90,73,34,21,22,2,C1 86,54,20,21,16,2,C1 90,80,19,14,42,2,C1 96,72,28,19,30,2,C1 91,55,9,25,16,2,C1 95,78,27,25,30,2,C1 92,101,34,30,64,2,C1 89,51,41,22,48,2,C1 91,99,42,33,16,2,C1 94,58,21,18,26,2,C1 88,47,33,26,29,2,C1 92,65,17,25,9,2,C1 92,79,22,20,11,3,C1 84,83,20,25,7,3,C1 88,68,27,21,26,3,C1 86,48,20,20,6,3,C1 99,69,45,32,30,3,C1 88,66,23,12,15,3,C1 89,62,42,30,20,3,C1 90,51,23,17,27,3,C1 81,61,32,37,53,3,C1 89,65,26,18,36,3,C1 92,75,26,26,24,3,C1 85,59,25,20,25,3,C1 92,61,18,13,81,3,C1 89,63,22,27,10,4,C1 90,84,18,23,13,4,C1 88,95,25,19,14,4,C1 89,35,27,29,17,4,C1 91,80,37,23,27,4,C1 91,109,33,15,18,4,C1 91,65,17,5,7,4,C1 88,107,29,20,50,4,C1 87,76,22,55,9,4,C1 87,86,28,23,21,4,C1 87,42,26,23,17,4,C1 88,80,24,25,17,4,C1 86,67,11,15,8,4,C1 92,40,19,20,21,4,C1 85,60,17,21,14,4,C1 89,90,15,17,25,4,C1 91,57,15,16,16,4,C1 96,55,48,39,42,4,C1 79,101,17,27,23,4,C1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 113
90,134,14,20,14,4,C1 89,76,14,21,24,4,C1 88,93,29,27,31,4,C1 90,67,10,16,16,4,C1 92,73,24,21,48,4,C1 91,55,28,28,82,4,C1 83,45,19,21,13,4,C1 90,74,19,14,22,4,C1 92,66,21,16,33,5,C1 93,63,26,18,18,5,C1 87,59,15,19,12,5,C1 86,44,21,11,15,5,C1 87,64,16,20,24,5,C1 92,57,21,23,22,5,C1 99,59,17,19,11,5,C1 92,80,10,26,20,6,C1 95,60,26,22,28,6,C1 91,63,25,26,15,6,C1 92,62,37,21,36,6,C1 95,50,13,14,15,6,C1 90,76,37,19,50,6,C1 96,70,70,26,36,6,C1 92,62,20,23,20,6,C1 91,63,25,26,15,6,C1 92,82,27,24,37,6,C1 90,63,12,26,21,6,C1 88,37,9,15,16,6,C1 100,60,29,23,76,6,C1 98,43,35,23,69,6,C1 92,87,57,25,44,6,C1 93,99,36,34,48,6,C1 90,72,17,19,19,6,C1 97,93,21,20,68,6,C1 93,50,18,25,17,6,C1 90,57,20,26,33,6,C1 92,76,31,28,41,6,C1 88,55,19,17,14,6,C1 89,63,24,29,29,6,C1 93,84,58,47,62,7,C1 97,71,29,22,52,8,C1 84,99,33,19,26,8,C1 96,44,42,23,73,8,C1 90,62,22,21,21,8,C1 92,94,18,17,6,8,C1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 114
97,71,29,22,52,8,C1 91,69,25,25,66,8,C1 93,59,17,20,14,8,C1 90,50,26,22,53,8,C1 91,62,59,47,60,8,C1 92,77,86,41,31,10,C1 86,66,22,24,26,10,C1 98,57,31,34,73,10,C1 95,80,50,64,55,10,C1 97,92,22,28,49,12,C1 87,75,25,21,14,0,C1 88,56,23,18,12,0,C1 84,97,41,20,32,0,C1 94,91,27,20,15,0.5,C1 97,62,17,13,5,0.5,C1 92,85,25,20,12,0.5,C1 82,48,27,15,12,0.5,C1 88,74,31,25,15,0.5,C1 95,77,30,14,21,0.5,C1 88,94,26,18,8,0.5,C1 91,70,19,19,22,0.5,C1 83,54,27,15,12,0.5,C1 91,105,40,26,56,0.5,C1 86,79,37,28,14,0.5,C1 89,82,23,14,35,0.5,C1 90,73,24,23,11,0.5,C1 90,87,19,25,19,0.5,C1 89,82,33,32,18,0.5,C1 85,79,17,8,9,0.5,C1 85,119,30,26,17,0.5,C1 78,69,24,18,31,0.5,C1 88,107,34,21,27,0.5,C1 89,115,17,27,7,0.5,C1 92,67,23,15,12,0.5,C1 89,101,27,34,14,0.5,C1 91,84,11,12,10,0.5,C1 94,101,41,20,53,0.5,C1 88,46,29,22,18,0.5,C1 88,122,35,29,42,0.5,C1 84,88,28,25,35,0.5,C1 90,79,18,15,24,0.5,C1 87,69,22,26,11,0.5,C1 65,63,19,20,14,0.5,C1 90,64,12,17,14,0.5,C1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 115
85,58,18,24,16,0.5,C1 88,81,41,27,36,0.5,C1 86,78,52,29,62,0.5,C1 82,74,38,28,48,0.5,C1 86,58,36,27,59,0.5,C1 94,56,30,18,27,0.5,C1 87,57,30,30,22,0.5,C1 94,75,20,25,38,0.5,C1 83,68,17,20,71,0.5,C1 93,56,25,21,33,0.5,C1 101,65,18,21,22,0.5,C1 92,65,25,20,31,0.5,C1 92,58,14,16,13,0.5,C1 86,58,16,23,23,0.5,C1 85,62,15,13,22,0.5,C1 86,57,13,20,13,0.5,C1 86,54,26,30,13,0.5,C1 81,41,33,27,34,1,C1 91,67,32,26,13,1,C1 91,80,21,19,14,1,C1 92,60,23,15,19,1,C1 91,60,32,14,8,1,C1 93,65,28,22,10,1,C1 87,92,21,22,37,1,C1 95,62,24,23,14,1,C1 93,59,41,30,48,1,C1 84,82,43,32,38,2,C1 87,71,33,20,22,2,C1 86,44,24,15,18,2,C1 86,66,28,24,21,2,C1 88,58,31,17,17,2,C1 90,61,28,29,31,2,C1 88,69,70,24,64,2,C1 93,87,18,17,26,2,C1 98,58,33,21,28,2,C1 91,44,18,18,23,2,C1 87,75,37,19,70,2,C1 94,91,30,26,25,2,C1 88,85,14,15,10,2,C1 89,109,26,25,27,2,C1 87,59,37,27,34,2,C1 93,58,20,23,18,2,C1 88,57,9,15,16,2,C1 94,65,38,27,17,3,C1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 116
91,71,12,22,11,3,C1 90,55,20,20,16,3,C1 91,64,21,17,26,3,C1 88,47,35,26,33,3,C1 85,58,83,49,51,3,C1 91,54,25,22,35,4,C1 98,50,27,25,53,4,C1 86,62,29,21,26,4,C1 89,48,32,22,14,4,C1 82,68,20,22,9,4,C1 83,70,17,19,23,4,C1 96,70,21,26,21,4,C1 94,117,77,56,52,4,C1 93,45,11,14,21,4,C1 93,49,27,21,29,4,C1 84,73,46,32,39,4,C1 91,63,17,17,46,4,C1 90,57,31,18,37,4,C1 87,45,19,13,16,4,C1 91,68,14,20,19,4,C1 91,86,52,47,52,4,C1 88,46,15,33,55,4,C1 85,52,22,23,34,4,C1 89,72,33,27,55,4,C1 95,59,23,18,19,4,C1 96,56,38,26,23,5,C1 90,52,10,17,12,5,C1 94,45,20,16,12,5,C1 99,42,14,21,49,5,C1 93,102,47,23,37,5,C1 94,71,25,26,31,5,C1 87,54,41,29,23,6,C1 92,67,15,14,14,6,C1 98,101,31,26,32,6,C1 93,43,11,16,54,6,C1 93,68,24,18,19,6,C1 95,36,38,19,15,6,C1 92,80,10,26,20,6,C1 96,74,27,25,43,6,C1 95,93,21,27,47,6,C1 86,109,16,22,28,6,C1 91,46,30,24,39,7,C1 85,50,12,18,14,7,C1 91,57,33,23,12,8,C1
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 117
91,52,76,32,24,8,C1 93,70,46,30,33,8,C1 87,55,36,19,25,8,C1 98,123,28,24,31,8,C1 82,55,18,23,44,8,C1 97,80,17,20,53,8,C1 100,83,25,24,28,8,C1 91,138,45,21,48,10,C1 92,41,37,22,37,10,C1 86,123,20,25,23,10,C1 91,93,35,34,37,10,C1 87,87,15,23,11,10,C1 87,56,52,43,55,10,C1 99,75,26,24,41,12,C1 91,68,27,26,14,16,C1 98,99,57,45,65,20,C1 84,80,47,33,97,0.5,C2 91,72,155,68,82,0.5,C2 92,57,64,36,90,0.5,C2 87,90,43,28,156,2,C2 92,60,30,27,297,2,C2 89,89,23,18,104,3,C2 90,96,34,49,169,4,C2 86,78,47,39,107,5,C2 97,44,113,45,150,5,C2 90,70,25,23,112,5,C2 95,62,64,42,76,6,C2 82,56,67,38,92,6,C2 91,74,87,50,67,6,C2 92,79,70,32,84,7,C2 92,93,58,35,120,7,C2 90,67,77,39,114,8,C2 92,95,85,48,200,8,C2 92,93,22,28,123,9,C2 92,108,53,33,94,12,C2 93,77,39,37,108,16,C2 94,83,81,34,201,20,C2 91,96,35,22,135,0.5,C2 98,74,148,75,159,0.5,C2 90,63,45,24,85,1,C2 83,78,31,19,115,1,C2 82,72,31,20,84,3,C2 86,55,29,35,108,4,C2 94,43,154,82,121,4,C2
PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI 118
92,73,33,34,115,5,C2 92,53,51,33,92,6,C2 97,94,43,43,82,6,C2 99,86,58,42,203,6,C2 98,66,103,57,114,6,C2 102,82,34,78,203,7,C2 95,73,20,25,225,8,C2 88,91,56,35,126,9,C2 96,69,53,43,203,12,C2 98,77,55,35,89,15,C2 Lampiran 22 : Hasil 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]