Spark vs Hadoop: Yang manakah Kerangka Data Besar Terbaik?



Catatan blog ini membicarakan apache spark vs hadoop. Ini akan memberi anda idea mengenai kerangka Big Data yang mana yang tepat untuk dipilih dalam senario yang berbeza.

Saya akan memulakan blog Apache Spark vs Hadoop ini dengan memperkenalkan Hadoop dan Spark terlebih dahulu untuk menetapkan konteks yang tepat untuk kedua-dua kerangka tersebut. Kemudian, terus maju kami akan membandingkan kedua kerangka Data Besar pada parameter yang berbeza untuk menganalisis kekuatan dan kelemahan mereka.Tetapi, apa pun hasil perbandingan kami, anda harus tahu bahawa Spark dan Hadoop adalah komponen penting dalam .

Apache Spark vs Hadoop: Pengenalan Hadoop

Hadoop adalah kerangka yang membolehkan anda menyimpan Big Data terlebih dahulu dalam persekitaran yang diedarkan sehingga anda dapat memprosesnya secara paralel. Pada dasarnya terdapat dua komponen dalam Hadoop:





HDFS

HDFS menghasilkan pengabaian sumber, izinkan saya mempermudahnya untuk anda. Sama seperti virtualisasi, anda dapat melihat HDFS secara logik sebagai satu unit untuk menyimpan Big Data, tetapi sebenarnya anda menyimpan data anda di beberapa nod dengan cara yang diedarkan. Di sini, anda mempunyai seni bina master-slave. Dalam HDFS, Namenode adalah nod utama dan Datanodes adalah hamba.

NamaNod

Ini adalah daemon induk yang menjaga dan mengurus DataNodes (nod hamba). Ia merekodkan metadata semua fail yang disimpan dalam kluster, mis. lokasi blok yang disimpan, ukuran fail, izin, hierarki, dll. Ia mencatat setiap perubahan yang berlaku pada metadata sistem fail.



Sebagai contoh, jika fail dihapus dalam HDFS, NameNode akan segera merakamnya di EditLog. Ia secara berkala menerima Denyutan Jantung dan laporan blok dari semua DataNodes di kluster untuk memastikan bahawa DataNode itu disiarkan secara langsung. Ia menyimpan rekod semua blok di HDFS dan di mana nod blok ini disimpan.

DataNode

Ini adalah daemon hamba yang berjalan di setiap mesin hamba. Data sebenar disimpan di DataNodes. Mereka bertanggungjawab untuk melayani permintaan membaca dan menulis dari pelanggan. Mereka juga bertanggung jawab untuk membuat blok, menghapus blok dan mereplikasi yang sama berdasarkan keputusan yang diambil oleh NameNode.

HDFS - Apache Spark vs Hadoop - EdurekaTAHAN

YARN melakukan semua aktiviti pemprosesan anda dengan memperuntukkan sumber dan menjadualkan tugas. Ia mempunyai dua daemon utama, iaitu Pengurus Sumber dan NodeManager .



Pengurus Sumber

Ini adalah komponen tahap kluster (satu untuk setiap kluster) dan berjalan pada mesin induk. Ia menguruskan sumber dan menjadualkan aplikasi berjalan di atas YARN.

hubungan antara java dan javascript

NodeManager

Ia adalah komponen tahap nod (satu pada setiap nod) dan berjalan pada setiap mesin hamba. Ia bertanggungjawab untuk menguruskan kontena dan memantau penggunaan sumber di setiap kontena. Ia juga memantau kesihatan nod dan pengurusan log. Ia terus berkomunikasi dengan ResourceManager untuk terus mengetahui. Jadi, anda boleh melakukan pemprosesan selari pada HDFS menggunakan MapReduce.

Untuk mengetahui lebih lanjut mengenai Hadoop, anda boleh melalui ini blog. Sekarang, kita sudah siap dengan pengenalan Hadoop, mari kita beralih ke pengenalan Spark.

Apache Spark vs Hadoop: Pengenalan kepada Apache Spark

Apache Spark adalah kerangka untuk analisis data masa nyata dalam persekitaran pengkomputeran yang diedarkan. Ia melaksanakan pengiraan dalam memori untuk meningkatkan kelajuan pemprosesan data. Lebih pantas untuk memproses data berskala besar kerana mengeksploitasi pengiraan dalam memori dan pengoptimuman lain. Oleh itu, ia memerlukan daya pemprosesan yang tinggi.

