Spark vs Hadoop: Manakah Kerangka Data Besar Terbaik?



Posting blog ini berbicara tentang apache spark vs hadoop. Ini akan memberi Anda gambaran tentang kerangka Big Data mana yang tepat untuk dipilih dalam berbagai skenario.

Saya akan memulai blog Apache Spark vs Hadoop ini dengan terlebih dahulu memperkenalkan Hadoop dan Spark untuk mengatur konteks yang tepat untuk kedua kerangka kerja. Kemudian, ke depannya kami akan membandingkan kedua framework Big Data pada parameter yang berbeda untuk menganalisis kekuatan dan kelemahannya.Tapi, apa pun hasil perbandingan kami, Anda harus tahu bahwa Spark dan Hadoop adalah komponen penting dari .

Apache Spark vs Hadoop: Pengantar Hadoop

Hadoop adalah kerangka kerja yang memungkinkan Anda menyimpan Big Data terlebih dahulu di lingkungan terdistribusi sehingga Anda dapat memprosesnya secara paralel. Pada dasarnya ada dua komponen di Hadoop:





HDFS

HDFS membuat abstraksi sumber daya, izinkan saya menyederhanakannya untuk Anda. Mirip dengan virtualisasi, Anda dapat melihat HDFS secara logis sebagai satu unit untuk menyimpan Big Data, tetapi sebenarnya Anda menyimpan data Anda di beberapa node secara terdistribusi. Di sini, Anda memiliki arsitektur master-slave. Dalam HDFS, Namenode adalah node master dan Datanode adalah budak.

NameNode

Ini adalah daemon master yang memelihara dan mengelola DataNodes (node ​​slave). Ini mencatat metadata dari semua file yang disimpan di cluster, mis. lokasi blok yang disimpan, ukuran file, izin, hierarki, dll. Ia mencatat setiap perubahan yang terjadi pada metadata sistem file.



Misalnya, jika sebuah file dihapus dalam HDFS, NameNode akan segera mencatatnya di EditLog. Secara teratur menerima Heartbeat dan laporan blok dari semua DataNodes di cluster untuk memastikan bahwa DataNodes hidup. Itu menyimpan catatan semua blok di HDFS dan di mana node blok ini disimpan.

apa prosedur di sql

DataNode

Ini adalah daemon slave yang dijalankan di setiap mesin slave. Data aktual disimpan di DataNodes. Mereka bertanggung jawab untuk melayani permintaan baca dan tulis dari klien. Mereka juga bertanggung jawab untuk membuat blok, menghapus blok dan mereplikasi yang sama berdasarkan keputusan yang diambil oleh NameNode.

HDFS - Apache Spark vs Hadoop - EdurekaBENANG

YARN melakukan semua aktivitas pemrosesan Anda dengan mengalokasikan sumber daya dan menjadwalkan tugas. Ini memiliki dua daemon utama, yaitu Manajer Sumber Daya dan NodeManager .



Manajer Sumber Daya

Ini adalah komponen level cluster (satu untuk setiap cluster) dan berjalan di mesin master. Ia mengelola sumber daya dan menjadwalkan aplikasi yang berjalan di atas YARN.

NodeManager

Ini adalah komponen level node (satu di setiap node) dan berjalan di setiap mesin slave. Ini bertanggung jawab untuk mengelola kontainer dan memantau pemanfaatan sumber daya di setiap kontainer. Itu juga melacak kesehatan node dan manajemen log. Ini terus berkomunikasi dengan ResourceManager untuk tetap up-to-date. Jadi, Anda dapat melakukan pemrosesan paralel pada HDFS menggunakan MapReduce.

Untuk mempelajari lebih lanjut tentang Hadoop, Anda dapat melalui ini blog. Sekarang, setelah kita siap dengan pengantar Hadoop, mari kita lanjutkan ke pengantar Spark.

Apache Spark vs Hadoop: Pengantar Apache Spark

Apache Spark adalah kerangka kerja untuk analitik data waktu nyata dalam lingkungan komputasi terdistribusi. Ini mengeksekusi komputasi dalam memori untuk meningkatkan kecepatan pemrosesan data. Lebih cepat untuk memproses data skala besar karena mengeksploitasi komputasi dalam memori dan pengoptimalan lainnya. Oleh karena itu, dibutuhkan daya proses yang tinggi.

