8

Bài này là phần 2 của loạt bài Giám sát Apache Spark. Đây là một liên kết đến phần 1 . Trong bài đăng này, chúng tôi sẽ tìm hiểu sâu hơn về các số liệu cụ thể của Apache Spark và hiểu hành vi của họ. Cuối cùng, chúng tôi sẽ thảo luận về cách bạn có thể tự động hóa nhiệm vụ định cấu hình giám sát cho Spark và cung cấp khả năng hiển thị cho các mối quan tâm chính.

Các số liệu và mô hình hành vi chính của Spark

Khi bạn đã xác định và phân tích Spark và các thành phần ứng dụng và cơ sở hạ tầng liên quan mà bạn muốn theo dõi, bạn cần hiểu các số liệu mà bạn thực sự quan tâm về điều đó ảnh hưởng đến hiệu suất của ứng dụng cũng như cơ sở hạ tầng của bạn. Hãy tìm hiểu sâu hơn về một số điều bạn nên quan tâm theo dõi.

  1. Trong Spark, ai cũng biết rằng các vấn đề liên quan đến Bộ nhớ là điển hình nếu bạn không chú ý đến việc sử dụng bộ nhớ khi xây dựng ứng dụng của mình. Đảm bảo bạn theo dõi bộ sưu tập rác và bộ nhớ trên toàn bộ cụm trên từng thành phần, cụ thể là người thực thi và trình điều khiển. Quầy thu gom rác hoặc bất thường trong các mẫu có thể làm tăng áp lực trở lại.
  2. Các vấn đề về hiệu suất chủ yếu xuất hiện trong Shuffles . Mặc dù việc tránh xáo trộn và giảm lượng dữ liệu được di chuyển giữa các nút là tốt để có, nhưng điều này thường không thể tránh khỏi. Sẽ là khôn ngoan khi theo dõi các shuffle đọc và ghi byte trên mỗi bộ thực thi và trình điều khiển cũng như tổng số byte đầu vào. Như một quy tắc ngón tay cái, nhiều xáo trộn, hiệu suất thấp hơn.
  3. Theo dõi độ trễ của ứng dụng Spark của bạn. Đây là thời gian cần thiết để hoàn thành một công việc duy nhất trên cụm Spark của bạn.
  4. Đo thông lượng của ứng dụng Spark của bạn. Điều này cung cấp cho bạn số lượng hồ sơ đang được xử lý mỗi giây.
  5. Theo dõi số lượng Mô tả tệp đang mở. Việc xáo trộn đôi khi khiến quá nhiều phần mô tả tệp được mở dẫn đến trong quá nhiều tập tin mở ngoại lệ. Kiểm tra ulimit của bạn là tốt.
  6. Giám sát độ trễ lập lịch trong chế độ phát trực tuyến. Nó cho thời gian của người lập lịch để gửi công việc đến cụm.

Tại OpsClarity, chúng tôi hiểu sâu về Spark và thậm chí đã phát triển phần mềm của chúng tôi để xử lý tất cả các vấn đề đã nói ở trên và có một loạt cảnh báo về hiệu suất. Tại đây, chúng tôi đã sắp xếp một danh sách các số liệu bạn nên xem xét theo dõi và cảnh báo.

Spark Driver (một trình điều khiển cho mỗi ứng dụng) Spark Executor (nhiều người thi hành cho mỗi ứng dụng)
Quản lý khối

• Bộ nhớ sử dụng

• Bộ nhớ

Lập lịch biểu

• công việc tích cực

• tổng số công việc

Truyền phát

• Số người nhận

• # lô hoàn thành

• Số lô đang chạy

• # hồ sơ nhận được

• # hồ sơ được xử lý

• # lô chưa xử lý

• thời gian xử lý tin nhắn trung bình

Số khối RDD

Bộ nhớ được sử dụng

Bộ nhớ tối đa được phân bổ

Đĩa được sử dụng

Số nhiệm vụ đang hoạt động

Số nhiệm vụ thất bại

Số nhiệm vụ đã hoàn thành

Tổng thời lượng mà Executor đã chạy

Tổng số byte đầu vào

Tổng số xáo trộn đọc byte

Tổng số Shuffle Viết byte

 

Spark Master Công nhân Spark
Số công nhân sống trong cụm

# Ứng dụng đang chạy và chờ

Số ứng dụng đang chờ

Số công nhân được cung cấp trong cụm

Số lượng lõi miễn phí

Số lượng lõi được sử dụng

Số nhân viên điều hành hiện đang chạy

Bộ nhớ được sử dụng

Bộ nhớ miễn phí

 

HDFS YARN
Nút dữ liệu trực tiếp

Nút dữ liệu xuống

Đĩa HDFS%

Khối bị hỏng

Khối bị thiếu

Ký ức %

Mạng%

Tải CPU

TênNode Heap%

NameNode RPC

Quản lý ứng dụng

Ra mắt

Đăng ký

Trình quản lý nút

Nút hoạt động

Nút bị mất

Nút không lành mạnh

Hộp đựng

GB có sẵn

VCores có sẵn

Container đang chạy

Container không thành công

 

Làm cách nào để khắc phục sự cố trong Spark?

 Mặc dù bạn có thể gặp phải một số lỗi khi chạy Apache Spark, đây là một vài điều để bạn tự hỏi trong quá trình gỡ lỗi.

  1. Đường ống Spark có khỏe không? Có các thành phần bị ảnh hưởng có thể dẫn đến hiệu suất xuống cấp?
  2. Liệu cụm có đủ tài nguyên (lõi, bộ nhớ) có sẵn cho các công việc để chạy không?
  3. Làm thế nào tốt là dữ liệu song song? Có quá nhiều hoặc quá ít phân vùng?
  4. Ứng dụng tiêu thụ bao nhiêu bộ nhớ cho mỗi người thi hành?
  5. Mẫu thu gom rác trên người thi hành và người lái xe là gì? Quá nhiều GC tương quan với sự gia tăng tốc độ ăn vào có thể gây ra sự tàn phá cho những người thực thi
  6. Bạn đang sử dụng serializer phải không?
  7. Đã có sự gia tăng trong đọc / ghi shuffle?
  8. Thông lượng và độ trễ của ứng dụng của tôi là gì?
Spark Topology được phát hiện tự động cùng với sức khỏe của từng thành phần được phủ lên trên

Giao diện người dùng Spark cung cấp chi tiết về một công việc duy nhất có chiều sâu bằng cách chia nhỏ nó thành các giai đoạn và nhiệm vụ. Tuy nhiên, nếu bạn cần một công cụ giám sát sẵn sàng sản xuất để có cái nhìn tổng hợp về cách thức hoạt động của cụm và hiểu cách cơ sở hạ tầng động như Spark với các thành phần chuyển động khác nhau ảnh hưởng đến tính khả dụng và hiệu suất, bạn cần một công cụ giám sát hoàn chỉnh hơn. Hiểu những gì quan trọng cần được cảnh báo và không, có thể giúp bạn tập trung vào những thứ quan trọng và tăng sự nhanh nhẹn của bạn khi xây dựng các ứng dụng trên Spark.

 

Điều quan trọng là phải có một phần mềm (như OpsClarity) cho phép kết nối các thành phần, chẳng hạn như dịch vụ Hadoop và hệ thống nhắn tin như Kafka.

|