2016-05-14 15 views
5

Tôi muốn hiểu nội bộ của chế độ lập lịch FAIR của Spark. Cái này là nó dường như không công bằng như người ta mong đợi theo official Spark documentation:Cách bật Trình lên lịch công bằng trong Spark?

Bắt đầu từ năm Spark 0.8, nó cũng có thể cấu hình chia sẻ công bằng giữa công việc. Theo chia sẻ công bằng, Spark phân công nhiệm vụ giữa các công việc theo kiểu “vòng tròn”, để tất cả các công việc có được một lượng tài nguyên cụm ngang nhau. Điều này có nghĩa là các công việc ngắn được gửi trong khi một công việc dài đang chạy có thể bắt đầu nhận tài nguyên ngay lập tức và vẫn nhận được thời gian phản hồi tốt, mà không phải đợi công việc lâu dài để hoàn thành. Chế độ này là tốt nhất cho cài đặt nhiều người dùng.

Có vẻ như công việc không được xử lý như nhau và thực sự được quản lý theo thứ tự năm mươi.

Để cung cấp thêm thông tin về chủ đề:

Tôi đang sử dụng Spark trên YARN. Tôi sử dụng API Java của Spark. Để bật chế độ công bằng, Mã là:

SparkConf conf = new SparkConf(); 
conf.set("spark.scheduler.mode", "FAIR"); 
conf.setMaster("yarn-client").setAppName("MySparkApp"); 
JavaSparkContext sc = new JavaSparkContext(conf); 

Tôi có bỏ lỡ điều gì đó không?

Trả lời

4

xuất hiện mà bạn không thiết lập các hồ và tất cả các công việc của bạn kết thúc trong một default hồ bơi duy nhất như được mô tả trong Configuring Pool Properties: tính

hồ Cụ cũng có thể được sửa đổi thông qua một cấu hình tập tin.

và sau

Một ví dụ đầy đủ cũng có sẵn trong conf/fairscheduler.xml.template. Lưu ý rằng bất kỳ nhóm nào không được định cấu hình trong tệp XML sẽ chỉ nhận được các giá trị mặc định cho tất cả các cài đặt (chế độ lập lịch biểu FIFO, trọng số 1 và minShare 0).

Nó có thể cũng thể là bạn không thiết lập thuộc tính địa phương để thiết lập hồ để sử dụng cho một công việc nhất định (s) như mô tả trong Fair Scheduler Pools:

Nếu không có bất kỳ sự can thiệp , các công việc mới được gửi đi vào một nhóm mặc định, nhưng các nhóm công việc có thể được thiết lập bằng cách thêm spark.scheduler.pool “local property” vào SparkContext trong chủ đề đang gửi chúng.

Cuối cùng, bạn có thể sử dụng một hồ bơi default FIFO duy nhất để một hồ bơi ở chế độ FIFO không thay đổi gì so với FIFO không có hồ bơi.

Chỉ bạn mới biết câu trả lời thực sự :)

+0

Trong công việc mặc định của hồ bơi chạy song song, nếu chúng được gửi qua các chủ đề khác nhau, tôi đã thấy nó chạy song song. Đừng nghĩ rằng chúng ta cần tạo ra các hồ bơi chỉ để làm việc song song. "mỗi nhóm nhận được một phần bằng nhau của cụm (cũng bằng chia sẻ cho mỗi công việc trong nhóm mặc định)" từ http://spark.apache.org/docs/latest/job-scheduling.html#default-behavior-of -pools – spats

+0

Đó là chính xác nếu # CPU> # nhiệm vụ từ các giai đoạn không liên quan. –

Các vấn đề liên quan