Apache spark có thể chạy mà không có hadoop?


Câu trả lời:


53

Spark có thể chạy mà không cần Hadoop nhưng một số chức năng của nó dựa vào mã của Hadoop (ví dụ: xử lý các tệp Parquet). Chúng tôi đang chạy Spark trên Mesos và S3, hơi khó thiết lập nhưng hoạt động thực sự tốt sau khi hoàn thành (bạn có thể đọc bản tóm tắt về những gì cần thiết để thiết lập đúng cách tại đây ).

(Chỉnh sửa) Lưu ý: kể từ phiên bản 2.3.0 Spark cũng đã thêm hỗ trợ gốc cho Kubernetes


94

Spark là một công cụ tính toán phân tán trong bộ nhớ.

Hadoop là một khuôn khổ cho lưu trữ phân tán ( HDFS ) và xử lý phân tán ( YARN ).

Spark có thể chạy có hoặc không có các thành phần Hadoop (HDFS / YARN)


Bộ nhớ phân tán:

Spark không có hệ thống lưu trữ phân tán của riêng mình nên nó phải phụ thuộc vào một trong những hệ thống lưu trữ này để tính toán phân tán.

S3 - Các công việc hàng loạt không khẩn cấp. S3 phù hợp với các trường hợp sử dụng rất cụ thể khi vùng dữ liệu không quan trọng.

Cassandra - Hoàn hảo để phân tích dữ liệu trực tuyến và là một công việc quá mức cần thiết cho các công việc hàng loạt.

HDFS - Phù hợp tuyệt vời cho các công việc hàng loạt mà không ảnh hưởng đến vùng dữ liệu.


Quá trình đóng góp:

Bạn có thể chạy Spark ở ba chế độ khác nhau: Độc lập, YARN và Mesos

Hãy xem câu hỏi SE bên dưới để biết giải thích chi tiết về cả lưu trữ phân tán và xử lý phân tán.

Tôi nên chọn loại cụm nào cho Spark?


23

Theo mặc định, Spark không có cơ chế lưu trữ.

Để lưu trữ dữ liệu, nó cần hệ thống tệp nhanh và có thể mở rộng. Bạn có thể sử dụng S3 hoặc HDFS hoặc bất kỳ hệ thống tệp nào khác. Hadoop là lựa chọn kinh tế do chi phí thấp.

Ngoài ra, nếu bạn sử dụng Tachyon, nó sẽ tăng hiệu suất với Hadoop. Nó rất được khuyến khích sử dụng Hadoop để xử lý tia lửa apache . nhập mô tả hình ảnh ở đây


6

Có, tia lửa có thể chạy mà không cần hadoop. Tất cả các tính năng spark cốt lõi sẽ tiếp tục hoạt động, nhưng bạn sẽ bỏ lỡ những thứ như dễ dàng phân phối tất cả các tệp của bạn (mã cũng như dữ liệu) đến tất cả các nút trong cụm thông qua hdfs, v.v.


6

Theo tài liệu Spark, Spark có thể chạy mà không cần Hadoop.

Bạn có thể chạy nó ở chế độ Độc lập mà không cần bất kỳ trình quản lý tài nguyên nào.

Nhưng nếu bạn muốn chạy trong thiết lập nhiều nút , bạn cần trình quản lý tài nguyên như YARN hoặc Mesos và hệ thống tệp phân tán như HDFS, S3, v.v.


3

Có, bạn có thể cài đặt Spark mà không cần Hadoop. Điều đó sẽ hơi phức tạp. Bạn có thể tham khảo liên kết arnon để sử dụng parquet để cấu hình trên S3 làm bộ lưu trữ dữ liệu. http://arnon.me/2015/08/spark-parquet-s3/

Spark chỉ thực hiện xử lý và nó sử dụng bộ nhớ động để thực hiện tác vụ, nhưng để lưu trữ dữ liệu bạn cần một số hệ thống lưu trữ dữ liệu. Ở đây hadoop có vai trò với Spark, nó cung cấp kho lưu trữ cho Spark. Thêm một lý do để sử dụng Hadoop với Spark là chúng là mã nguồn mở và cả hai đều có thể tích hợp với nhau dễ dàng so với hệ thống lưu trữ dữ liệu khác. Đối với các bộ nhớ khác như S3, bạn nên cấu hình nó như đã đề cập trong liên kết trên.

Nhưng Hadoop cũng có đơn vị xử lý của nó được gọi là Mapreduce.

Bạn muốn biết sự khác biệt trong cả hai?

Kiểm tra bài viết này: https://www.dezyre.com/article/hadoop-mapreduce-vs-apache-spark-who-wins-the-battle/83

Tôi nghĩ rằng bài viết này sẽ giúp bạn hiểu

  • sử dụng cái gì,

  • khi nào sử dụng

  • làm thế nào để sử dụng !!!


1

Phải, tất nhiên. Spark là một khung tính toán độc lập. Hadoop là một hệ thống lưu trữ phân phối (HDFS) với khung tính toán MapReduce. Spark có thể lấy dữ liệu từ HDFS, cũng như bất kỳ nguồn dữ liệu nào khác như cơ sở dữ liệu truyền thống (JDBC), kafka hoặc thậm chí là đĩa cục bộ.



0

Có tia lửa có thể chạy mà không cần Hadoop. Bạn có thể cài đặt spark trong máy cục bộ của mình mà không cần dùng Hadoop. Nhưng Spark lib đi kèm với các thư viện Haddop trước, tức là được sử dụng trong khi cài đặt trên máy cục bộ của bạn.


-4

Không. Nó yêu cầu cài đặt Hadoop hoàn chỉnh để bắt đầu hoạt động - https://issues.apache.org/jira/browse/SPARK-10944


1
Điều này không chính xác, nó hoạt động tốt mà không có Hadoop trong các phiên bản hiện tại.
Chris Chambers

1
@ChrisChambers Bạn có muốn giải thích thêm không? Nhận xét về vấn đề đó cho biết "Trên thực tế, Spark yêu cầu các lớp Hadoop bất kể thế nào" và trên trang tải xuống chỉ có các tùy chọn được tạo sẵn cho một phiên bản Hadoop cụ thể hoặc một với Hadoop do người dùng cung cấp. Và tài liệu cho biết "Spark sử dụng thư viện máy khách Hadoop cho HDFS và YARN." và sự phụ thuộc này dường như không phải là tùy chọn.
NikoNyrh

1
@NikoNyrh đúng. Tôi vừa thử thực thi cấu phần phần mềm tải xuống 'Người dùng cung cấp Hadoop' và ngay lập tức nhận được dấu vết ngăn xếp. Tôi cũng mong muốn classpath của Spark được tách khỏi các lớp Hadoop cốt lõi. Nhưng đối với mục đích tạo mẫu và thử nghiệm, tôi không quan tâm đến vấn đề gì khác ngoài kích thước của bản tải xuống (120 MB). Ồ tốt. Chúc mừng!
Jesús Zazueta

Dấu vết ngăn xếp được đề cập:$ ./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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.