Tutorial Streaming Apache Spark Untuk Pemula: Bekerja, Arsitektur & Fitur

Diterbitkan: 2020-02-27

Kita saat ini hidup di dunia di mana sejumlah besar data dihasilkan setiap detik dengan kecepatan tinggi. Data ini dapat memberikan hasil yang berarti dan bermanfaat jika dianalisis secara akurat. Ini juga dapat menawarkan solusi untuk banyak industri pada waktu yang tepat.

Ini sangat membantu dalam industri seperti di Layanan Perjalanan, Ritel, Media, Keuangan dan Perawatan Kesehatan. Banyak perusahaan top lainnya telah mengadopsi Analisis Data seperti Pelacakan interaksi Pelanggan dengan berbagai jenis produk yang dilakukan oleh Amazon pada platformnya atau Pemirsa yang menerima rekomendasi yang dipersonalisasi secara real-time, yang disediakan oleh Netflix.

Ini dapat digunakan oleh bisnis apa pun yang menggunakan data dalam jumlah besar, dan mereka dapat menganalisisnya untuk keuntungan mereka guna meningkatkan keseluruhan proses dalam bisnis mereka dan untuk meningkatkan kepuasan pelanggan dan pengalaman pengguna. Pengalaman Pengguna yang Lebih Baik dan kepuasan pelanggan memberikan manfaat bagi organisasi, dalam jangka panjang, untuk mengembangkan bisnis dan menghasilkan keuntungan.

Daftar isi

Apa itu Streaming?

Streaming data adalah metode di mana informasi ditransfer sebagai aliran yang terus menerus dan stabil. Sebagai Internet berkembang, teknologi streaming juga meningkat.

Apa itu Spark Streaming?

Ketika data terus-menerus tiba dalam urutan yang tidak terikat, maka itu disebut aliran data. Data input mengalir dengan mantap, dan dibagi dengan streaming. Pengolahan data lebih lanjut dilakukan setelah dibagi menjadi unit-unit diskrit. Analisis data dan pemrosesan data pada latensi rendah disebut pemrosesan aliran.

Pada tahun 2013, Apache Spark ditambahkan dengan Spark Streaming. Ada banyak sumber dari mana penyerapan Data dapat terjadi seperti TCP Sockets, Amazon Kinesis, Apache Flume, dan Kafka. Dengan bantuan algoritma yang canggih, pemrosesan data dilakukan. Fungsi tingkat tinggi seperti window, join, reduce dan map digunakan untuk mengekspresikan pemrosesan. Dasbor Langsung, Basis Data, dan sistem file digunakan untuk mendorong data yang diproses ke sistem file.

Bekerja dari Stream

Berikut ini adalah kerja internal. Spark streaming membagi aliran data input langsung ke dalam batch. Spark Engine digunakan untuk memproses kumpulan ini untuk menghasilkan kumpulan aliran akhir sebagai hasilnya.

Data dalam aliran dibagi menjadi kumpulan kecil dan diwakili oleh Apache Spark Discretized Stream (Spark DStream). Spark RDD digunakan untuk membangun DStream, dan ini adalah abstraksi data inti dari Spark. Setiap komponen Apache Spark seperti Spark SQL dan Spark MLib dapat dengan mudah diintegrasikan dengan Spark Streaming dengan mulus.

Spark Streaming membantu dalam menskalakan aliran data langsung. Ini adalah salah satu ekstensi dari API Spark inti. Ini juga memungkinkan pemrosesan aliran yang toleran terhadap kesalahan dan throughput tinggi. Penggunaan Spark Streaming melakukan pemrosesan dan streaming data langsung secara real-time. Perusahaan Top Besar di dunia menggunakan layanan Spark Streaming seperti Pinterest, Netflix dan Uber.

Spark Streaming juga menyediakan analisis data secara real-time. Pemrosesan data langsung dan cepat dilakukan pada platform tunggal Spark Streaming.

Baca juga Arsitektur Apache Spark

Mengapa Spark Streaming?

Spark Streaming dapat digunakan untuk mengalirkan data real-time dari berbagai sumber, seperti Facebook, Pasar Saham, dan Sistem Geografis, dan melakukan analisis yang kuat untuk mendorong bisnis.