Resilient Distributed Dataset (RDD) adalah struktur data fundamental dari Spark. Ini adalah kumpulan objek terdistribusi yang tidak dapat diubah. Setiap set data di RDD dibagi menjadi partisi logis, yang dapat dihitung pada node cluster yang berbeda. RDD dapat berisi semua jenis objek Python, Java, atau Scala, termasuk kelas yang ditentukan pengguna. Komponen percikan membuatnya cepat dan andal. Apache Spark memiliki komponen berikut:

  1. Spark Core - Spark Core adalah mesin dasar untuk pemrosesan data paralel dan terdistribusi skala besar. Selain itu, pustaka tambahan yang dibangun di atas inti memungkinkan beban kerja yang beragam untuk streaming, SQL, dan pembelajaran mesin. Ini bertanggung jawab untuk manajemen memori dan pemulihan kesalahan, penjadwalan, pendistribusian dan pemantauan pekerjaan di cluster & berinteraksi dengan sistem penyimpanan
  2. Spark Streaming - Spark Streaming adalah komponen Spark yang digunakan untuk memproses data streaming waktu nyata. Jadi, ini adalah tambahan yang berguna untuk API Spark inti. Ini memungkinkan pemrosesan aliran data langsung dengan throughput tinggi dan toleransi kesalahan
  3. Spark SQL : Spark SQL adalah modul baru di Spark yang mengintegrasikan pemrosesan relasional dengan API pemrograman fungsional Spark. Ini mendukung data kueri baik melalui SQL atau melalui Bahasa Query Hive. Bagi Anda yang terbiasa dengan RDBMS, Spark SQL akan menjadi transisi yang mudah dari alat Anda sebelumnya di mana Anda dapat memperluas batasan pemrosesan data relasional tradisional.
  4. GraphX : GraphX ​​adalah Spark API untuk grafik dan komputasi grafik-paralel. Jadi, ini memperluas Spark RDD dengan Grafik Properti Terdistribusi Tangguh. Pada tingkat tinggi, GraphX ​​memperluas abstraksi Spark RDD dengan memperkenalkan Grafik Properti Terdistribusi Tangguh: sebuah multigraf terarah dengan properti yang dilampirkan ke setiap simpul dan tepi.
  5. MLlib (Machine Learning): MLlib adalah singkatan dari Machine Learning Library. Spark MLlib digunakan untuk melakukan pembelajaran mesin di Apache Spark.

Seperti yang Anda lihat, Spark hadir dengan pustaka tingkat tinggi, termasuk dukungan untuk R, SQL, Python, Scala, Java, dll. Pustaka standar ini meningkatkan integrasi tanpa batas dalam alur kerja yang kompleks. Di atas ini, ini juga memungkinkan berbagai set layanan untuk berintegrasi dengannya seperti MLlib, GraphX, SQL + Data Frames, layanan Streaming, dll. Untuk meningkatkan kemampuannya.

Untuk mempelajari lebih lanjut tentang Apache Spark, Anda dapat melalui ini blog. Sekarang dasar sudah siap untuk Apache Spark vs Hadoop. Mari kita lanjutkan dan bandingkan Apache Spark dengan Hadoop pada parameter yang berbeda untuk memahami kekuatannya.

Apache Spark vs Hadoop: Parameter untuk Dibandingkan

Performa

Spark cepat karena memiliki pemrosesan dalam memori. Itu juga dapat menggunakan disk untuk data yang tidak semuanya cocok dengan memori. Pemrosesan dalam memori Spark menghasilkan analitik hampir real-time. Ini membuat Spark cocok untuk sistem pemrosesan kartu kredit, pembelajaran mesin, analitik keamanan, dan sensor Internet of Things.

Hadoop awalnya disiapkan untuk terus mengumpulkan data dari berbagai sumber tanpa mengkhawatirkan jenis data dan menyimpannya di seluruh lingkungan terdistribusi. MapReduce menggunakan pemrosesan batch. MapReduce tidak pernah dibuat untuk pemrosesan waktu nyata, ide utama di balik YARN adalah pemrosesan paralel melalui kumpulan data terdistribusi.

apa yang berseri di java

Masalah dengan membandingkan keduanya adalah mereka melakukan pemrosesan secara berbeda.

Kemudahan penggunaan

Spark hadir dengan API yang ramah pengguna untuk Scala, Java, Python, dan Spark SQL. Spark SQL sangat mirip dengan SQL, sehingga menjadi lebih mudah bagi pengembang SQL untuk mempelajarinya. Spark juga menyediakan shell interaktif bagi pengembang untuk menanyakan & melakukan tindakan lain, & memiliki umpan balik langsung.

