Tôi có một cụm Spark 2 nút với 4 lõi trên mỗi nút.Làm thế nào để Spark paralellize lát cho nhiệm vụ/executors/công nhân?
MASTER
(Worker-on-master) (Worker-on-node1)
Spark cấu hình:
- nô lệ: thạc sĩ, node1
- SPARK_WORKER_INSTANCES = 1
Tôi cố gắng để hiểu được hành vi của Spark paralellize
. Ví dụ sparkPi có mã này:
val slices = 8 // my test value for slices
val n = 100000 * slices
val count = spark.parallelize(1 to n, slices).map { i =>
val x = random * 2 - 1
val y = random * 2 - 1
if (x*x + y*y < 1) 1 else 0
}.reduce(_ + _)
Theo tài liệu:
Spark sẽ chạy một nhiệm vụ cho từng lát cluster. Thông thường bạn muốn 2-4 lát cho mỗi CPU trong cụm của bạn.
tôi đặt lát là 8 có nghĩa là thiết lập làm việc sẽ được chia cho các 8 nhiệm vụ trên cụm, lần lượt mỗi nút công nhân được 4 nhiệm vụ (1: 1 cho mỗi lõi)
Câu hỏi:
Tôi có thể xem chi tiết cấp công việc ở đâu? Bên trong các trình thực thi, tôi không thấy phân tích nhiệm vụ vì vậy tôi có thể thấy hiệu ứng của các slice trên giao diện người dùng.
Cách lập trình tìm kích thước bộ làm việc cho chức năng bản đồ ở trên? Tôi giả sử nó là
n/slices
(100000 ở trên)Có nhiều tác vụ do một người chạy thi hành chạy tuần tự hoặc song song trong nhiều luồng không?
Lý do đằng sau 2-4 lát trên mỗi CPU.
tôi giả lý tưởng chúng ta nên điều chỉnh
SPARK_WORKER_INSTANCES
tương ứng với số lượng lõi trong mỗi nút (trong một cụm đồng nhất) để mỗi lõi được chấp hành viên và nhiệm vụ riêng của mình (1: 1: 1)