Ada lima aspek penting dari Spark Streaming yang membuatnya begitu unik, yaitu:

1. Integrasi

Pustaka Tingkat Lanjut seperti pemrosesan grafik, pembelajaran mesin, SQL dapat dengan mudah diintegrasikan dengannya.

2. Kombinasi

Data yang dialirkan dapat dilakukan bersama dengan kueri interaktif dan juga kumpulan data statis.

3. Penyeimbangan Beban

Spark Streaming memiliki keseimbangan beban yang sempurna, yang membuatnya sangat istimewa.

4. Penggunaan sumber daya

Spark Streaming menggunakan sumber daya yang tersedia dengan cara yang sangat optimal.

5. Pemulihan dari ketertinggalan dan kegagalan

Spark Streaming dapat dengan cepat pulih dari segala jenis kegagalan atau tersesat.

Kebutuhan untuk Streaming di Apache Spark

Model operator kontinu digunakan saat merancang sistem untuk memproses aliran secara tradisional untuk memproses data. Cara kerja sistem tersebut adalah sebagai berikut:

  1. Sumber data digunakan untuk mengalirkan data. Berbagai jenis sumber Data adalah perangkat IoT, data telemetri sistem, log langsung, dan banyak lagi. Data streaming ini diserap ke dalam sistem penyerapan data seperti Amazon Kinesis, Apache Kafka, dan banyak lagi.
  2. Pada sebuah cluster, pemrosesan paralel dilakukan pada data.
  3. Sistem hilir seperti Kafka, Cassandra, HBase digunakan untuk meneruskan hasil.

Satu set node pekerja menjalankan beberapa operator berkelanjutan. Pemrosesan catatan data yang dialirkan dilakukan satu per satu. Dokumen-dokumen tersebut kemudian diteruskan ke operator berikutnya di dalam pipeline.

Operator Sumber digunakan untuk menerima Data dari sistem penyerapan. Operator Sink digunakan untuk memberikan output ke sistem hilir.

Beberapa operator kontinu. Ini adalah model yang alami dan lugas. Dalam hal Analisis data kompleks secara real-time, yang dilakukan dalam skala besar, arsitektur tradisional menghadapi beberapa tantangan di dunia modern, yaitu:

Pemulihan kegagalan yang cepat

Dalam kegagalan sistem saat ini dengan cepat disertai dan diakomodasi dengan memulihkan informasi yang hilang dengan menghitung info yang hilang di node paralel. Dengan demikian, itu membuat pemulihan lebih cepat dibandingkan dengan sistem tradisional.

Penyeimbang beban

Penyeimbang beban membantu mengalokasikan sumber daya dan data di antara node dengan cara yang lebih efisien sehingga tidak ada sumber daya yang menunggu atau tidak melakukan apa-apa selain data didistribusikan secara merata ke seluruh node.

Penyatuan Beban Kerja Interaktif, Batch, dan Streaming

Seseorang juga dapat berinteraksi dengan data streaming dengan membuat kueri ke data streaming. Itu juga dapat dikombinasikan dengan kumpulan data statis. Seseorang tidak dapat melakukan kueri ad-hoc menggunakan operator baru karena tidak dirancang untuk operator berkelanjutan. Interaktif, streaming, dan kueri batch dapat digabungkan dengan menggunakan mesin tunggal.

Kueri dan analitik SQL dengan ML

Mengembangkan sistem dengan perintah database umum membuat hidup pengembang mudah untuk bekerja sama dengan sistem lain. Komunitas secara luas menerima kueri SQL. Di mana sistem menyediakan modul dan perpustakaan untuk pembelajaran mesin yang dapat digunakan untuk tujuan analisis tingkat lanjut.

Ikhtisar Spark Streaming

Spark Streaming menggunakan satu set RDD yang digunakan untuk memproses data waktu nyata. Oleh karena itu, Spark Streaming umumnya digunakan secara umum untuk menangani aliran data waktu nyata. Spark Streaming menyediakan pemrosesan aliran data langsung yang toleran terhadap kesalahan dan throughput tinggi. Ini adalah fitur tambahan yang hadir dengan API percikan inti.

