Thực hiện DAG (biểu đồ tuần hoàn theo hướng) của dữ liệu lớn là phổ biến. Tôi tự hỏi làm thế nào Apache Flink thực hiện các Iterations. Bởi vì nó có thể là một biểu đồ tuần hoàn.Apache Flink triển khai lặp lại như thế nào?
Trả lời
Nếu Flink thực hiện chương trình lặp lại, biểu đồ dữ liệu không phải là DAG nhưng cho phép chu kỳ. Tuy nhiên, chu trình này không tùy ý và phải tuân theo một mẫu nhất định để cho phép Flink kiểm soát luồng tuần hoàn này để mở rộng.
Thường không có lý do kỹ thuật nghiêm ngặt trong các hệ thống khác không hỗ trợ chu kỳ. Việc cho phép các chu trình theo cách tổng quát thường bị cấm bởi vì nó có thể dẫn đến một vòng lặp vô hạn (tức là, một tuple quay vòng chu kỳ mãi mãi và chương trình không hạn chế).
Flink theo dõi chu trình bằng cách đếm số lần lặp lại. Bằng cách này, Flink có thể theo dõi bộ dữ liệu nào thuộc về sự lặp lại nào và ví dụ có thể tránh các bộ dữ liệu đó từ các bộ dữ liệu "tiếp nhận" lặp mới từ cũ hơn một lần. Hơn nữa, nó cho phép Flink phát hiện nếu kết quả của việc lặp lại n
và n+1
bằng nhau hay không. Một kết quả bằng nhau cho thấy một phép tính đã hoàn thành cho phép Flink phá vỡ vòng lặp vô hạn và kết thúc (điều này giữ cho các lần lặp lại được gọi là sửa lỗi).
Đối với một cái nhìn chi tiết đọc tại bài nghiên cứu này: https://dl.acm.org/citation.cfm?id=2350245
Việc sử dụng lặp đi lặp lại trong chương trình của bạn được mô tả ở đây: https://ci.apache.org/projects/flink/flink-docs-release-0.10/apis/programming_guide.html#iteration-operators
- 1. zipWithIndex trên Apache Flink
- 2. Apache Flink vs Twitter Heron?
- 3. Chức năng JoinFunction và CoGroupFunction của Apache Flink khác nhau như thế nào?
- 4. Apache Flink so sánh với Mapreduce trên Hadoop như thế nào?
- 5. GMail triển khai Comet như thế nào?
- 6. OpenID được triển khai như thế nào?
- 7. HttpSession được triển khai như thế nào?
- 8. Mức độ song song trong Apache Flink
- 9. Các tham chiếu yếu được triển khai như thế nào?
- 10. ESB nên được đóng gói/triển khai như thế nào?
- 11. Bạn sẽ triển khai vòng lặp sự kiện cơ bản như thế nào?
- 12. Kênh Go được triển khai như thế nào?
- 13. Triển khai Django trên máy chủ apache
- 14. IO không chặn được triển khai như thế nào?
- 15. Triển khai Django với Gunicorn và APACHE
- 16. "Gọi lại" trong C là gì và chúng được triển khai như thế nào?
- 17. Lỗi liên kết khi chạy công việc Apache Flink
- 18. GetHashCode() được triển khai cho Int32 như thế nào?
- 19. Facebook Chat Heads được triển khai như thế nào?
- 20. Phạm vi Lexical được triển khai như thế nào?
- 21. Atan2 được triển khai bằng .NET như thế nào?
- 22. C# Generics được triển khai như thế nào?
- 23. Các khối try/catch được triển khai như thế nào?
- 24. LLVM isa <> được triển khai như thế nào?
- 25. Triển khai Django: Bạn làm như thế nào?
- 26. Chuỗi string.find được triển khai như thế nào trong CPython?
- 27. Thuộc tính phụ thuộc được triển khai như thế nào?
- 28. Perl -i * thực sự * được triển khai như thế nào?
- 29. Máy tính Google được triển khai như thế nào?
- 30. Các mảng được triển khai trong Perl như thế nào?
Về mặt kỹ thuật, Flink không gán một quầy lặp cho mỗi tuple. Thay vào đó, nó thực thi mỗi lần lặp và sau đó đợi cho đến khi tất cả các phần tử đã được xử lý cho lần lặp này. Chỉ khi đó, lần lặp tiếp theo được khởi động. –
Đã cập nhật câu trả lời của tôi. Downvote là khá khó khăn ... :) –