Resilient Distused Dataset (RDD) adalah struktur data asas Spark. Ia adalah koleksi objek yang tidak dapat diubah. Setiap set data dalam RDD dibahagikan kepada partisi logik, yang mungkin dikira pada nod kluster yang berbeza. RDD boleh mengandungi semua jenis objek Python, Java, atau Scala, termasuk kelas yang ditentukan pengguna. Komponen percikan menjadikannya pantas dan boleh dipercayai. Apache Spark mempunyai komponen berikut:

  1. Teras Spark - Spark Core adalah mesin asas untuk pemprosesan data selari dan diedarkan berskala besar. Selanjutnya, perpustakaan tambahan yang dibina di atas teras membolehkan pelbagai beban kerja untuk streaming, SQL, dan pembelajaran mesin. Ia bertanggungjawab untuk pengurusan memori dan pemulihan kesalahan, menjadwalkan, menyebarkan dan memantau pekerjaan pada kluster & berinteraksi dengan sistem penyimpanan
  2. Pengaliran Spark - Spark Streaming adalah komponen Spark yang digunakan untuk memproses data streaming masa nyata. Oleh itu, ia adalah tambahan berguna untuk inti Spark API. Ia membolehkan pemprosesan aliran tinggi dan toleransi kesalahan aliran data langsung
  3. Spark SQL : Spark SQL adalah modul baru di Spark yang mengintegrasikan pemprosesan hubungan dengan API pengaturcaraan fungsional Spark. Ia menyokong pertanyaan data sama ada melalui SQL atau melalui Hive Query Language. Bagi anda yang biasa dengan RDBMS, Spark SQL akan menjadi peralihan yang mudah dari alat awal anda di mana anda dapat memperluas batas pemprosesan data hubungan tradisional.
  4. GrafikX : GraphX ​​adalah Spark API untuk grafik dan pengiraan selari grafik. Oleh itu, ia memperluas Spark RDD dengan Graf Harta Teragih yang Berdaya Tahan. Pada tahap tinggi, GraphX ​​memperluas pengambilan Spark RDD dengan memperkenalkan Grafik Harta Teragih yang Berdaya Tahan: multigraf yang diarahkan dengan sifat yang dilekatkan pada setiap bucu dan tepi.
  5. MLlib (Pembelajaran Mesin): MLlib bermaksud Perpustakaan Pembelajaran Mesin. Spark MLlib digunakan untuk melakukan pembelajaran mesin di Apache Spark.

Seperti yang anda lihat, Spark dilengkapi dengan perpustakaan peringkat tinggi, termasuk sokongan untuk R, SQL, Python, Scala, Java dan lain-lain. Perpustakaan standard ini meningkatkan integrasi yang lancar dalam aliran kerja yang kompleks. Lebih dari itu, ia juga membolehkan pelbagai rangkaian perkhidmatan menyatu dengannya seperti MLlib, GraphX, SQL + Data Frames, Streaming service dll untuk meningkatkan kemampuannya.

Untuk mengetahui lebih lanjut mengenai Apache Spark, anda boleh melalui ini blog. Sekarang tanah sudah siap untuk Apache Spark vs Hadoop. Mari maju dan bandingkan Apache Spark dengan Hadoop pada parameter yang berbeza untuk memahami kekuatannya.

Apache Spark vs Hadoop: Parameter untuk Bandingkan

Persembahan

Spark pantas kerana mempunyai pemprosesan dalam memori. Ia juga dapat menggunakan cakera untuk data yang tidak semuanya sesuai dengan memori. Pemprosesan dalam memori Spark memberikan analisis masa nyata hampir. Ini menjadikan Spark sesuai untuk sistem pemprosesan kad kredit, pembelajaran mesin, analisis keselamatan dan sensor Internet of Things.

Hadoop pada awalnya disiapkan untuk mengumpulkan data dari pelbagai sumber secara berterusan tanpa perlu risau tentang jenis data dan menyimpannya di persekitaran yang diedarkan. MapReduce menggunakan pemprosesan kumpulan. MapReduce tidak pernah dibina untuk pemprosesan masa nyata, idea utama di sebalik YARN adalah pemprosesan selari berbanding set data yang diedarkan.

Masalah dengan membandingkan keduanya adalah bahawa mereka melakukan pemprosesan secara berbeza.

Kemudahan penggunaan

Spark dilengkapi dengan API yang mudah digunakan untuk Scala, Java, Python, dan Spark SQL. Spark SQL sangat mirip dengan SQL, jadi menjadi lebih mudah bagi pembangun SQL untuk mempelajarinya. Spark juga menyediakan shell interaktif untuk pembangun untuk membuat pertanyaan & melakukan tindakan lain, & mempunyai maklum balas segera.

