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


76

Tôi mới sử dụng Apache Spark và tôi vừa biết rằng Spark hỗ trợ ba loại cụm:

  • Độc lập - nghĩa là Spark sẽ quản lý cụm riêng của nó
  • YARN - sử dụng trình quản lý tài nguyên YARN của Hadoop
  • Mesos - Dự án quản lý tài nguyên chuyên dụng của Apache

Vì tôi chưa quen với Spark, tôi nghĩ tôi nên thử Standalone trước. Nhưng tôi tự hỏi cái nào được khuyến nghị. Giả sử, trong tương lai tôi cần xây dựng một cụm lớn (hàng trăm phiên bản), tôi nên chuyển đến loại cụm nào?

Câu trả lời:


74

Tôi nghĩ tốt nhất để trả lời đó là những người làm việc trên Spark. Vì vậy, từ Learning Spark

Bắt đầu với một cụm độc lập nếu đây là một triển khai mới. Chế độ độc lập là chế độ dễ thiết lập nhất và sẽ cung cấp gần như tất cả các tính năng giống như các trình quản lý cụm khác nếu bạn chỉ đang chạy Spark.

Nếu bạn muốn chạy Spark cùng với các ứng dụng khác hoặc sử dụng khả năng lập lịch tài nguyên phong phú hơn (ví dụ: hàng đợi), cả YARN và Mesos đều cung cấp các tính năng này. Trong số này, YARN có thể sẽ được cài đặt sẵn trong nhiều bản phân phối Hadoop.

Một lợi thế của Mesos so với cả YARN và chế độ độc lập là tùy chọn chia sẻ chi tiết, cho phép các ứng dụng tương tác như Spark shell giảm tỷ lệ phân bổ CPU giữa các lệnh. Điều này làm cho nó trở nên hấp dẫn trong môi trường có nhiều người dùng đang chạy các shell tương tác.

Trong mọi trường hợp, tốt nhất là chạy Spark trên các nút giống như HDFS để truy cập nhanh vào bộ nhớ. Bạn có thể cài đặt Mesos hoặc trình quản lý cụm độc lập trên cùng các nút theo cách thủ công hoặc hầu hết các bản phân phối Hadoop đã cài đặt YARN và HDFS cùng nhau.


12
"Một lợi thế của Mesos hơn cả sợi và chế độ độc lập là tùy chọn chia sẻ hạt mịn của nó": hạt mịn chia sẻ không được hỗ trợ nữa như Apache Spark 2.0.0
jgp

Được viết tốt, chỉ cần một nhận xét nữa, cụm độc lập chỉ hỗ trợ chế độ máy khách cho ứng dụng python.
Daisy QL

70

Spark Standalone Manager : Một trình quản lý cụm đơn giản đi kèm với Spark giúp dễ dàng thiết lập một cụm. Theo mặc định, mỗi ứng dụng sử dụng tất cả các nút có sẵn trong cụm.

Một số lợi ích của YARN so với Độc lập & Mesos:

  1. YARN cho phép bạn chia sẻ động và định cấu hình tập trung cùng một nhóm tài nguyên cụm giữa tất cả các khung chạy trên YARN .

  2. Bạn có thể tận dụng tất cả các tính năng của bộ lập lịch YARN để phân loại, cô lập và ưu tiên khối lượng công việc.

  3. Các chế độ độc Spark đòi hỏi mỗi ứng dụng để chạy một chấp hành viên trên tất cả các nút trong cụm; trong khi với YARN, bạn chọn số lượng trình thực thi để sử dụng

  4. YARN trực tiếp xử lý giá đỡ và vị trí máy theo yêu cầu của bạn, điều này thật thuận tiện.

  5. Mô hình yêu cầu tài nguyên, kỳ lạ, ngược lại trong Mesos . Trong YARN , bạn (khung) yêu cầu các vùng chứa với một đặc điểm kỹ thuật nhất định và đưa ra các tùy chọn địa phương. Trong Mesos, bạn nhận được "đề nghị" tài nguyên và chọn chấp nhận hoặc từ chối những đề nghị đó dựa trên chính sách lập lịch trình của riêng bạn. Mô hình Mesos được cho là linh hoạt hơn, nhưng dường như nhiều công việc hơn đối với người triển khai khuôn khổ.

  6. Nếu bạn đã có sẵn một cụm Hadoop lớn, YARN là lựa chọn tốt hơn.

  7. Trình quản lý độc lập yêu cầu người dùng định cấu hình từng nút bằng bí mật được chia sẻ. Mô-đun xác thực mặc định của Mesos , Cyrus SASL, có thể được thay thế bằng một mô-đun tùy chỉnh. YARN có bảo mật cho xác thực, ủy quyền mức dịch vụ, xác thực cho bảng điều khiển Web và bảo mật dữ liệu. Xác thực Hadoop sử dụng Kerberos để xác minh rằng mỗi người dùng và dịch vụ đều được xác thực bởi Kerberos.

  8. Tính khả dụng cao được cung cấp bởi cả ba trình quản lý cụm nhưng Hadoop YARN không cần chạy Bộ điều khiển chuyển đổi dự phòng ZooKeeper riêng biệt.