Anda dapat mencerna data di Hadoop dengan mudah baik dengan menggunakan shell atau mengintegrasikannya dengan beberapa alat seperti Sqoop, Flume, dll. YARN hanyalah kerangka kerja pemrosesan dan dapat diintegrasikan dengan beberapa alat seperti Hive dan Pig. HIVE adalah komponen data warehousing yang melakukan pembacaan, penulisan, dan pengelolaan kumpulan data besar dalam lingkungan terdistribusi menggunakan antarmuka mirip SQL. Anda bisa melalui ini Ekosistem Hadoop blog untuk mengetahui tentang berbagai alat yang dapat diintegrasikan dengan Hadoop.

Biaya

Hadoop dan Spark adalah proyek sumber terbuka Apache, jadi tidak ada biaya untuk perangkat lunak tersebut. Biaya hanya terkait dengan infrastruktur. Kedua produk tersebut didesain sedemikian rupa sehingga dapat berjalan pada hardware komoditas dengan TCO rendah.

Sekarang Anda mungkin bertanya-tanya bagaimana mereka berbeda. Penyimpanan & pemrosesan di Hadoop berbasis disk & Hadoop menggunakan jumlah memori standar. Jadi, dengan Hadoop kita membutuhkan banyak ruang disk serta disk yang lebih cepat. Hadoop juga membutuhkan banyak sistem untuk mendistribusikan I / O disk.

Karena Apache Spark dalam pemrosesan memori, ia membutuhkan banyak memori, tetapi dapat menangani kecepatan & jumlah disk standar. Karena ruang disk adalah komoditas yang relatif murah dan karena Spark tidak menggunakan I / O disk untuk diproses, maka Spark membutuhkan sejumlah besar RAM untuk menjalankan semua yang ada di memori. Dengan demikian, sistem Spark membutuhkan lebih banyak biaya.

Tapi ya, satu hal penting yang perlu diingat adalah bahwa teknologi Spark mengurangi jumlah sistem yang diperlukan. Diperlukan lebih sedikit sistem yang harganya lebih mahal. Jadi, akan ada titik di mana Spark mengurangi biaya per unit komputasi bahkan dengan persyaratan RAM tambahan.

Pengolahan data

Ada dua jenis pemrosesan data: Batch Processing & Stream Processing.

Pemrosesan Batch vs Pemrosesan Streaming

Pemrosesan Batch : Pemrosesan batch sangat penting bagi dunia data besar. Sederhananya, pemrosesan batch bekerja dengan volume data tinggi yang dikumpulkan selama suatu periode. Dalam pemrosesan batch, data dikumpulkan terlebih dahulu dan kemudian hasil olahan diproduksi di tahap selanjutnya.

Pemrosesan batch adalah cara yang efisien untuk memproses kumpulan data statis yang besar. Umumnya, kami melakukan pemrosesan batch untuk kumpulan data yang diarsipkan. Misalnya, menghitung pendapatan rata-rata suatu negara atau mengevaluasi perubahan e-commerce dalam dekade terakhir.

Pemrosesan aliran : Pemrosesan streaming adalah tren saat ini di dunia data besar. Kebutuhan saat ini adalah kecepatan dan informasi waktu nyata, itulah yang dilakukan oleh pemrosesan uap. Pemrosesan batch tidak memungkinkan bisnis untuk dengan cepat bereaksi terhadap perubahan kebutuhan bisnis secara real time, pemrosesan aliran telah melihat pertumbuhan permintaan yang cepat.

Sekarang kembali ke Apache Spark vs Hadoop, YARN pada dasarnya adalah kerangka kerja pemrosesan batch. Saat kami mengirimkan pekerjaan ke YARN, itu membaca data dari cluster, melakukan operasi & menulis hasilnya kembali ke cluster. Kemudian lagi membaca data yang diperbarui, melakukan operasi berikutnya & menulis hasilnya kembali ke cluster dan seterusnya.

Spark melakukan operasi serupa, tetapi menggunakan pemrosesan dalam memori dan mengoptimalkan langkah-langkahnya. GraphX ​​memungkinkan pengguna untuk melihat data yang sama sebagai grafik dan sebagai koleksi. Pengguna juga dapat mengubah dan menggabungkan grafik dengan Resilient Distributed Datasets (RDDs).

Toleransi kesalahan

