1. 程式人生 > >專案中為什麼通常flume和kafka要共同使用

專案中為什麼通常flume和kafka要共同使用

系統架構方面的考慮: (1)如果系統比較簡單,應用場景比較單一,從簡化系統的角度考慮,在滿足應用需求的情況下可能只使用一個比較好。 (2)但是考慮到現有系統業務發展,為了後面的靈活擴充套件,在先用系統設計時留有一定的擴充套件性感覺更重要, (3)可能使用Flume+kafka架構相對只使用Kafka會多佔用1-2臺機器做Flume日誌採集,但是為了方便以後日誌資料處理方式的擴充套件,可以採用Flume+kafka架構。

原理方面的考慮: 個人覺得原理不同,側重點不同 Flume :管道流方式,提供了很多的預設實現,讓使用者通過引數部署,及擴充套件API. Kafka :一個可持久化的分散式的訊息佇列。

(1)Kafka 是一個非常通用的系統。你可以有許多生產者和很多的消費者共享多個主題Topics。相比之下,Flume是一個專用工具被設計為旨在往HDFS,HBase傳送資料。它對HDFS有特殊的優化,並且集成了Hadoop的安全特性。如果資料被多個系統消費的話,使用kafka;如果資料被設計給Hadoop使用,使用Flume。 (2)Flume可以使用攔截器實時處理資料。這些對資料遮蔽或者過量是很有用的。Kafka需要外部的流處理系統才能做到。 (3)Kafka和Flume都是可靠的系統,通過適當的配置能保證零資料丟失。然而,Flume不支援副本事件。於是,如果Flume代理的一個節點奔潰了,即使使用了可靠的檔案管道方式,你也將丟失這些事件直到你恢復這些磁碟。如果你需要一個高可靠行的管道,那麼使用Kafka是個更好的選擇。