Liên kết hữu ích:

trang tài liệu spark

bài báo agildata


1
Bảng không đề cập đến Mesos. Cụm YARN và ứng dụng khách YARN gây nhầm lẫn.
flyrain

Bảng này là không chính xác cho Spark độc lập vì nó cũng hỗ trợ các "khách hàng" và chế độ "cụm": spark.apache.org/docs/latest/spark-standalone.html
Ruslan

Loại bỏ bàn
Ravindra babu

Đã xóa dấu trừ của tôi :-)
Ruslan

"Chế độ độc lập Spark yêu cầu mỗi ứng dụng chạy một trình thực thi trên mọi nút trong cụm; trong khi với YARN, bạn chọn số lượng trình thực thi để sử dụng" Câu lệnh này có còn đúng với spark 2.0 trở lên không? Tôi biết trước ngày 1.4 điều này là đúng, nhưng tôi đã thấy các tài khoản xung đột kể từ đó.
Blaisem

9

Độc lập là khá rõ ràng như những người khác đã đề cập, nó chỉ nên được sử dụng khi bạn có khối lượng công việc chỉ spark.

Giữa sợi và mesos, một điều cần xem xét là thực tế là không giống như mapreduce, công việc spark thu hút những người thực thi và giữ nó trong suốt cuộc đời của một công việc. nơi mà trong mapreduce một công việc có thể nhận và giải phóng các trình lập bản đồ và trình giảm bớt trong suốt thời gian tồn tại.

nếu bạn có các công việc spark đang chạy trong thời gian dài của công việc không sử dụng đầy đủ tất cả các tài nguyên mà nó có lúc đầu, bạn có thể muốn chia sẻ các tài nguyên đó với ứng dụng khác và bạn chỉ có thể thực hiện thông qua lập lịch động Mesos hoặc Spark . https://spark.apache.org/docs/2.0.2/job-scheduling.html#scheduling-across-application Vì vậy, với sợi, chỉ có cách để phân bổ động cho spark là sử dụng phân bổ động được cung cấp spark. Yarn sẽ không can thiệp vào việc đó trong khi Mesos sẽ làm. Một lần nữa, toàn bộ điểm này chỉ quan trọng nếu bạn có một ứng dụng spark đang chạy lâu dài và bạn muốn mở rộng quy mô nó lên và xuống một cách linh hoạt.


-2

Mesos có thiết kế lập lịch phức tạp hơn, cho phép các ứng dụng như Spark đàm phán với nó. Nó phù hợp hơn với sự đa dạng của các ứng dụng ngày nay. Tôi thấy trang web này thực sự sâu sắc:

https://www.oreilly.com/ideas/a-tale-of-two-clusters-mesos-and-yarn

"... YARN được tối ưu hóa để lập lịch các công việc Hadoop, trước đây (và vẫn thường là) các công việc hàng loạt với thời gian chạy dài. Điều này có nghĩa là YARN không được thiết kế cho các dịch vụ chạy lâu dài, cũng như cho các truy vấn tương tác ngắn hạn (như nhỏ và các công việc Spark nhanh), và mặc dù có thể đặt lịch cho các loại khối lượng công việc khác, nhưng đây không phải là một mô hình lý tưởng. Các nhu cầu về tài nguyên, mô hình thực thi và nhu cầu về kiến ​​trúc của MapReduce rất khác so với các dịch vụ chạy lâu dài, chẳng hạn như dưới dạng máy chủ web hoặc ứng dụng SOA hoặc khối lượng công việc trong thời gian thực như của Spark hoặc Storm ... "


1
Điều này (2/2015) đề cập đến các bản phát hành ban đầu của Hadoop 2.x và hiện tại hoàn toàn được đánh giá cao vì việc lập lịch YARN đã thay đổi rất nhiều trong ba năm qua, với các phiên bản phụ của Hadoop 2.x và 3.x, để nhắm mục tiêu điều này trong số các vấn đề khác và thiết kế YARN hiện tại hầu như không liên quan gì đến kiến ​​trúc MapReduce ban đầu. -
Luis Vazquez
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.