2015-05-01 19 views
5

Tôi tự hỏi nếu nó có thể nộp, màn & giết ứng dụng tia lửa từ một dịch vụ khác.Gửi & chương trình Kill Spark Ứng dụng lập trình từ một ứng dụng khác

yêu cầu của tôi là như sau:

Tôi đã viết một dịch vụ mà

  1. phân tích cú pháp dùng lệnh
  2. dịch chúng vào hiểu luận một đã chuẩn bị Spark-SQL ứng dụng
  3. nộp đơn cùng với đối số cho Spark Cụm sử dụng spark-submit từ ProcessBuilder
  4. Và kế hoạch để chạy các ứng dụng điều khiển tạo trong chế độ cụm.

Các yêu cầu khác cần:

  • Query về các ứng dụng tình trạng, ví dụ, tỷ lệ vẫn
  • Kill truy vấn accrodingly

Những gì tôi tìm thấy trong spark standalone documentation đề xuất xóa ứng dụng bằng:

./bin/spark-class org.apache.spark.deploy.Client kill <master url> <driver ID> 

Và nên find the driver ID through the standalone Master web UI at http://<master url>:8080.

Vì vậy, những gì tôi phải làm gì?

liên quan SO câu hỏi:
Spark application finished callback
Deploy Apache Spark application from another application in Java, best practice

Trả lời

0

bạn có thể bắn commnds sợi từ ProcessBuilder vào danh sách các ứng dụng và sau đó lọc dựa trên tên ứng dụng của bạn mà có sẵn với bạn, trích xuất các AppID và sau đó sử dụng Sợi lệnh thăm dò ý kiến ​​trạng thái/giết chết, vv

+1

nếu tôi đang sử dụng cụm độc lập thì sao? có phương pháp tương đương? –

2

Bí quyết "bẩn" để diệt các ứng dụng tia lửa là bằng cách tiêu diệt jps có tên SparkSubmit. Vấn đề chính là các ứng dụng sẽ được "giết" nhưng thầy spark đăng nhập nó sẽ xuất hiện như "xong" ...

[email protected]:~$ jps 
20894 Jps 
20704 SparkSubmit 

[email protected]:~$ kill 20704 

Thành thật mà nói tôi không thích giải pháp này nhưng bây giờ là chỉ cách tôi biết để giết một ứng dụng.

Hy vọng điều đó có thể hữu ích.

2

Dưới đây là những gì tôi làm:

  1. Trình ứng dụng, sử dụng (ẩn) Spark REST của Nộp API: http://arturmkrtchyan.com/apache-spark-hidden-rest-api

    • Bằng cách này bạn sẽ có được một DriverID (dưới submissionId) mà bạn có thể sử dụng để giết công việc của bạn sau này (bạn không nên giết ứng dụng, đặc biệt nếu bạn đang sử dụng "giám sát" trên chế độ độc lập)
    • API này cũng cho phép bạn truy vấn trạng thái trình điều khiển
  2. tình trạng truy vấn cho các ứng dụng bằng cách sử dụng (còn ẩn) UI Json API: http://[master-node]:[master-ui-port]/json/

    • Dịch vụ này cho thấy tất cả các thông tin có sẵn trên giao diện người dùng tổng thể ở định dạng JSON.
  3. Bạn cũng có thể sử dụng "công cộng" REST API để truy vấn các ứng dụng trên Thạc sĩ hoặc Chấp hành viên trên mỗi công nhân, nhưng điều này sẽ không tiếp xúc với trình điều khiển (ít nhất là không phải là của Spark 1,6)

3

Bạn có thể sử dụng tập lệnh shell để thực hiện việc này.

Các kịch bản triển khai:

#!/bin/bash 

spark-submit --class "xx.xx.xx" \  
     --deploy-mode cluster \ 
     --supervise \ 
     --executor-memory 6G hdfs:///spark-stat.jar > output 2>&1 

cat output 

và bạn sẽ nhận được kết quả như thế này:

16/06/23 08:37:21 INFO rest.RestSubmissionClient: Submitting a request to launch an application in spark://node-1:6066. 
16/06/23 08:37:22 INFO rest.RestSubmissionClient: Submission successfully created as driver-20160623083722-0026. Polling submission state... 
16/06/23 08:37:22 INFO rest.RestSubmissionClient: Submitting a request for the status of submission driver-20160623083722-0026 in spark://node-1:6066. 
16/06/23 08:37:22 INFO rest.RestSubmissionClient: State of driver driver-20160623083722-0026 is now RUNNING. 
16/06/23 08:37:22 INFO rest.RestSubmissionClient: Driver is running on worker worker-20160621162532-192.168.1.200-7078 at 192.168.1.200:7078. 
16/06/23 08:37:22 INFO rest.RestSubmissionClient: Server responded with CreateSubmissionResponse: 
{ 
    "action" : "CreateSubmissionResponse", 
    "message" : "Driver successfully submitted as driver-20160623083722-0026", 
    "serverSparkVersion" : "1.6.0", 
    "submissionId" : "driver-20160623083722-0026", 
    "success" : true 
} 

Và dựa trên điều này, tạo lái xe kịch bản giết bạn

#!/bin/bash 

driverid=`cat output | grep submissionId | grep -Po 'driver-\d+-\d+'` 

spark-submit --master spark://node-1:6066 --kill $driverid 

Hãy chắc chắn rằng cho tập lệnh thực thi quyền bằng cách sử dụng chmod +x

+0

Điều này đã giúp tôi rất nhiều! Cảm ơn – luckytaxi

0

kill -9 $ (jps | grep SparkSubmit | grep -Eo '[0-9] {1,7}')

0

Bạn có thể tìm thấy id trình điều khiển trong [spark]/work /. Id là tên thư mục. Giết công việc bằng cách kích hoạt.

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