Anda dapat menelan data di Hadoop dengan mudah sama ada dengan menggunakan shell atau mengintegrasikannya dengan pelbagai alat seperti Sqoop, Flume dll. YARN hanyalah kerangka pemprosesan dan ia dapat disatukan dengan pelbagai alat seperti Hive dan Pig. HIVE adalah komponen pergudangan data yang melakukan pembacaan, penulisan dan pengurusan kumpulan data yang besar dalam persekitaran yang diedarkan menggunakan antara muka seperti SQL. Anda boleh melalui ini Ekosistem Hadoop blog untuk mengetahui tentang pelbagai alat yang dapat disatukan dengan Hadoop.

Kos

Hadoop dan Spark adalah kedua-dua projek sumber terbuka Apache, jadi tidak ada biaya untuk perisian. Kos hanya berkaitan dengan infrastruktur. Kedua-dua produk ini dirancang sedemikian rupa sehingga dapat berjalan pada perkakasan komoditi dengan TCO rendah.

Sekarang anda mungkin tertanya-tanya cara mereka berbeza. Penyimpanan & pemprosesan di Hadoop adalah berasaskan cakera & Hadoop menggunakan jumlah memori standard. Oleh itu, dengan Hadoop kita memerlukan banyak ruang cakera dan juga cakera yang lebih pantas. Hadoop juga memerlukan banyak sistem untuk mengedarkan disk I / O.

Oleh kerana pemprosesan memori dalam Apache Spark memerlukan banyak memori, tetapi dapat menangani kelajuan dan jumlah cakera standard. Oleh kerana ruang cakera adalah komoditi yang agak murah dan kerana Spark tidak menggunakan I / O cakera untuk diproses, sebaliknya memerlukan sejumlah besar RAM untuk melaksanakan segala-galanya dalam memori. Oleh itu, sistem Spark menanggung lebih banyak kos.

cara memasang php pada windows 10

Tetapi ya, satu perkara penting yang perlu diingat adalah teknologi Spark mengurangkan bilangan sistem yang diperlukan. Ia memerlukan lebih sedikit sistem yang memerlukan kos lebih tinggi. Jadi, akan ada titik di mana Spark mengurangkan kos per unit pengiraan walaupun dengan keperluan RAM tambahan.

Pemprosesan data

Terdapat dua jenis pemprosesan data: Batch Processing & Stream Processing.

Pemprosesan Kumpulan vs Pemprosesan Aliran

Pemprosesan Kumpulan : Pemprosesan kumpulan sangat penting bagi dunia data besar. Dalam termudah, pemprosesan kumpulan berfungsi dengan jumlah data yang tinggi dikumpulkan dalam satu jangka masa. Dalam kumpulan pemprosesan data dikumpulkan terlebih dahulu dan kemudian hasil yang diproses dihasilkan pada peringkat kemudian.

Pemprosesan kumpulan adalah kaedah yang berkesan untuk memproses kumpulan data yang besar dan statik. Secara umumnya, kami melakukan pemprosesan kumpulan untuk set data yang diarkibkan. Contohnya, mengira pendapatan purata sebuah negara atau menilai perubahan dalam e-commerce pada dekad yang lalu.

Pemprosesan aliran : Pemprosesan aliran adalah trend semasa di dunia data besar. Keperluan jam adalah maklumat kelajuan dan masa nyata, itulah yang dilakukan pemprosesan wap. Pemprosesan kumpulan tidak memungkinkan perniagaan cepat bertindak balas terhadap perubahan keperluan perniagaan dalam masa nyata, pemprosesan aliran telah menyaksikan pertumbuhan permintaan yang pesat.

Sekarang kembali ke Apache Spark vs Hadoop, YARN pada dasarnya adalah kerangka pemprosesan kumpulan. Apabila kami menyerahkan tugas ke YARN, ia membaca data dari kluster, melakukan operasi & menulis hasilnya kembali ke kluster. Kemudian sekali lagi membaca data yang dikemas kini, melakukan operasi seterusnya & menulis hasilnya kembali ke kluster dan seterusnya.

Spark melakukan operasi yang serupa, tetapi menggunakan pemprosesan dalam memori dan mengoptimumkan langkah-langkahnya. GraphX ​​membolehkan pengguna melihat data yang sama seperti grafik dan koleksi. Pengguna juga dapat mengubah dan bergabung grafik dengan Set Data Terdistribusi (RDD).

Toleransi Kesalahan