Fitur Streaming Spark

  1. Analisis Bisnis : Dengan menggunakan Spark Streaming, seseorang juga dapat mempelajari perilaku penonton. Pembelajaran ini nantinya dapat digunakan dalam pengambilan keputusan bisnis.
  2. Integrasi: Real-time dan pemrosesan Batch terintegrasi dengan Spark
  3. Toleransi Kesalahan – Kemampuan unik Spark adalah dapat pulih dari kegagalan secara efisien.
  4. Kecepatan: Latensi Rendah dicapai oleh Spark
  5. Penskalaan: Node dapat diskalakan dengan mudah hingga ratusan oleh Spark.

Dasar-dasar Spark Streaming

1. Konteks Streaming

Di Spark, aliran data dikonsumsi dan dikelola oleh Konteks Streaming. Ini menciptakan objek Penerima yang dihasilkan dengan mendaftarkan streaming Input. Dengan demikian, fungsi Spark utama yang menjadi titik masuk penting ke sistem karena menyediakan banyak konteks yang menyediakan alur kerja default untuk berbagai sumber seperti Akka Actor, Twitter, dan ZeroMQ.

Baca: Peran Apache Spark dalam Big Data & Mengapa Unik

Objek konteks percikan mewakili koneksi dengan cluster percikan. Di mana objek Spark Streaming dibuat oleh objek StreamingContext, akumulator, RDD, dan variabel siaran juga dapat dibuat sebagai objek SparkContex.

2. Pos Pemeriksaan, Variabel Siaran, dan Akumulator

Pos pemeriksaan

Checkpoint bekerja mirip dengan Checkpoints yang menyimpan status sistem sama seperti di game. Dimana dalam hal ini Checkpoint membantu dalam mengurangi hilangnya sumber daya dan membuat sistem lebih tahan terhadap kerusakan sistem. Metodologi pos pemeriksaan adalah cara yang lebih baik untuk melacak dan menyimpan status sistem sehingga pada saat pemulihan, dapat dengan mudah ditarik kembali.

Variabel Siaran

Alih-alih memberikan salinan lengkap tugas ke Node jaringan, ia selalu menangkap variabel read-only yang bertanggung jawab untuk mengenali node dari tugas yang berbeda yang ada dan dengan demikian mengurangi biaya transfer dan komputasi oleh masing-masing node. Sehingga dapat memberikan set input yang signifikan secara lebih efisien. Itu juga menggunakan algoritme canggih untuk mendistribusikan variabel siaran ke berbagai node di jaringan; dengan demikian, biaya komunikasi berkurang.

Akumulator

Akumulator adalah variabel yang dapat disesuaikan untuk tujuan yang berbeda. Tetapi ada juga Akumulator yang sudah ditentukan seperti Akumulator penghitung dan penjumlahan. Ada juga Akumulator pelacakan yang melacak setiap node, dan beberapa fitur tambahan juga dapat ditambahkan ke dalamnya. Akumulator Numerik mendukung banyak fungsi digital yang juga didukung oleh Spark. Akumulator yang ditentukan khusus juga dapat dibuat sesuai permintaan pengguna.

DStream

DStream berarti Aliran Diskrit. Spark Streaming menawarkan abstraksi yang diperlukan, yang disebut Discretized Stream (DStream). DStream adalah data yang mengalir terus menerus. Dari sumber data, DStream diterima. Ini juga dapat diperoleh dari aliran data yang diproses. Transformasi aliran input menghasilkan aliran data yang diproses.

Setelah interval tertentu, data dimasukkan ke dalam RDD. Serangkaian RDD tanpa akhir mewakili DStream.

Cache

Pengembang dapat menggunakan DStream untuk menyimpan data streaming di memori. Ini berguna jika data dihitung beberapa kali di DStream. Itu dapat dicapai dengan menggunakan metode persistent() pada DStream.

Duplikasi data dilakukan untuk menjamin keamanan memiliki sistem yang tangguh yang dapat menahan dan kegagalan dalam sistem sehingga memiliki kemampuan untuk mentolerir kesalahan dalam sistem (seperti Kafka, Socket, Flume dll.)

