Academia.eduAcademia.edu

Analisis Big Data Berbasis Stream Processing Menggunakan Apache Spark

2016, Jurnal Telematika, vol.11 no.1

Abstrak— Teknologi Big Data memiliki 3 ciri utama yaitu volume, kecepatan, dan kompleksitas data. Pengolahan Big Data dapat dilakukan secara real time dengan menggunakan stream processing. Beberapa metode yang digunakan untuk mengolah Big Data, yaitu Tupel, Micro Batching, dan Windowed Real-Time Stream Processing. Metode yang digunakan dalam penelitian ini adalah Windowed Real-Time Stream Processing. Penelitian ini memanfaatkan Apache Spark untuk menerapkan metode pengolahan tersebut. Penerapan Apache Spark untuk Big Data dimulai dengan tahap mengintegrasikan stream source sehingga Apache Spark dapat memperoleh stream yang akan dianalisis. Hasil akhir dari penerapan metode ini berupa suatu sistem pengolah Big Data secara real-time.

Jurnal Telematika, vol. 11 no. 1, Institut Teknologi Harapan Bangsa, Bandung ISSN: 1858-2516 Analisis Big Data Berbasis Stream Processing Menggunakan Apache Spark Herry Sitepu#1, Claudia Zefanya Tumbel#2, Maclaurin Hutagalung#3 # Departemen Teknologi Informasi, Institut Teknologi Harapan Bangsa Jl. Dipatiukur No. 80-84, Bandung, Indonesia herry@ithb.ac.id clauzefanya6@gmail.com maclaurin@ithb.ac.id Abstract— Big data technology has three key attributes, i.e., volume, speed, and complexity of the data. Big data processing can be performed in real time by using stream processing. Some of the methods used to process big data, i.e., Tuple, Micro Batching, and Windowed Real-Time Stream Processing. The method used in this study is Windowed Real-Time Stream Processing. This study utilizes Apache Spark to implement the processing method. It begins with stream source integration so that Apache Spark is able to obtain the data. Next, the data is analyzed by Apache Spark in real-time. The key result of this data is big data processing system in real-time. tweet dari semua pengguna secara real-time. Sistem pengolah real-time tersebut harus efisien dalam penggunaan sumber daya komputasi. Apache Spark merupakan salah satu open-source software yang dapat digunakan untuk menganalisis dan mengolah streaming data. Penelitian ini menggunakan data layanan Uber berbentuk CSV (comma separated value) dengan jumlah data 14.270.480. Penelitian ini menggunakan data tersebut untuk diimplementasikan dengan metode windowed real-time stream processing. Keywords— Big Data, real-time, stream processing, Apache Spark, open-source software II. KAJIAN PUSTAKA Abstrak— Teknologi Big Data memiliki 3 ciri utama yaitu volume, kecepatan, dan kompleksitas data. Pengolahan Big Data dapat dilakukan secara real time dengan menggunakan stream processing. Beberapa metode yang digunakan untuk mengolah Big Data, yaitu Tupel, Micro Batching, dan Windowed Real-Time Stream Processing. Metode yang digunakan dalam penelitian ini adalah Windowed Real-Time Stream Processing. Penelitian ini memanfaatkan Apache Spark untuk menerapkan metode pengolahan tersebut. Penerapan Apache Spark untuk Big Data dimulai dengan tahap mengintegrasikan stream source sehingga Apache Spark dapat memperoleh stream yang akan dianalisis. Hasil akhir dari penerapan metode ini berupa suatu sistem pengolah Big Data secara real-time. Kata Kunci— Big data, real-time, stream processing, Apache Spark, perangkat lunak open-source I. PENDAHULUAN Peningkatan jumlah akses layanan melalui berbagai perangkat mengakibatkan volume, kecepatan, dan keragaman data menjadi meningkat secara eksponensial. Layanan seperti Facebook, Twitter, Gmail, dan Youtube menyimpan data dari pengguna dalam jumlah yang sangat besar. Untuk mendapatkan informasi yang berguna dari data tersebut, dibutuhkan sistem pengolah real-time stream processing. Stream processing adalah metode untuk menganalisis dan mengolah aliran data dengan kecepatan tinggi secara real-time. Contoh real-time streaming data, yaitu Twitter. Untuk mendapatkan trending topic, Twitter harus memproses setiap A. Big Data Big Data adalah salah satu istilah yang populer saat ini. Karakteristik Big Data dapat ditinjau dari aspek volume, velocity, dan variety. Volume merupakan kriteria ukuran jumlah data. Variety merupakan kriteria seberapa banyak jenis data, sumber, dan format data. Velocity mengacu pada kecepatan data [6]. Tiga karakteristik Big Data dapat dilihat pada Gambar 1. B. Stream Processing Stream processing adalah metode yang dirancang untuk menganalisis dan mengolah real-time streaming data. Permintaan data stream processing terus meningkat. Oleh karena itu, data harus diproses dengan cepat dari sumber yang berbeda. Contoh aplikasi streaming berupa perdagangan on line, jaringan sosial, internet of things, monitoring sistem dan Gambar 1 Karakteristik big data [8] 27 Analisis Big Data Berbasis Stream Processing Menggunakan Apache Spark lain-lain [2]. Penerapan stream processing terbagi menjadi 3 proses, yaitu Tupel, Micro Batching, Windowed Real-Time Stream Processing (Gambar 2). Tupel berfungsi untuk memproses data yang masuk ketika data diterima oleh penerima. Micro Batching mempunyai fungsi yang berbeda dari Tupel. Tupel mengirimkan data satu per satu. Sebaliknya, Micro mengumpulkan semua data dari pengirim lalu dikirimkan ke penerima apabila datanya sudah lengkap. Contoh Windowed Real-Time Stream Processing adalah Datatorrent. Datatorrent menggunakan konsep Beachon. Beachon memiliki latency yang sangat rendah. Beachon berfungsi memproses dua sistem, yaitu Tupel dan Micro. Tujuan dari menggabungkan Tupel dan Micro, yaitu untuk mengurangi latency, mendeteksi kesalahan, dan memperbaiki kesalahan sebelum data yang dikirim gagal. Setiap segmen pada Beachon disebut Window. C. Apache Spark Apache Spark awalnya dikembangkan pada tahun 2009 di UC Berkeley AMPLab. Selanjutnya, dikembangkan menjadi project open-source Apache pada tahun 2010. Apache Spark adalah sebuah open-source software yang digunakan untuk menganalisis data secara real-time. Apache Spark menerapkan API pada mesin pengolahan data. Apache Spark terdiri dari Spark core dan satu set library. Core adalah mesin eksekusi yang terdistribusi dengan Java API, Scala, dan Python sebagai platform dalam pengembangan aplikasi. Apache Spark merupakan bagian dari Hadoop [1]. Apache Spark memungkinkan penggunaan sumber daya yang lebih efisien dalam satu cluster. Spark dapat mengelola data yang berukuran besar. Jenis data yang diolah berupa teks, grafik, dan lain-lain, sedangkan dari sisi sumber data berupa batch dan real-time streaming data. Aplikasi Spark memproses data pada memori 100 kali lebih cepat dan memproses data pada disk 10 kali lebih cepat di cluster Hadoop. Spark memudahkan pengguna menulis program di Java, Scala, dan Phyton. Built-in yang disediakan oleh Apache Spark sebanyak 80 operator yang digunakan pada query data dalam shell [5]. III. ANALISIS DAN PERANCANGAN A. Cara Kerja Spark Streaming Sebelum mulai mengolah data yang masih dalam bentuk file CSV terlebih dahulu user harus mengetahui cara kerja dari Spark streaming. Cara kerja dari Spark streaming terdiri atas beberapa langkah, yaitu: 1. Persiapan data yang akan diolah dan jenis data. Data yang diambil untuk penelitian ini berasal dari awesome public datasets. Awesome public datasets merupakan salah satu penyimpanan data lewat cloud. Selain itu, awesome public datasets menyimpan data dalam jumlah besar dan bervariasi, dengan kata lain Big Data. 2. Data yang dalam bentuk file tersebut harus diubah menjadi bentuk stream yang dikirimkan melalui jaringan. 3. Spark streaming langsung memproses data yang telah diterima. Spark streaming akan terus menerus melakukan perhitungan ketika ada data yang masuk dan juga akan menampilkan total waktu delay pada GUI Spark. 4. Data yang diproses oleh Spark streaming menggunakan micro batches. Micro batches mengumpulkan semua data dari pengirim dan langsung diproses apabila data tersebut telah lengkap, kemudian langsung dikirim ke penerima. 5. Setelah selesai diproses oleh Spark streaming menggunakan teknik micro batches, kemudian akan lanjut diproses oleh Spark core. 6. Lalu ketika selesai diproses oleh Spark core maka hasilnya akan berupa informasi dalam bentuk interface yang bermacam-macam seperti database, dashboard, dan analytics. Untuk lebih jelasnya dapat dilihat pada Gambar 3. B. Perhitungan Dispatching Terbanyak Aplikasi Spark yang sangat kaya dapat melakukan banyak perhitungan, sehingga dari perhitungan yang ada dapat menghasilkan beberapa informasi. Salah satunya menghitung dispatching terbanyak dan tersedikit. Tujuan dari informasi yang didapat adalah agar user mengetahui kode dispatching mana yang paling aktif, sehingga dapat meningkatkan performansi perusahaan. Perusahaan juga bisa memberikan apresiasi kepada orang tersebut. Hasil perhitungan yang dilakukan dapat dilihat pada Gambar 4. C. Perhitungan Affiliated Data Uber memiliki 4 kolom yang masing-masing kolom berisi 14.270.479 data. Oleh karena itu, untuk menghitung kolom afiliasi user meggunakan PySpark. Hasil dari perhitungan ditunjukan pada Gambar 5. Gambar 2 Penerapan stream processing [4] Gambar 3 Cara kerja Spark streaming 28 Analisis Big Data Berbasis Stream Processing Menggunakan Apache Spark Gambar 4 Array dispatching Gambar 5 Affiliated array D. Perhitungan Total Month Aplikasi Spark yang sangat kaya dapat melakukan banyak perhitungan sehingga dari perhitungan yang ada dapat menghasilkan beberapa informasi. Salah satunya menghitung total month dari setiap panggilan selama 6 bulan. Hasil dari perhitungan tersebut ditunjukan pada Gambar 6. E. Perhitungan Total Year Apache Spark juga dapat menghitung data total year dari sumber data yang sedang diolah. Informasi tersebut dapat dilihat pada Gambar 7. F. Perhitungan Busy Hour Ada beberapa informasi penting juga yang perlu diketahui, yaitu busy hour. Informasi busy hour sangat berguna untuk memperbanyak driver pada jam-jam tersebut agar dapat dicover setiap permintaan yang datang. Hasil busy hour tersebut dapat dilihat pada Gambar 8. G. Perhitungan Day of Month PySpark SQL juga dapat menghitung day of month dari kolom pickup date yang diolah. Setiap informasi yang dihasilkan merupakan informasi penting untuk bisa mengatasi permintaan terbanyak dan dapat mengirimkan driver juga. Day of month menunjukan hari-hari terdapat panggilan terba- Gambar 6 Total month Gambar 7 Total year nyak selama 6 bulan. Hasil informasi tersebut ditunjukan pada Gambar 9. H. Analisis Kebutuhan Perangkat Keras Kebutuhan perangkat keras merupakan kebutuhan karakteristik suatu perangkat yang akan digunakan pada penelitian ini. Perangkat keras yang diharapkan dalam penelitian ini, yaitu:  3 buah PC dengan RAM 4 Gb, memori 500 GB, CPU Intel Core i3.  Software Apache Spark terbaru yang lengkap dengan Hadoop. I. Analisis Kebutuhan Fungsional Kebutuhan fungsional merupakan semua fungsi yang dapat dilakukan oleh aplikasi Apache Spark. Kebutuhan fungsional yang dapat dilakukan oleh aplikasi ini adalah sebagai berikut:  Apache Spark dapat menampilkan total delay hasil pengolahan data di GUI Spark streaming.  Apache dapat menampilkan hasil perhitungan yang cepat pada console.  Apache Spark dapat menampilkan berbagai macam informasi dengan membuka port 4040. 29 Analisis Big Data Berbasis Stream Processing Menggunakan Apache Spark Gambar 9 Day of month Gambar 8 Total year Master Spark dapat menampilkan hasil cluster dari beberapa PC lengkap dengan IP address, durasi, driver, dan lain-lain yang dapat diakses menggunakan port 8080. IV. IMPLEMENTASI DAN PENGUJIAN A. Implementasi Perancangan Implementasi rancangan merupakan tahap yang dilakukan setelah analisis kebutuhan sistem. Tujuan dari tahap ini untuk menampilkan data statistik total data dari data yang diolah. Oleh karena itu, data tersebut diproses menggunakan Apache Spark. Proses implementasi meliputi proses implementasi perangkat keras, implementasi perangkat lunak, implementasi data Uber, dan implementasi program Apache Spark. Proses implementasi perangkat lunak akan dijelaskan tentang deskripsi data yang akan digunakan untuk menampilkan stream statistik. Selain itu, dibutuhkan juga 3 PC perangkat keras yang akan digunakan untuk clustering. B. Implementasi Streaming Statistic Ada beberapa tahap yang dilakukan untuk menghasilkan stream processing data Uber, yaitu: 1. Membuat nama aplikasi network_wordcount di SparkContext yang berfungsi untuk memanggil fungsi yang ada di dalam listing code. 2. Menjalankan terminal setelah script tersebut disimpan. Terminal pertama berisi perintah cat uber.csv | nc –lp port 9999 yang berfungsi untuk membaca data lalu di stream ke terminal dua. Terminal dua juga menjalankan nama aplikasi networkwordcount.py yang telah dibuat di SparkContext menggunakan perintah: $./bin/spark-submit NetworkWordCount.py localhost 9999 yang berfungsi untuk melakukan perhitungan data dari terminal pertama. 30 3. Menuliskan perintah di terminal pertama. Untuk lebih jelasnya, dapat dilihat pada Gambar 10. Penulisan untuk terminal kedua ditunjukan pada Gambar 11. 4. Menjalankan perintah di kedua terminal pada Gambar 10 dan 11. Hasilnya dapat dilihat pada GUI (graphical user interface) Spark streaming yang ditunjukan pada Gambar 12. Hasil tersebut berupa statistic yang menggambarkan total event yang diterima dalam waktu 1 second dengan data yang direkam sebanyak 14.270.480. C. Parameter Pengukuran Kinerja Sebelum menilai kualifikasi hasil pengukuran ada beberapa parameter yang digunakan, yaitu [7]: 1. Kualifikasi kinerja Apache Spark dapat dikatakan baik apabila kecepatan waktu dalam memproses data untuk menghasilkan informasi kurang dari 1 detik. 2. Kualifikasi kinerja Apache Spark dapat dikatakan cukup apabila kecepatan waktu dalam memproses data untuk menghasilkan informasi antara 1 detik sampai dengan 1 menit. 3. Kualifikasi kinerja Apache Spark dapat dikatakan kurang apabila kecepatan dalam memproses data untuk menghasilkan informasi lebih dari 1 menit. D. Hasil Pengukuran Kinerja Apache Spark Pengolahan data menggunakan Spark membutuhkan spesifikasi komputer yang bisa mendukung cara kerja Spark. Oleh karena itu, dilakukannya pengukuran kinerja berdasarkan spesifikasi komputer yang digunakan. Hasil pengukuran kinerja Spark dapat dilihat pada Tabel 1. E. Analisis Hasil Pengukuran Analisis hasil pengukuran dari data yang diolah menggunakan Apache Spark menyatakan kualifikasi kinerja Apache Spark cukup. Hal ini disebabkan karena spesifikasi perangkat keras yang digunakan dalam pengolahan data. Oleh Analisis Big Data Berbasis Stream Processing Menggunakan Apache Spark TABEL I HASIL PENGUKURAN ID 1 2 3 4 5 6 7 Gambar 10 Netcat Gambar 11 Spark Submit Objective Count Dispatching Count Affiliated Count Month Count Hour Count Day of Month Count Quarter Count Year Submitted 28/7/2016 14:01:55 28/7/2016 14:04:18 28/7/2016 14:06:22 28/7/2016 14:18:49 28/7/2016 14:20:34 Durasi 55s 53s 52s 52s 51s 28/7/2016 14:23:05 28/7/2016 14:24:11 52s 54s karena itu, untuk mendapatkan hasil kualifikasi pegukuran yang baik perlu adanya upgrade perangkat kerasnya, mulai dari ukuran RAM, hardisk, intel core yang mendukung pengolahan data di Spark. V. KESIMPULAN Berdasarkan hasil dari analisis, implementasi, dan pengujian, maka dapat diambil kesimpulan sebagai berikut: 1. Big Data berhasil diolah dengan metode stream processing. 2. Metode stream processing yang diterapkan untuk mengolah Big Data dapat disinkronisasi dengan Apache Spark sehingga menghasilkan informasiinformasi yang dibutuhkan seperti total dispatching, total month, total hour, total affiliated, total day of month, dan total year dalam waktu yang singkat. 3. Berhasil mengolah data menggunakan Apache Spark sehingga kinerja Apache Spark dapat diukur dari hasil monitoring pada localhost 9999. DAFTAR REFERENSI [1] [2] [3] [4] [5] [6] Gambar 12 Spark Streaming Statistic H. John. ”Definition Real-Time.” Internet: http://whatis.techtarget.com/definition/real-time, Apr. 2006 [Oct. 20, 2015]. K. Wahner. ”Real-Time Stream Processing as Game Changer in a Big Data World with Hadoop and Data Warehouse.” Internet: http://www.infoq.com/articles/stream-processing-hadoop, Sept. 10, 2014 [Oct. 20, 2015]. M. Barlow. (2013, February 25). Real-Time Big Data Analytics. (1st edition). [Online]. [Oct 20, 2015]. N. Idoudi, N. Louati, C. Duvallet, at all. (2009, January). "A Framework to Model Real-Time Databases." International Journal of Computing and Information Sciences. [Online]. 7(1), pp. 1-8. Available: http://www.ijcis.info/Vol7N1/Vol7P1N1-PP-1-11.pdf [Oct. 20, 2015]. N. Chetan. “Real-Time Event Stream Processing.” Internet: https://www.datatorrent.com/real-time-event-stream-processing-whatare-your-choices/, March. 9, 2015 [Oct. 20, 2015]. P. Srini. ”Big Data Processing with Apache Spark.” Internet: http://www.infoq.com/articles/apache-spark-introduction, Jan. 30, 2015 [Oct. 20, 2015]. 31 Analisis Big Data Berbasis Stream Processing Menggunakan Apache Spark [7] [8] T. Das. “Faster Stateful Stream Processing in Apache Spark Streaming.” Internet: https://databricks.com/blog/2016/02/01/fasterstateful-stream-processing-in-apache-spark-streaming.html/, Feb.1, 2016 [Jun. 20, 2016]. W. Kai. “Real-Time Stream Processing as Game Charger in a Big Data World with Hadoop and Data Warehouse.” Internet: http://www.infoq.com/articles/stream-processing-hadoop, Sept. 10, 2014 [Oct. 20, 2015]. Herry Imanta Sitepu, menempuh pendidikan S1 di Teknik Elektro ITB dan lulus tahun 1999, dan memperoleh gelar magister dan doktor di jurusan yang sama di ITB. Sejak tahun 2006 aktif sebagai pengajar di Prodi Sistem Komputer ITHB. Minat penelitian: computer networking, programming dan distributed system. 32 Claudia Zefanya Tumbel, lahir di Manado, 6 April 1994. Pada tahun 2012 menempuh pendidikan S1 di Institut Teknologi Harapan Bangsa (ITHB) di Departemen Teknologi Informasi Jurusan Teknik Elektro. Lulus pada bulan Juli 2016 dengan gelar Sarjana Teknik. Bidang yang diminati adalah networking. Maclaurin Hutagalung, menerima gelar Sarjana Teknik dari Institut Teknologi Bandung jurusan Teknik Elektro, gelar Magister Sains dari University of Twente Belanda di bidang Sinyal, Sistem, dan Kendali, dan gelar Doktor dari Tokyo Institute of Technology di bidang Sistem Kendali Nonlinear. Sejak tahun 2012 aktif sebagai pengajar di Departemen Sistem Komputer ITHB di Bandung. Minat penelitian pada Kendali Sistem Dinamis, Robotika, dan Penerbangan.