Hadoop dan Spark keduanya memberikan toleransi kesalahan, tetapi keduanya mempunyai pendekatan yang berbeza. Untuk HDFS dan YARN keduanya, daemon induk (masing-masing NameNode & ResourceManager) memeriksa degupan jantung daemon hamba (masing-masing DataNode & NodeManager). Sekiranya daemon hamba gagal, master daemon menjadualkan semula semua operasi yang belum selesai dan sedang dijalankan kepada hamba yang lain. Kaedah ini berkesan, tetapi dapat meningkatkan masa penyelesaian untuk operasi dengan kegagalan tunggal secara signifikan. Oleh kerana Hadoop menggunakan perkakasan komoditi, cara lain di mana HDFS memastikan toleransi kesalahan adalah dengan mereplikasi data.

Seperti yang telah kita bincangkan di atas, RDD adalah blok bangunan Apache Spark. RDD memberikan toleransi kesalahan kepada Spark. Mereka dapat merujuk kepada set data yang ada dalam sistem storan luaran seperti HDFS, HBase, sistem fail bersama. Mereka boleh dikendalikan secara selari.

RDD dapat mengekalkan set data dalam memori sepanjang operasi, yang menjadikan tindakan masa depan 10 kali lebih cepat. Sekiranya RDD hilang, ia akan dikira semula secara automatik dengan menggunakan transformasi asal. Ini adalah bagaimana Spark memberikan toleransi kesalahan.

membalikkan nombor dalam java

Keselamatan

Hadoop menyokong Kerberos untuk pengesahan, tetapi sukar dikendalikan. Walaupun begitu, ia juga menyokong vendor pihak ketiga seperti LDAP (Lightweight Directory Access Protocol) untuk pengesahan. Mereka juga menawarkan penyulitan. HDFS menyokong kebenaran fail tradisional, serta senarai kawalan akses (ACL). Hadoop memberikan Kebenaran Tahap Perkhidmatan, yang menjamin bahawa pelanggan mempunyai kebenaran yang tepat untuk penyerahan pekerjaan.

Spark pada masa ini menyokong pengesahan melalui rahsia yang dikongsi. Spark dapat disatukan dengan HDFS dan ia dapat menggunakan HDFS ACL dan kebenaran tahap fail. Spark juga dapat berjalan di YARN memanfaatkan kemampuan Kerberos.

Kes penggunaan di mana Hadoop paling sesuai:

  • Menganalisis Data Arkib. YARN membolehkan pemprosesan selari sejumlah besar data. Bahagian Data diproses secara selari & berasingan pada DataNodes yang berbeza & mengumpulkan hasil dari setiap NodeManager.
  • Sekiranya keputusan segera tidak diperlukan. Hadoop MapReduce adalah penyelesaian yang baik dan ekonomik untuk pemprosesan kumpulan.

Kes penggunaan di mana Spark paling sesuai:

Analisis Data Besar Masa Sebenar:

Analisis data masa nyata bermaksud memproses data yang dihasilkan oleh aliran peristiwa masa nyata yang masuk pada kadar berjuta-juta peristiwa sesaat, misalnya data Twitter. Kekuatan Spark terletak pada kemampuannya untuk menyokong streaming data bersama dengan pemprosesan yang diedarkan. Ini adalah gabungan berguna yang memberikan pemprosesan data masa nyata yang hampir. MapReduce cacat dengan kelebihan seperti yang dirancang untuk melakukan pemprosesan batch cum diedarkan pada sejumlah besar data. Data masa nyata masih boleh diproses di MapReduce tetapi kelajuannya tidak dekat dengan Spark.

Spark mendakwa memproses data 100x lebih pantas daripada MapReduce, sementara 10x lebih pantas dengan disk.

Pemprosesan Graf:

Sebilangan besar algoritma pemprosesan grafik seperti peringkat halaman melakukan pelbagai lelaran berbanding data yang sama dan ini memerlukan mekanisme penghantaran mesej. Kita perlu memprogram MapReduce secara eksplisit untuk menangani pelbagai lelaran seperti data yang sama. Secara kasar, ia berfungsi seperti ini: Baca data dari cakera dan selepas lelaran tertentu, tulis hasilnya ke HDFS dan kemudian baca data dari HDFS untuk lelaran seterusnya. Ini sangat tidak cekap kerana melibatkan membaca dan menulis data ke cakera yang melibatkan operasi I / O yang berat dan replikasi data di seluruh kluster untuk toleransi kesalahan. Selain itu, setiap lelaran MapReduce mempunyai latensi yang sangat tinggi, dan lelaran seterusnya dapat dimulakan hanya setelah tugas sebelumnya selesai sepenuhnya.

