5

Tôi có ứng dụng Kafka dựa trên Spark Streaming chạy 5 phút một lần. Nhìn vào số liệu thống kê sau 5 ngày chạy, có một vài quan sát:Phát trực tuyến: Sức khỏe ứng dụng

  1. Processing time tăng dần từ 30 giây đến 50 giây. Các ảnh chụp được hiển thị dưới đây trong đó nổi bật các biểu đồ thời gian xử lý: Snapshot

  2. Một số tốt của Garbage collection bản ghi đang xuất hiện như hình dưới đây: Snapshot

Câu hỏi:

  1. Có một lời giải thích tốt lý do tại sao các Processing Time đã tăng lên đáng kể, ngay cả khi số lượng e lỗ thông hơi nhiều hơn hoặc ít hơn (trong máng cuối cùng)?
  2. Tôi nhận được gần 70 GC logs ở cuối mỗi chu kỳ xử lý. Thật là bình thường?
  3. Chiến lược tốt hơn để đảm bảo processing time có duy trì ở mức có thể chấp nhận được không?

Trả lời

1

Nó thực sự phụ thuộc vào ứng dụng. Cách tôi muốn tiếp cận khi gỡ lỗi vấn đề này là như sau:

  1. Trong tab Bộ nhớ xem liệu kích thước được lưu trữ có không phát triển hay không. Nếu có sự tăng trưởng, điều này có thể cho thấy một số loại tài nguyên được lưu trong bộ nhớ cache bị rò rỉ. Kiểm tra giá trị của spark.cleaner.ttl là gì, nhưng tốt hơn hãy đảm bảo rằng bạn đã bỏ qua tất cả các tài nguyên khi chúng không cần nữa.
  2. Kiểm tra hình ảnh hóa DAG của các công việc đang chạy và xem liệu dòng truyền thừa có đang phát triển hay không. Nếu trường hợp này xảy ra, hãy đảm bảo thực hiện checkpointing để cắt giảm dòng truyền thừa.
  3. Giảm số lượng các lô được giữ lại trong giao diện người dùng (tham số spark.streaming.ui.retainedBatches).
  4. Thậm chí số lượng sự kiện là như nhau, hãy xem liệu lượng dữ liệu được xử lý theo tác vụ không tăng theo thời gian (tab Giai đoạn -> Cột đầu vào). Điều này có thể trỏ đến vấn đề cấp ứng dụng.

Tôi đã có các ứng dụng Spark Streaming tương đối phức tạp (Spark v1.6, v2.1.1, v2.2.0) chạy trong nhiều ngày mà không có bất kỳ sự xuống cấp nào về hiệu suất, vì vậy phải có một số vấn đề có thể giải quyết được.

+1

Đối với tôi thủ phạm là: 'Giảm số lượng các lô được giữ lại trong giao diện người dùng (tham số spark.streaming.ui.retainedBatches)' – Mohitt

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