Bisakah Apache Spark berjalan tanpa hadoop?

91

Apakah ada ketergantungan antara Spark dan Hadoop ?

Jika tidak, apakah ada fitur yang akan saya lewatkan saat menjalankan Spark tanpa Hadoop ?

turis
sumber

Jawaban:

53

Spark dapat berjalan tanpa Hadoop tetapi beberapa fungsinya bergantung pada kode Hadoop (mis. Menangani file Parquet). Kami menjalankan Spark di Mesos dan S3 yang agak sulit untuk disiapkan tetapi berfungsi dengan sangat baik setelah selesai (Anda dapat membaca ringkasan tentang apa yang diperlukan untuk mengaturnya dengan benar di sini ).

(Sunting) Catatan: sejak versi 2.3.0 Spark juga menambahkan dukungan asli untuk Kubernetes

Arnon Rotem-Gal-Oz
sumber
96

Spark adalah mesin komputasi terdistribusi dalam memori.

Hadoop adalah kerangka kerja untuk penyimpanan terdistribusi ( HDFS ) dan pemrosesan terdistribusi ( YARN ).

Spark dapat berjalan dengan atau tanpa komponen Hadoop (HDFS / YARN)


Penyimpanan Terdistribusi:

Karena Spark tidak memiliki sistem penyimpanan terdistribusi sendiri, Spark harus bergantung pada salah satu sistem penyimpanan ini untuk komputasi terdistribusi.

S3 - Pekerjaan batch yang tidak mendesak. S3 cocok untuk kasus penggunaan yang sangat spesifik ketika lokalitas data tidak penting.

Cassandra - Sempurna untuk analisis data streaming dan pekerjaan berlebih untuk batch.

HDFS - Sangat cocok untuk pekerjaan batch tanpa mengorbankan lokalitas data.


Pemrosesan terdistribusi:

Anda dapat menjalankan Spark dalam tiga mode berbeda: Standalone, YARN, dan Mesos

Lihat pertanyaan SE di bawah ini untuk penjelasan rinci tentang penyimpanan terdistribusi dan pemrosesan terdistribusi.

Jenis cluster mana yang harus saya pilih untuk Spark?

Ravindra babu
sumber
23

Secara default, Spark tidak memiliki mekanisme penyimpanan.

Untuk menyimpan data, dibutuhkan sistem file yang cepat dan skalabel. Anda dapat menggunakan S3 atau HDFS atau sistem file lainnya. Hadoop merupakan pilihan ekonomis karena biaya rendah.

Selain itu, jika Anda menggunakan Tachyon, ini akan meningkatkan kinerja dengan Hadoop. Hadoop sangat direkomendasikan untuk pemrosesan percikan apache . masukkan deskripsi gambar di sini

Venu A Positif
sumber
6

Ya, percikan bisa berjalan tanpa hadoop. Semua fitur percikan inti akan terus berfungsi, tetapi Anda akan kehilangan hal-hal seperti mendistribusikan semua file Anda (kode serta data) dengan mudah ke semua node di cluster melalui hdfs, dll.

quantum_random
sumber
6

Sesuai dokumentasi Spark, Spark dapat berjalan tanpa Hadoop.

Anda dapat menjalankannya sebagai mode Standalone tanpa pengelola sumber daya apa pun.

Tetapi jika Anda ingin menjalankan pengaturan multi-node , Anda memerlukan pengelola sumber daya seperti YARN atau Mesos dan sistem file terdistribusi seperti HDFS, S3, dll.

pengguna2359003
sumber
3

Ya, Anda dapat menginstal Spark tanpa Hadoop. Itu akan sedikit rumit. Anda dapat merujuk tautan arnon untuk menggunakan parket untuk dikonfigurasi pada S3 sebagai penyimpanan data. http://arnon.me/2015/08/spark-parquet-s3/

Spark hanya melakukan pemrosesan dan menggunakan memori dinamis untuk melakukan tugasnya, tetapi untuk menyimpan data Anda memerlukan beberapa sistem penyimpanan data. Di sini hadoop berperan dengan Spark, ini menyediakan penyimpanan untuk Spark. Satu lagi alasan untuk menggunakan Hadoop dengan Spark adalah karena keduanya open source dan keduanya dapat berintegrasi dengan mudah dibandingkan dengan sistem penyimpanan data lainnya. Untuk penyimpanan lain seperti S3, Anda harus rumit untuk mengkonfigurasinya seperti yang disebutkan di tautan di atas.

Tetapi Hadoop juga memiliki unit pemrosesan yang disebut Mapreduce.

Ingin tahu perbedaan keduanya?

Periksa artikel ini: https://www.dezyre.com/article/hadoop-mapreduce-vs-apache-spark-who-wins-the-battle/83

Saya pikir artikel ini akan membantu Anda memahami

  • apa yang harus digunakan,

  • kapan menggunakan dan

  • Cara Penggunaan !!!

Abhijit Kumar
sumber
1

Ya tentu saja. Spark adalah kerangka komputasi independen. Hadoop adalah sistem penyimpanan distribusi (HDFS) dengan kerangka kerja komputasi MapReduce. Spark bisa mendapatkan data dari HDFS, serta sumber data lainnya seperti database tradisional (JDBC), kafka, atau bahkan disk lokal.

ssnijik.dll
sumber
1

Ya, Spark dapat berjalan dengan atau tanpa instalasi Hadoop untuk lebih jelasnya Anda dapat mengunjungi - https://spark.apache.org/docs/latest/

Hadoop_Expert
sumber
0

Ya percikan bisa berjalan tanpa Hadoop. Anda dapat menginstal percikan di mesin lokal Anda tanpa Hadoop. Tetapi perpustakaan Spark hadir dengan perpustakaan pra Haddop yaitu digunakan saat menginstal di mesin lokal Anda.

jerawat amarnath
sumber
-5

Tidak. Ini membutuhkan instalasi Hadoop lengkap untuk mulai bekerja - https://issues.apache.org/jira/browse/SPARK-10944

pengguna1391095
sumber
1
Ini tidak benar, ini berfungsi dengan baik tanpa Hadoop di versi saat ini.
Chris Chambers
1
@ChrisChambers Maukah Anda menjelaskan? Komentar tentang masalah itu mengatakan "Faktanya, Spark memang membutuhkan kelas Hadoop apa pun yang terjadi", dan di halaman unduhan hanya ada opsi untuk versi Hadoop yang dibuat sebelumnya atau yang dengan Hadoop yang disediakan pengguna. Dan dokumen mengatakan "Spark menggunakan pustaka klien Hadoop untuk HDFS dan YARN." dan ketergantungan ini sepertinya bukan pilihan.
NikoNyrh
1
@NikoNyr benar. Saya baru saja mencoba menjalankan artefak unduhan 'Pengguna disediakan Hadoop' dan segera mendapatkan pelacakan tumpukan. Saya juga berharap classpath Spark dipisahkan dari kelas inti Hadoop. Tetapi untuk tujuan prototipe dan pengujian, saya tidak mengambil masalah selain ukuran unduhan (120 MB) secara keseluruhan. Baiklah. Bersulang!
Jesús Zazueta
Jejak tumpukan yang dimaksud:$ ./spark-shell Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream at org.apache.spark.deploy.SparkSubmitArguments$$anonfun$mergeDefaultSparkProperties$1.apply(SparkSubmitArguments.scala:118) at org.apache.spark.deploy.SparkSubmitArguments$$anonfun$mergeDefault at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 7 more
Jesús Zazueta