Juga, penghantaran mesej memerlukan skor nod yang berdekatan untuk menilai skor nod tertentu. Pengiraan ini memerlukan mesej dari jirannya (atau data di beberapa peringkat pekerjaan), mekanisme yang tidak dimiliki oleh MapReduce. Alat pemprosesan grafik yang berbeza seperti Pregel dan GraphLab dirancang untuk memenuhi keperluan platform yang efisien untuk algoritma pemprosesan grafik. Alat-alat ini cepat dan boleh diskalakan, tetapi tidak cekap untuk pembuatan dan pasca pemprosesan algoritma pelbagai peringkat yang kompleks ini.

Pengenalan Apache Spark banyak menyelesaikan masalah ini. Spark mengandungi perpustakaan pengiraan grafik yang disebut GraphX ​​yang mempermudah kehidupan kita. Pengiraan dalam memori bersama dengan sokongan grafik terbina dalam meningkatkan prestasi algoritma dengan skala satu atau dua darjah berbanding program MapReduce tradisional. Spark menggunakan gabungan Netty dan Akka untuk menyebarkan mesej ke seluruh pelaksana. Mari kita lihat beberapa statistik yang menggambarkan prestasi algoritma PageRank menggunakan Hadoop dan Spark.

Algoritma Pembelajaran Mesin Iteratif:

Hampir semua algoritma pembelajaran mesin berfungsi secara berulang. Seperti yang telah kita lihat sebelumnya, algoritma berulang melibatkan kemacetan I / O dalam pelaksanaan MapReduce. MapReduce menggunakan tugas kasar (paralelisme tahap tugas) yang terlalu berat untuk algoritma berulang. Berkilau dengan bantuan Mesos - kernel sistem yang diedarkan, menyimpan data set antara setiap kali lelaran dan menjalankan pelbagai lelaran pada set data cache ini yang mengurangkan I / O dan membantu menjalankan algoritma dengan lebih cepat dengan cara yang bertolak ansur.

Spark mempunyai perpustakaan pembelajaran mesin terukur yang disebut MLlib yang mengandungi algoritma berkualiti tinggi yang memanfaatkan lelaran dan menghasilkan hasil yang lebih baik daripada satu lulus yang kadang-kadang digunakan di MapReduce.

  • Pemprosesan data yang pantas. Seperti yang kita ketahui, Spark membenarkan pemprosesan dalam memori. Hasilnya, Spark hingga 100 kali lebih cepat untuk data dalam RAM dan hingga 10 kali untuk data dalam simpanan.
  • Pemprosesan berulang. RDD Spark membolehkan melakukan beberapa operasi peta dalam memori, tanpa perlu menulis set data sementara ke cakera.
  • Pemprosesan masa nyata hampir. Spark adalah alat yang sangat baik untuk memberikan pandangan perniagaan segera. Inilah sebab mengapa Spark digunakan dalam sistem penstriman kad kredit.

'Apache Spark: Pembunuh atau Penyelamat Apache Hadoop?'

Jawapan untuk ini - Hadoop MapReduce dan Apache Spark tidak bersaing antara satu sama lain. Sebenarnya, mereka saling melengkapi dengan cukup baik. Hadoop mengendalikan kumpulan data yang besar oleh sistem komoditi. Spark menyediakan pemprosesan dalam memori masa nyata untuk set data yang memerlukannya. Apabila kita menggabungkan, kemampuan Apache Spark, seperti kelajuan pemprosesan tinggi, analitik maju dan sokongan pelbagai integrasi dengan operasi kos rendah Hadoop pada perkakasan komoditi, ia memberikan hasil terbaik. Hadoop memuji kemampuan Apache Spark. Spark tidak dapat menggantikan Hadoop sepenuhnya tetapi berita baiknya adalah bahawa permintaan untuk Spark kini berada pada tahap tertinggi sepanjang masa! Ini adalah masa yang tepat untuk menguasai Spark dan memanfaatkan peluang kerjaya sebaik mungkin. Mulakan sekarang!

Ada soalan untuk kami? Sila sebutkan di bahagian komen dan kami akan menghubungi anda secepat mungkin.

Sekiranya anda ingin belajar Spark dan membina karier dalam domain Spark untuk melakukan Pemprosesan Data berskala besar menggunakan RDD, Spark Streaming, SparkSQL, MLlib, GraphX ​​dan Scala dengan kes penggunaan Kehidupan Nyata, lihat interaktif kami secara langsung, dalam talian di sini, yang disertakan dengan sokongan 24 * 7 untuk membimbing anda sepanjang tempoh pembelajaran anda.