Tôi đang cố gắng tối đa hóa việc sử dụng cụm cho một tác vụ đơn giản.Tài nguyên Spark không được phân bổ đầy đủ trên Amazon EMR
Cụm là 1 + 2 x m3.xlarge, runnning Spark 1.3.1, Hadoop 2.4, Amazon AMI 3,7
Nhiệm vụ đọc tất cả các dòng của một tập tin văn bản và phân tích chúng dưới dạng csv.
Khi tôi châm ngòi khi gửi một nhiệm vụ như một chế độ sợi cụm, tôi nhận được một trong những kết quả sau:
- 0 người thi hành: công việc chờ đợi vô hạn cho đến khi tôi tự giết nó
- 1 chấp hành viên: công việc dưới sử dụng tài nguyên với chỉ 1 máy làm việc
- oom khi tôi không gán đủ bộ nhớ trên tài xế
những gì tôi dự kiến sẽ có:
- Trình điều khiển Spark chạy trên máy chủ cụm với tất cả bộ nhớ khả dụng, cộng với 2 trình điều khiển với 9404MB mỗi (được xác định bởi tập lệnh cài đặt tia lửa).
Đôi khi, khi tôi thực hiện "thành công" với 1 người thi hành, nhân bản và khởi động lại bước kết thúc bằng 0 người thi hành.
Tôi tạo ra cụm của tôi sử dụng lệnh này:
aws emr --region us-east-1 create-cluster --name "Spark Test"
--ec2-attributes KeyName=mykey
--ami-version 3.7.0
--use-default-roles
--instance-type m3.xlarge
--instance-count 3
--log-uri s3://mybucket/logs/
--bootstrap-actions Path=s3://support.elasticmapreduce/spark/install-spark,Args=["-x"]
--steps Name=Sample,Jar=s3://elasticmapreduce/libs/script-runner/script-runner.jar,Args=[/home/hadoop/spark/bin/spark-submit,--master,yarn,--deploy-mode,cluster,--class,my.sample.spark.Sample,s3://mybucket/test/sample_2.10-1.0.0-SNAPSHOT-shaded.jar,s3://mybucket/data/],ActionOnFailure=CONTINUE
Với một số biến thể bước bao gồm:
--driver bộ nhớ 8G --driver-lõi 4 --num-Chấp hành 2
tập lệnh cài đặt tia lửa với -x tạo các cấu hình mặc định tia lửa sau.conf:
$ cat spark-defaults.conf
spark.eventLog.enabled false
spark.executor.extraJavaOptions -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:MaxHeapFreeRatio=70
spark.driver.extraJavaOptions -Dspark.driver.log.level=INFO
spark.executor.instances 2
spark.executor.cores 4
spark.executor.memory 9404M
spark.default.parallelism 8
Cập nhật 1
tôi nhận được hành vi tương tự với một ví dụ JavaWordCount generic:
/home/hadoop/spark/bin/spark-submit --verbose --master yarn --deploy-mode cluster --driver-memory 8G --class org.apache.spark.examples.JavaWordCount /home/hadoop/spark/lib/spark-examples-1.3.1-hadoop2.4.0.jar s3://mybucket/data/
Tuy nhiên, nếu tôi loại bỏ các '--driver bộ nhớ 8G, nhiệm vụ được giao 2 Chấp hành viên và kết thúc chính xác.
Vì vậy, vấn đề gì với bộ nhớ điều khiển ngăn cản nhiệm vụ của tôi để có được người thực thi?
Trình điều khiển có được thực thi trên nút chính của cụm cùng với Hộp chứa chủ sợi như được giải thích here không?
Làm cách nào để cung cấp thêm bộ nhớ cho trình điều khiển công việc phát tia lửa của tôi? (Nơi thu thập và một số hoạt động hữu ích khác phát sinh)
Đúng, về cơ bản, người dùng cần điều chỉnh cài đặt để phù hợp với nội dung mong muốn. Các tài liệu Spark liên quan đến việc tung ra sợi thảo luận về điều này. – ChristopherB
Phân tích nút của bạn ngụ ý rằng trình điều khiển không chạy trên trình quản lý tài nguyên (ví dụ chính trong EMR). Đây có phải là trường hợp không? (cố gắng quấn đầu của tôi xung quanh tất cả điều này) (khi chạy như sợi-cluster) – noli
Vâng, đó là những gì nó nói .. Trừ khi tôi là nhầm lẫn, tôi đã không nhìn thấy bất cứ điều gì chạy trên nút chủ khi sử dụng chế độ sợi-cluster . –