2016-03-04 31 views
18

Trong Pyspark, tôi có thể tạo ra một RDD từ một danh sách và quyết định có bao nhiêu phân vùng để có:Số phân vùng trong RDD và hiệu suất trong Spark

sc = SparkContext() 
sc.parallelize(xrange(0, 10), 4) 

Làm thế nào để số lượng phân vùng tôi quyết định để phân vùng RDD của tôi ảnh hưởng đến hiệu suất? Và điều này phụ thuộc vào số lõi máy của tôi như thế nào?

+1

Tôi thực sự khuyên bạn nên [link] này (http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/). Chuyển đến phần "Điều chỉnh song song". Nó trở nên khá phức tạp, nhưng nó chắc chắn là chiều sâu. –

Trả lời

24

Hiệu ứng chính sẽ bằng cách chỉ định quá ít phân vùng hoặc xa quá nhiều phân vùng.

Quá ít phân vùng Bạn sẽ không sử dụng tất cả các lõi có sẵn trong cụm.

Quá nhiều phân vùng Sẽ có quá nhiều chi phí trong việc quản lý nhiều tác vụ nhỏ.

Giữa hai yếu tố đầu tiên ảnh hưởng nhiều hơn đến hiệu suất. Lập kế hoạch quá nhiều nhiệm vụ nhỏ là một tác động tương đối nhỏ tại thời điểm này cho số lượng phân vùng dưới 1000. Nếu bạn có thứ tự của hàng chục nghìn phân vùng thì spark sẽ bị rất chậm.

+1

Thật vậy. Tôi có một công việc cụ thể được sử dụng để hết bộ nhớ khi nó có 2 triệu đối tượng json lớn được chia thành các phân vùng 25K. Khi tôi kết hợp với 320, công việc sẽ diễn ra trong chưa đầy một phút. Điều này có vẻ giống như một trong những cách dễ nhất để cải thiện hiệu suất. –

+0

Nhược điểm của quá nhiều phân vùng: Tìm nạp thêm, tìm kiếm đĩa nhiều hơn. Trình điều khiển cần theo dõi trạng thái cho mỗi tác vụ. Nguồn: trang trình bày 53, https://www.slideshare.net/Hadoop_Summit/why-your-spark-job-is-failing – ruhong

19

Để thêm vào câu trả lời tuyệt vời của javadba, tôi nhớ các tài liệu đề xuất để số lượng phân vùng của bạn được đặt gấp 3 hoặc 4 lần số lõi CPU trong cụm sao của bạn sao cho công việc được phân phối đồng đều hơn giữa các lõi CPU có sẵn. Có nghĩa là, nếu bạn chỉ có 1 phân vùng trên mỗi lõi CPU trong cluster, bạn sẽ phải chờ một nhiệm vụ dài nhất để hoàn thành nhưng nếu bạn đã giảm xuống thì khối lượng công việc sẽ cân bằng hơn với nhiệm vụ chạy nhanh và chậm .

+1

Bạn có thể cung cấp tham chiếu đến nơi số lượng phân vùng được đề xuất được mô tả trong tài liệu không? – sversch

+0

@sversch Bài đăng blog [hakernoon] này (https://hackernoon.com/managing-spark-partitions-with-coalesce-and-repartition-4050c57ad5c4) có thể giúp bạn trong việc quyết định số lượng phân vùng tối ưu. –

+0

@sversch, https://spark.apache.org/docs/latest/tuning.html –

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