2015-04-28 15 views
7

Apache Flink so sánh với Mapreduce trên Hadoop như thế nào? Theo cách nào thì tốt hơn và tại sao?Apache Flink so sánh với Mapreduce trên Hadoop như thế nào?

+0

Thẻ bắt đầu bằng # không thực sự được sử dụng trong các câu hỏi SO, tôi khuyên bạn chỉ nên đặt câu hỏi và thêm các thẻ thích hợp. –

+1

Cảm ơn bạn Angelo! – Shu

Trả lời

12

Tuyên bố từ chối trách nhiệm: Tôi là người cam kết và thành viên PMC của Apache Flink.

Tương tự như Hadoop MapReduce, Apache Flink là bộ xử lý dữ liệu song song với API và công cụ thực thi riêng. Flink nhằm hỗ trợ nhiều trường hợp sử dụng mà Hadoop đang được sử dụng và phát độc đáo với nhiều hệ thống từ hệ sinh thái Hadoop bao gồm HDFS và YARN.

Tôi sẽ trả lời câu hỏi của bạn bằng cách phân biệt giữa mô hình lập trình MapReduce và mô hình thực thi MapReduce.

trình Mẫu

mô hình lập trình Apache Flink được dựa trên khái niệm về mô hình lập trình MapReduce nhưng khái quát nó bằng nhiều cách. Flink cung cấp chức năng Map và Reduce nhưng cũng có các phép biến đổi bổ sung như Join, CoGroup, Filter và Iterations. Các phép biến đổi này có thể được lắp ráp trong các luồng dữ liệu tùy ý bao gồm nhiều nguồn, các lưu lượng, phân nhánh và các luồng hợp nhất. Mô hình dữ liệu của Flink là tổng quát hơn mô hình cặp khóa-giá trị của MapReduce và cho phép sử dụng bất kỳ kiểu dữ liệu Java (hoặc Scala) nào. Các phím có thể được xác định trên các kiểu dữ liệu này một cách linh hoạt.

Do đó, mô hình lập trình của Flink là một tập hợp siêu của mô hình lập trình MapReduce. Nó cho phép xác định nhiều chương trình một cách thuận tiện hơn và súc tích hơn nhiều. Tôi cũng muốn chỉ ra rằng có thể nhúng các hàm Hadoop chưa sửa đổi (Input/OutputFormats, Mapper, Reducers) trong các chương trình Flink và thực hiện chúng cùng với các hàm Flink gốc.

Thực hiện mẫu

Nhìn vào mô hình thực hiện, Flink vay mượn rất nhiều khái niệm từ các hệ thống cơ sở dữ liệu quan hệ song song. Flink có mô hình xử lý pipelined làm giảm nhu cầu thực hiện các kết quả trung gian trên các hệ thống tập tin cục bộ hoặc phân tán (ngoài ra nó cũng cho phép Flink thực hiện xử lý luồng theo thời gian thực). Hơn nữa, việc thực hiện chương trình Flink không được kết hợp chặt chẽ với đặc tả của chương trình. Trong MapReduce (được thực hiện bởi Apache Hadoop), việc thực thi của mỗi chương trình MapReduce tuân theo chính xác cùng một mẫu. Các chương trình Flink được trao cho một trình tối ưu hóa để tìm ra một kế hoạch thực hiện hiệu quả. Tương tự như DBMS quan hệ, trình tối ưu hóa chọn các chiến lược vận chuyển và tham gia dữ liệu theo cách mà các hoạt động tốn kém như việc xáo trộn dữ liệu và phân loại đều tránh được. Tôi nên chỉ ra rằng Flink chưa được thử nghiệm ở quy mô lớn mà Hadoop đang chạy. Tôi biết các thiết lập Flink chạy trên tối đa 200 nút.

3

Thêm vào Fabian của câu trả lời:

Một sự khác biệt nữa là Flink không phải là một hệ thống hàng loạt chế biến tinh khiết, nhưng có thể ở cùng một thời gian để phân tích trực tuyến độ trễ thấp và cung cấp một API tốt đẹp để xác định luồng chương trình phân tích .

Nội bộ, Flink thực sự là hệ thống phát trực tiếp. Để Flink, các chương trình hàng loạt là một trường hợp đặc biệt của các chương trình phát trực tuyến.

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