2015-08-03 23 views
9

Tôi kích hoạt các công việc trên một cụm EMR của Amazon. Tôi muốn tất cả các khai thác tia lửa được gửi đến redis/logstash. Cách thích hợp để cấu hình tia lửa trong EMR để làm điều này là gì?Cách tốt nhất để gửi nhật ký apache-spark tới redis/logstash trên cụm Amazon EMR

  • Giữ log4j: Thêm một hành động bootstrap để sửa đổi /home/hadoop/spark/conf/log4j.properties để thêm một appender? Tuy nhiên, tệp này đã chứa rất nhiều thứ và là một liên kết tượng trưng đến tệp conf hadoop. Tôi không muốn fiddle quá nhiều với điều đó vì nó đã chứa một số rootLoggers. Ứng dụng nào sẽ làm tốt nhất? ryantenney/log4j-redis-appender + logstash/log4j-jsonevent-layout HOẶC pavlobaron/log4j2redis?

  • Di chuyển sang slf4j + logback: Loại trừ slf4j-log4j12 khỏi lõi lửa, thêm log4j-over-slf4j ... và sử dụng logback.xml với com.cwbase.logback.RedisAppender? Có vẻ như điều này sẽ có vấn đề với các phụ thuộc. Nó sẽ ẩn log4j.rootLoggers đã được xác định trong log4j.properties?

  • Bất kỳ điều gì khác tôi đã bỏ lỡ?

Suy nghĩ của bạn về điều này là gì?

Cập nhật

Hình như tôi không thể có được lựa chọn thứ hai để làm việc. Chạy thử nghiệm chỉ là tốt nhưng sử dụng tia lửa gửi (với --conf spark.driver.userClassPathFirst = true) luôn luôn kết thúc với sợ hãi "Phát hiện cả log4j-over-slf4j.jar AND slf4j-log4j12.jar trên đường dẫn lớp, preempting StackOverflowError. "

+0

Tôi sắp sửa đi xuống tuyến đường log4j-over-slf4j. Tôi nghĩ rằng bạn đã tiết kiệm cho tôi một thời gian. – Pengin

+1

Tôi nghĩ rằng không có cách nào xung quanh nó vì nó tải các mã nhị phân cạnh nhau với chất béo-jar và tia lửa của chúng tôi sử dụng slf4j-log4j12. Tôi đã thử mọi thứ ngày hôm nay để làm việc này nhưng không thành công. Nếu bạn vẫn muốn cung cấp cho nó một shot, giữ cho tôi được đăng trên phát hiện của bạn. –

+0

bất kỳ cách nào để giải quyết vấn đề này? các thư viện lớn như bão và tia lửa đang được đóng gói với một lib mặc định. –

Trả lời

-1

Tôi sẽ thiết lập thêm daemon cho cụm từ đó.

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