2016-05-16 21 views
14

My Apache cụm Spark của họ đang chạy một ứng dụng mà được đem lại cho tôi rất nhiều timeouts thi hành di chúc:Spark cụm đầy đủ các timeouts nhịp tim, Chấp hành viên thoát tự

10:23:30,761 ERROR ~ Lost executor 5 on slave2.cluster: Executor heartbeat timed out after 177005 ms 
10:23:30,806 ERROR ~ Lost executor 1 on slave4.cluster: Executor heartbeat timed out after 176991 ms 
10:23:30,812 ERROR ~ Lost executor 4 on slave6.cluster: Executor heartbeat timed out after 176981 ms 
10:23:30,816 ERROR ~ Lost executor 6 on slave3.cluster: Executor heartbeat timed out after 176984 ms 
10:23:30,820 ERROR ~ Lost executor 0 on slave5.cluster: Executor heartbeat timed out after 177004 ms 
10:23:30,835 ERROR ~ Lost executor 3 on slave7.cluster: Executor heartbeat timed out after 176982 ms 

Tuy nhiên, trong cấu hình của tôi, tôi có thể khẳng định tôi tăng thành công khoảng thời gian nhịp tim của người thi hành: enter image description here

Khi tôi truy cập nhật ký của người thi hành được đánh dấu là EXITED (có nghĩa là người điều khiển đã tự tử vì họ không nhận được bất kỳ nhiệm vụ nào từ người lái xe:

16/05/16 10:11:26 ERROR TransportChannelHandler: Connection to /10.0.0.4:35328 has been quiet for 120000 ms while there are outstanding requests. Assuming connection is dead; please adjust spark.network.timeout if this is wrong. 
16/05/16 10:11:26 ERROR CoarseGrainedExecutorBackend: Cannot register with driver: spark://[email protected]:35328 

Làm cách nào để tắt nhịp tim và/hoặc ngăn các nhà điều hành ngừng hoạt động?

Trả lời

17

Câu trả lời khá đơn giản. Trong số spark-defaults.conf Tôi đặt spark.network.timeout thành giá trị cao hơn. Khoảng thời gian Heartbeat có phần không liên quan đến vấn đề (mặc dù điều chỉnh rất tiện dụng).

Khi sử dụng spark-submit Tôi cũng đã có thể đặt thời gian chờ như sau:

$SPARK_HOME/bin/spark-submit --conf spark.network.timeout 10000000 --class myclass.neuralnet.TrainNetSpark --master spark://master.cluster:7077 --driver-memory 30G --executor-memory 14G --num-executors 7 --executor-cores 8 --conf spark.driver.maxResultSize=4g --conf spark.executor.heartbeatInterval=10000000 path/to/my.jar 
+1

Heartbeats cho người lái xe biết rằng người thực thi vẫn còn sống và cập nhật nó với số liệu cho các công việc đang thực hiện. spark.executor.heartbeatInterval phải nhỏ hơn đáng kể so với spark.network.timeout - http://spark.apache.org/docs/latest/configuration.html – evgenii

+0

điều này không hiệu quả đối với tôi, tôi đã phải sử dụng - conf spark.network.timeout = 10000000 – nEO

20

nhịp đập con tim Thiếu và Chấp hành viên bị giết bởi SỢI là gần như luôn luôn do Ooms. Bạn nên kiểm tra các bản ghi trên các trình thực thi riêng lẻ (tìm kiếm văn bản "chạy vượt quá bộ nhớ vật lý"). Nếu bạn có nhiều người thực thi và thấy nó cồng kềnh để kiểm tra tất cả các nhật ký theo cách thủ công, tôi khuyên bạn nên theo dõi công việc của mình trong giao diện người dùng Spark trong khi nó chạy. Ngay sau khi một tác vụ thất bại, nó sẽ báo cáo nguyên nhân trong giao diện người dùng, do đó, nó rất dễ dàng để xem. Lưu ý rằng một số tác vụ sẽ báo cáo lỗi do thiếu các trình thực thi đã bị giết, vì vậy hãy đảm bảo bạn xem xét các nguyên nhân cho từng tác vụ thất bại riêng lẻ. Lưu ý rằng hầu hết các vấn đề OOM có thể được giải quyết nhanh chóng bằng cách phân vùng lại dữ liệu của bạn tại các vị trí thích hợp trong mã của bạn (xem lại giao diện người dùng Spark để biết gợi ý về nơi có thể cần gọi đến repartition). Nếu không, bạn có thể muốn mở rộng các máy của mình để đáp ứng nhu cầu về bộ nhớ.

+0

Tôi đã có cùng một vấn đề và 'repartition' đã làm các trick. Cảm ơn –

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