Hadoop dan Spark keduanya memberikan toleransi kesalahan, tetapi keduanya memiliki pendekatan yang berbeda. Untuk HDFS dan YARN keduanya, daemon master (masing-masing yaitu NameNode & ResourceManager) memeriksa detak jantung daemon slave (yaitu, DataNode & NodeManager masing-masing). Jika ada daemon slave yang gagal, daemon master menjadwal ulang semua operasi yang tertunda dan sedang berlangsung ke slave lain. Metode ini efektif, tetapi secara signifikan dapat meningkatkan waktu penyelesaian untuk operasi dengan kegagalan tunggal juga. Karena Hadoop menggunakan perangkat keras komoditas, cara lain HDFS memastikan toleransi kesalahan adalah dengan mereplikasi data.

Seperti yang kita diskusikan di atas, RDD adalah blok bangunan Apache Spark. RDD memberikan toleransi kesalahan pada Spark. Mereka dapat merujuk ke kumpulan data apa pun yang ada di sistem penyimpanan eksternal seperti HDFS, HBase, sistem file bersama. Mereka bisa dioperasikan secara paralel.

RDD dapat mempertahankan set data dalam memori di seluruh operasi, yang membuat tindakan di masa mendatang 10 kali lebih cepat. Jika RDD hilang, secara otomatis akan dihitung ulang dengan menggunakan transformasi asli. Beginilah cara Spark memberikan toleransi kesalahan.

Keamanan

Hadoop mendukung Kerberos untuk otentikasi, tetapi sulit untuk ditangani. Namun demikian, ini juga mendukung vendor pihak ketiga seperti LDAP (Lightweight Directory Access Protocol) untuk otentikasi. Mereka juga menawarkan enkripsi. HDFS mendukung izin file tradisional, serta daftar kontrol akses (ACL). Hadoop menyediakan Otorisasi Tingkat Layanan, yang menjamin bahwa klien memiliki izin yang tepat untuk pengiriman pekerjaan.

apa itu mvc di java

Spark saat ini mendukung otentikasi melalui rahasia bersama. Spark dapat berintegrasi dengan HDFS dan dapat menggunakan HDFS ACL dan izin tingkat file. Spark juga dapat berjalan di YARN yang memanfaatkan kemampuan Kerberos.

Kasus penggunaan yang paling cocok dengan Hadoop:

  • Menganalisis Data Arsip. YARN memungkinkan pemrosesan paralel atas sejumlah besar data. Bagian Data diproses secara paralel & terpisah pada DataNodes yang berbeda & mengumpulkan hasil dari setiap NodeManager.
  • Jika hasil instan tidak diperlukan. Hadoop MapReduce adalah solusi yang baik dan ekonomis untuk pemrosesan batch.

Kasus penggunaan yang paling cocok dengan Spark:

Analisis Data Besar Waktu Nyata:

Analisis data waktu nyata berarti memproses data yang dihasilkan oleh aliran peristiwa waktu nyata yang masuk dengan kecepatan jutaan peristiwa per detik, misalnya data Twitter. Kekuatan Spark terletak pada kemampuannya untuk mendukung streaming data bersama dengan pemrosesan terdistribusi. Ini adalah kombinasi berguna yang memberikan pemrosesan data hampir secara waktu nyata. MapReduce cacat dari keuntungan seperti itu karena dirancang untuk melakukan pemrosesan batch cum didistribusikan pada sejumlah besar data. Data waktu nyata masih dapat diproses di MapReduce tetapi kecepatannya tidak sebanding dengan kecepatan Spark.

Spark mengklaim memproses data 100x lebih cepat daripada MapReduce, sementara 10x lebih cepat dengan disk.

Pengolahan Grafik:

Sebagian besar algoritme pemrosesan grafik seperti peringkat halaman melakukan beberapa iterasi pada data yang sama dan ini membutuhkan mekanisme penyampaian pesan. Kita perlu memprogram MapReduce secara eksplisit untuk menangani beberapa iterasi pada data yang sama. Secara kasar, ini bekerja seperti ini: Baca data dari disk dan setelah iterasi tertentu, tulis hasil ke HDFS dan kemudian baca data dari HDFS untuk iterasi berikutnya. Ini sangat tidak efisien karena melibatkan pembacaan dan penulisan data ke disk yang melibatkan operasi I / O yang berat dan replikasi data di seluruh cluster untuk toleransi kesalahan. Selain itu, setiap iterasi MapReduce memiliki latensi yang sangat tinggi, dan iterasi berikutnya hanya dapat dimulai setelah pekerjaan sebelumnya selesai sepenuhnya.