Keuntungan & Arsitektur Spark Streaming

Pemrosesan satu aliran data pada satu waktu terkadang menjadi rumit; karenanya Spark Streaming mendiskritisasi data menjadi sub-batch kecil yang mudah dikelola. Itu karena pekerja Spark mendapatkan buffer data secara paralel yang diterima oleh penerima Spark Streaming. Dan karenanya seluruh sistem menjalankan batch secara paralel dan kemudian mengakumulasikan hasil akhir. Kemudian tugas-tugas singkat ini diproses dalam batch oleh mesin Spark, dan hasilnya diberikan ke sistem lain.

Dalam arsitektur Spark Streaming, komputasi tidak dialokasikan dan dimuat secara statis ke sebuah node tetapi berdasarkan lokasi data dan ketersediaan sumber daya. Dengan demikian mengurangi waktu pemuatan dibandingkan dengan sistem tradisional sebelumnya. Oleh karena itu penggunaan prinsip lokalitas data, juga lebih mudah untuk deteksi kesalahan dan pemulihannya.

Node data di Spark biasanya diwakili oleh RDD yaitu Resilient Distribution Dataset.

Tujuan dari Spark Streaming

Berikut adalah Tujuan yang dicapai oleh arsitektur Spark.

1. Penyeimbangan beban dinamis

Ini adalah salah satu fitur penting dari Spark Streaming di mana aliran data dialokasikan secara dinamis oleh penyeimbang beban, yang bertanggung jawab atas alokasi data dan perhitungan sumber daya menggunakan aturan khusus yang ditentukan di dalamnya. Tujuan utama dari load balancing adalah untuk menyeimbangkan beban kerja secara efisien di seluruh pekerja dan menempatkan semuanya secara paralel sehingga tidak ada pemborosan sumber daya yang tersedia. Dan juga bertanggung jawab untuk mengalokasikan sumber daya secara dinamis ke node pekerja dalam sistem.

2. Kegagalan dan Pemulihan

Seperti pada sistem tradisional, ketika terjadi kegagalan operasi, seluruh sistem harus menghitung ulang bagian tersebut untuk mendapatkan kembali informasi yang hilang. Tetapi masalahnya muncul ketika satu node menangani semua pemulihan ini dan membuat seluruh sistem menunggu penyelesaiannya. Sedangkan di Spark, informasi yang hilang dihitung oleh node bebas lainnya dan mengembalikan sistem untuk dilacak tanpa menunggu ekstra seperti pada metode tradisional.

Dan juga tugas yang gagal didistribusikan secara merata di semua node dalam sistem untuk menghitung ulang dan mengembalikannya dari kegagalan lebih cepat daripada metode tradisional.

3. Batch dan kueri Interaktif

Kumpulan RDD di Spark disebut sebagai DStream di Spark yang menyediakan hubungan antara beban kerja dan batch Streaming. Kumpulan ini disimpan dalam memori Spark, yang menyediakan cara yang efisien untuk menanyakan data yang ada di dalamnya.

Bagian terbaik dari Spark adalah ia mencakup berbagai macam perpustakaan yang dapat digunakan saat dibutuhkan oleh sistem percikan. Beberapa nama perpustakaan adalah MLlib untuk pembelajaran mesin, SQL untuk kueri data, GraphX ​​dan Bingkai Data sedangkan Kerangka Data dan pertanyaan dapat dikonversi ke pernyataan SQL yang setara oleh DStreams.

4. Kinerja

Karena sistem percikan menggunakan distribusi paralel dari tugas yang meningkatkan kapasitas throughputnya dan dengan demikian memanfaatkan mesin percikan yang mampu mencapai latensi rendah hingga beberapa 100 milidetik.

Bagaimana cara kerja Spark Streaming?

Data dalam aliran dibagi menjadi kumpulan kecil yang disebut DStreams di Spark Streaming. Ini adalah urutan RDD secara internal. Spark API digunakan oleh RDDS untuk memproses data dan pengiriman dikembalikan sebagai hasilnya. API Spark Streaming tersedia dalam Python, Java, dan Scala. Banyak fitur yang kurang dalam API Python yang baru-baru ini diperkenalkan di Spark 1.2.

