2016-09-06 19 views
9

Tôi đã viết nguồn/số liệu tùy chỉnh cho ứng dụng phát trực tuyến Spark của mình và tôi đang cố gắng khởi chạy nó từ metrics.properties - nhưng điều đó không hoạt động từ người thực thi. Tôi không có quyền kiểm soát trên các máy trong cụm Spark, vì vậy tôi không thể sao chép tập tin thuộc tính trong $ SPARK_HOME/conf/trong cụm. Tôi có nó trong lọ chất béo, nơi mà ứng dụng của tôi đang hoạt động, nhưng khi bình chất béo của tôi được tải xuống trên các nút công nhân trong cụm, các nhà điều hành đã bắt đầu và hệ thống Metrics của họ đã được khởi tạo - do đó không chọn tệp của tôi với cấu hình nguồn tùy chỉnh trong đó .Cấu hình nguồn/sink tùy chỉnh không được nhận dạng

Sau post, tôi đã chỉ định 'spark.files = metrics.properties' và 'spark.metrics.conf = metrics.properties' nhưng vào thời điểm 'metrics.properties' được chuyển đến người thực thi, hệ thống số liệu của họ đã sẵn sàng được khởi tạo.

Nếu tôi khởi tạo hệ thống chỉ số của riêng mình, nó sẽ chọn tệp của tôi nhưng sau đó tôi thiếu các chỉ số/thuộc tính cấp độ chính/thực thi (ví dụ: executor.sink.mySink.propName = myProp - không thể đọc 'propName' từ 'mySink') vì chúng là initialized bởi hệ thống số liệu của Spark.

Có cách nào (có lập trình) để 'số liệu.properties' được vận chuyển trước khi các nhà thi hành initialize hệ thống chỉ số của họ không?

Update1: Tôi đang cố gắng này trên độc lập Spark 2.0.0 cụm

Update2: Tư tưởng của hacks vào việc đạt được này - trước khi bắt đầu công việc spark 'thực tế' của bạn, hãy bắt đầu một công việc giả để sao chép metrics.properties trên mỗi công nhân. Sau đó, bắt đầu công việc thực tế của bạn với vị trí tệp đã biết trước. Nhược điểm - nếu một công nhân chết và một nhân viên khác thay thế nó, nó sẽ không có tập tin này trong con đường đã biết trước. Giải pháp thay thế - khi máy công nhân mới bắt đầu, nó cũng lấy số liệu.properties từ git-repo của bạn và đặt nó vào đường dẫn đã biết trước. Mặc dù, nó có thể hoạt động, nó rất khủng khiếp và một giải pháp ưu tiên là Spark hỗ trợ nó trong nội bộ.

Trả lời

1

thấy Spark metrics on wordcount example Về cơ bản tôi tin rằng bạn cần phải thêm --files để gửi metrics.properties cho tất cả công nhân

+0

Tôi đã thử điều đó. 2 vấn đề - 1) Nó không sao chép 'metrics.properties' vào trình điều khiển máy - vì nó chỉ được phép sao chép các tệp trong thư mục làm việc của trình thực thi. 2) Bởi thời gian nó sao chép các tập tin trên thực thi, hệ thống số liệu đã cố gắng để khởi tạo và thất bại - vì thiếu các tập tin. –

1

SparkConf only load local system properties if they start with the prefix spark., bạn có khay nạp tài sản của bạn thêm tia lửa?

+0

Tôi không thực sự tuân theo, điều này có ý nghĩa gì trong ngữ cảnh của câu hỏi? –

+0

'private val masterMetricsSystem = MetricsSystem.createMetricsSystem (" master ", conf, securityMgr)' Giá trị conf này là một SparkConf, vì vậy nếu bạn có thể chèn vào thuộc tính này, bạn có thể tạo số liệu của bạnSystem với các thuộc tính tùy chỉnh của bạn, trong ví dụ của bạn spark.executor.sink.mySink.propName = myProp và sau đó đọc nó trong bồn rửa chén của bạn. Tôi chưa bao giờ cố gắng làm bất cứ điều gì với metricSystem, vì vậy tôi không biết nếu bạn có thể sử dụng điều này, nhưng tôi đã thay đổi một số propeties của Executor bằng cách thêm --conf vào sparkSubmit vì vậy tôi hy vọng điều này sẽ hữu ích cho bạn – jlopezmat

+0

Tôi cũng thấy mã này và các thuộc tính số liệu được chỉ định là: executor.source.mysource.class = MyClass. Cảm ơn bạn đã trả lời, nhưng nó không hoạt động. –

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