Selain itu, penyampaian pesan membutuhkan skor node tetangga untuk mengevaluasi skor node tertentu. Perhitungan ini membutuhkan pesan dari tetangganya (atau data di beberapa tahapan pekerjaan), sebuah mekanisme yang tidak dimiliki MapReduce. Alat pemrosesan grafik yang berbeda seperti Pregel dan GraphLab dirancang untuk menjawab kebutuhan platform yang efisien untuk algoritma pemrosesan grafik. Alat-alat ini cepat dan dapat diskalakan, tetapi tidak efisien untuk pembuatan dan pasca-pemrosesan algoritme multi-tahap yang kompleks ini.

Pengenalan Apache Spark sebagian besar memecahkan masalah ini. Spark berisi pustaka komputasi grafik yang disebut GraphX ​​yang menyederhanakan hidup kita. Komputasi dalam memori bersama dengan dukungan grafik built-in meningkatkan kinerja algoritma dengan besaran satu atau dua derajat dibandingkan program MapReduce tradisional. Spark menggunakan kombinasi Netty dan Akka untuk mendistribusikan pesan ke seluruh pelaksana. Mari kita lihat beberapa statistik yang menggambarkan kinerja algoritme PageRank menggunakan Hadoop dan Spark.

Algoritma Pembelajaran Mesin Iteratif:

Hampir semua algoritme pembelajaran mesin bekerja secara iteratif. Seperti yang telah kita lihat sebelumnya, algoritma iteratif melibatkan kemacetan I / O dalam implementasi MapReduce. MapReduce menggunakan tugas berbutir kasar (paralelisme tingkat tugas) yang terlalu berat untuk algoritme iteratif. Spark dengan bantuan Mesos - kernel sistem terdistribusi, menyimpan cache set data perantara setelah setiap iterasi dan menjalankan beberapa iterasi pada set data yang di-cache ini yang mengurangi I / O dan membantu menjalankan algoritme lebih cepat dengan cara yang toleran terhadap kesalahan.

Spark memiliki pustaka pembelajaran mesin skalabel built-in yang disebut MLlib yang berisi algoritme berkualitas tinggi yang memanfaatkan iterasi dan menghasilkan hasil yang lebih baik daripada satu pendekatan lulus yang terkadang digunakan di MapReduce.

  • Pemrosesan data cepat. Seperti yang kita ketahui, Spark memungkinkan pemrosesan dalam memori. Hasilnya, Spark hingga 100 kali lebih cepat untuk data dalam RAM dan hingga 10 kali untuk data dalam penyimpanan.
  • Pemrosesan berulang. RDD Spark memungkinkan melakukan beberapa operasi peta dalam memori, tanpa perlu menulis kumpulan data sementara ke disk.
  • Hampir pemrosesan waktu nyata. Spark adalah alat yang luar biasa untuk memberikan wawasan bisnis langsung. Inilah alasan mengapa Spark digunakan dalam sistem streaming kartu kredit.

Apache Spark: Pembunuh atau Penyelamat Apache Hadoop?

Jawaban untuk ini - Hadoop MapReduce dan Apache Spark tidak bersaing satu sama lain. Faktanya, mereka saling melengkapi dengan cukup baik. Hadoop membawa kumpulan data besar di bawah kendali sistem komoditas. Spark menyediakan pemrosesan dalam memori secara real-time untuk kumpulan data yang membutuhkannya. Saat kami menggabungkan, kemampuan Apache Spark, yaitu kecepatan pemrosesan tinggi, analitik tingkat lanjut, dan dukungan integrasi ganda dengan operasi biaya rendah Hadoop pada perangkat keras komoditas, ini memberikan hasil terbaik. Hadoop memuji kemampuan Apache Spark. Spark tidak dapat sepenuhnya menggantikan Hadoop tetapi kabar baiknya adalah bahwa permintaan Spark saat ini berada pada titik tertinggi sepanjang masa! Ini adalah waktu yang tepat untuk menguasai Spark dan memanfaatkan peluang karier yang Anda miliki. Mulai sekarang!

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar dan kami akan segera menghubungi Anda.

Jika Anda ingin mempelajari Spark dan membangun karir di domain Spark untuk melakukan Pemrosesan Data skala besar menggunakan RDD, Spark Streaming, SparkSQL, MLlib, GraphX, dan Scala dengan kasus penggunaan Kehidupan Nyata, lihat kami yang interaktif, online langsung sini, yang hadir dengan dukungan 24 * 7 untuk memandu Anda selama periode belajar Anda.