Komputasi stateful disebut state yang dipertahankan oleh Spark Streaming berdasarkan data yang masuk di stream. Data yang mengalir dalam aliran diproses dalam kerangka waktu. Kerangka waktu ini harus ditentukan oleh pengembang, dan diizinkan oleh Spark Streaming. Jendela waktu adalah kerangka waktu di mana pekerjaan harus diselesaikan. Jendela waktu diperbarui dalam interval waktu yang juga dikenal sebagai interval geser di jendela.

Sumber Streaming Spark

Objek penerima yang terkait dengan input DStream, menyimpan data yang diterima, di Sparks Memory untuk diproses.

Streaming bawaan memiliki dua kategori:

1. Sumber dasar

Sumber yang tersedia di API Streaming, misalnya Koneksi Socket dan Sistem File.

2. Sumber lanjutan

Sumber tingkat lanjutan adalah Kinesis, Flume & Kafka dll.

Operasi Streaming

Ada dua jenis operasi yang didukung oleh Spark RDDS, dan mereka adalah: -

1. Operasi Output di Apache Spark

Operasi Output digunakan untuk mendorong data DStream ke sistem eksternal seperti sistem file atau database. Operasi Output memungkinkan data yang diubah untuk dikonsumsi oleh sistem eksternal. Semua Transformasi DStreams sebenarnya dieksekusi oleh pemicu, yang dilakukan oleh sistem eksternal.

Ini adalah operasi Output saat ini:

foreachRDD(func), [suffix]), saveAsHadoopFiles(prefix, [suffix]), saveAsObjectFiles(prefix, [suffix])”prefix-TIME_IN_MS[.suffix]”, saveAsTextFiles(prefix, print()

RDD dengan malas menjalankan Operasi keluaran. Di dalam Operasi Output DStream, Tindakan RDD diambil secara paksa untuk diproses dari data yang diterima. Eksekusi Operasi Output dilakukan satu per satu. Aplikasi Spark menentukan urutan kinerja operasi keluaran.

2. Transformasi Percikan

Transformasi Spark juga mengubah data dari DStream karena RDD mendukungnya di Spark. Sama seperti Spark RDD, banyak perubahan yang didukung oleh DStream.

Berikut ini adalah operasi Transformasi yang paling umum:

Window(), updateStateByKey(), transform(), [numTasks]), cogroup(otherStream, [numTasks]), join(otherStream, reduceByKey(func, [numTasks]), countByValue(), reduce(), union(otherStream ), count(), partisi ulang(numPartitions), filter(), flatMap(), map().

Kesimpulan

Dalam dunia berbasis data saat ini, alat untuk menyimpan dan menganalisis data telah terbukti menjadi faktor kunci dalam analisis dan pertumbuhan bisnis. Big Data serta alat dan teknologi terkait telah terbukti memiliki permintaan yang meningkat. Dengan demikian Apache Spark memiliki pasar yang hebat dan menawarkan fitur hebat untuk pelanggan dan bisnis.

Jika Anda tertarik untuk mengetahui lebih banyak tentang Big Data, lihat Diploma PG kami dalam Spesialisasi Pengembangan Perangkat Lunak dalam program Big Data yang dirancang untuk para profesional yang bekerja dan menyediakan 7+ studi kasus & proyek, mencakup 14 bahasa & alat pemrograman, praktik langsung lokakarya, lebih dari 400 jam pembelajaran yang ketat & bantuan penempatan kerja dengan perusahaan-perusahaan top.

Pelajari Kursus Pengembangan Perangkat Lunak online dari Universitas top dunia. Dapatkan Program PG Eksekutif, Program Sertifikat Tingkat Lanjut, atau Program Magister untuk mempercepat karier Anda.

Pimpin Revolusi Teknologi Berbasis Data

400+ Jam Belajar. 14 Bahasa & Alat. Status Alumni IIIT-B.
Program Sertifikat Tingkat Lanjut dalam Data Besar dari IIIT Bangalore