Apache Flink - Thư viện

Trong chương này, chúng ta sẽ tìm hiểu về các thư viện khác nhau của Apache Flink.

Xử lý sự kiện phức tạp (CEP)

FlinkCEP là một API trong Apache Flink, phân tích các mẫu sự kiện trên dữ liệu phát trực tuyến liên tục. Những sự kiện này gần thời gian thực, có thông lượng cao và độ trễ thấp. API này được sử dụng chủ yếu trên dữ liệu Cảm biến, theo thời gian thực và rất phức tạp để xử lý.

CEP phân tích mô hình của luồng đầu vào và đưa ra kết quả rất sớm. Nó có khả năng cung cấp thông báo và cảnh báo thời gian thực trong trường hợp mẫu sự kiện phức tạp. FlinkCEP có thể kết nối với các loại nguồn đầu vào khác nhau và phân tích các mẫu trong đó.

Đây là cách kiến ​​trúc mẫu với CEP trông như thế này -

Dữ liệu cảm biến sẽ đến từ các nguồn khác nhau, Kafka sẽ hoạt động như một khung nhắn tin phân tán, sẽ phân phối các luồng tới Apache Flink và FlinkCEP sẽ phân tích các mẫu sự kiện phức tạp.

Bạn có thể viết chương trình trong Apache Flink để xử lý sự kiện phức tạp bằng cách sử dụng API mẫu. Nó cho phép bạn quyết định các mẫu sự kiện để phát hiện từ dữ liệu luồng liên tục. Dưới đây là một số mẫu CEP được sử dụng phổ biến nhất -

Bắt đầu

Nó được sử dụng để xác định trạng thái bắt đầu. Chương trình sau đây cho biết cách nó được định nghĩa trong chương trình Flink:

Pattern<Event, ?> next = start.next("next");

Ở đâu

Nó được sử dụng để xác định một điều kiện lọc trong trạng thái hiện tại.

patternState.where(new FilterFunction <Event>() {  
   @Override 
      public boolean filter(Event value) throws Exception { 
   } 
});

Kế tiếp

Nó được sử dụng để thêm một trạng thái mẫu mới và sự kiện đối sánh cần thiết để vượt qua mẫu trước đó.

Pattern<Event, ?> next = start.next("next");

Theo dõi bởi

Nó được sử dụng để thêm một trạng thái mẫu mới nhưng ở đây các sự kiện khác có thể xảy ra b / w hai sự kiện khớp.

Pattern<Event, ?> followedBy = start.followedBy("next");

Gelly

API đồ thị của Apache Flink là Gelly. Gelly được sử dụng để thực hiện phân tích đồ thị trên các ứng dụng Flink bằng cách sử dụng một tập hợp các phương pháp và tiện ích. Bạn có thể phân tích các biểu đồ khổng lồ bằng Apache Flink API theo cách phân tán với Gelly. Có những thư viện đồ thị khác cũng giống như Apache Giraph cho cùng mục đích, nhưng vì Gelly được sử dụng trên Apache Flink nên nó sử dụng một API duy nhất. Điều này rất hữu ích từ quan điểm phát triển và vận hành.

Hãy để chúng tôi chạy một ví dụ sử dụng Apache Flink API - Gelly.

Đầu tiên, bạn cần sao chép 2 tệp jar Gelly từ thư mục opt của Apache Flink vào thư mục lib của nó. Sau đó, chạy flink-gelly-wallet jar.

cp opt/flink-gelly* lib/ 
./bin/flink run examples/gelly/flink-gelly-examples_*.jar

Bây giờ chúng ta hãy chạy ví dụ về Xếp hạng trang.

PageRank tính điểm trên mỗi đỉnh, là tổng điểm của PageRank được truyền qua các cạnh. Điểm của mỗi đỉnh được chia đều cho các cạnh ngoài. Các đỉnh có điểm cao được liên kết với các đỉnh có điểm cao khác.

Kết quả chứa ID đỉnh và điểm Xếp hạng trang.

usage: flink run examples/flink-gelly-examples_<version>.jar --algorithm PageRank [algorithm options] --input <input> [input options] --output <output> [output options] 

./bin/flink run examples/gelly/flink-gelly-examples_*.jar --algorithm PageRank --input CycleGraph --vertex_count 2 --output Print