溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

大數(shù)據(jù)流處理中Flume、Kafka和NiFi的對(duì)比是怎樣的

發(fā)布時(shí)間:2021-12-15 16:08:58 來(lái)源:億速云 閱讀:376 作者:柒染 欄目:大數(shù)據(jù)

今天就跟大家聊聊有關(guān)大數(shù)據(jù)流處理中Flume、Kafka和NiFi的對(duì)比是怎樣的,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

我們將簡(jiǎn)要介紹三種Apache處理工具:Flume、Kafka和Nifi。這三款產(chǎn)品性能優(yōu)異,可橫向伸縮,并提供插件機(jī)制,可通過(guò)定制組件進(jìn)行擴(kuò)展。

Apache Flume

Flume部署由一個(gè)或多個(gè)使用拓?fù)渑渲玫拇斫M成。Flume代理是一個(gè)JVM進(jìn)程,它承載Flume拓?fù)涞幕緲?gòu)建塊,即源、通道和接收器。Flume客戶機(jī)將事件發(fā)送到源,然后將它們成批地放在名為channel的臨時(shí)緩沖區(qū)中,數(shù)據(jù)從該緩沖區(qū)流向連接到數(shù)據(jù)最終目的地的接收器。接收器也可以是其他Flume代理程序的后續(xù)數(shù)據(jù)源。代理可以鏈接,并且每個(gè)代理都有多個(gè)源、通道和接收器。

Flume是一個(gè)分布式系統(tǒng),可用于收集、聚合流事件并將其傳輸?shù)紿adoop中。它有許多內(nèi)置的源、通道和接收器,例如Kafka通道和Avro接收器。Flume是基于配置的,它有攔截器來(lái)對(duì)通道中的數(shù)據(jù)執(zhí)行簡(jiǎn)單的轉(zhuǎn)換。

如果不小心,使用Flume很容易丟失數(shù)據(jù)。例如,為高吞吐量選擇內(nèi)存通道有一個(gè)缺點(diǎn),即當(dāng)代理節(jié)點(diǎn)關(guān)閉時(shí),數(shù)據(jù)將丟失。文件通道將以增加延遲為代價(jià)提供持久性。即使如此,由于數(shù)據(jù)沒(méi)有復(fù)制到其他節(jié)點(diǎn),因此文件通道僅與底層磁盤(pán)一樣的可靠性。Flume通過(guò)多跳/扇入扇出流提供了可伸縮性。對(duì)于高可用性(HA),可以水平擴(kuò)展代理。

Apache Kafka

Kafka是一種分布式高吞吐量消息總線,可將數(shù)據(jù)生成者與消費(fèi)者分開(kāi)。消息按主題組織,主題分為多個(gè)分區(qū),分區(qū)在群集中的節(jié)點(diǎn)之間復(fù)制(稱(chēng)為代理)。與Flume相比,Kafka具有更好的可擴(kuò)展性和消息持久性。 Kafka現(xiàn)在有兩種樣式:一種是“經(jīng)典”生產(chǎn)者/消費(fèi)者模型,另一種是新的Kafka-Connect,它為外部數(shù)據(jù)存儲(chǔ)提供可配置的連接器(源/接收器)。

kafka可以用于大型軟件系統(tǒng)組件之間的事件處理和集成,此外,kafka附帶kafka流,它可以用于簡(jiǎn)單的流處理,而不需要單獨(dú)的集群,如apache spark或apacheFlink。

由于消息被持久化在磁盤(pán)上,并且在集群中被復(fù)制,因此數(shù)據(jù)丟失情況不像Flume那樣常見(jiàn)。也就是說(shuō),無(wú)論是使用Kafka客戶端還是通過(guò)Connect API,生產(chǎn)者/來(lái)源和消費(fèi)者/接收器通常都需要自定義編碼。與Flume一樣,消息大小也有限制。最后,為了能夠進(jìn)行通信,Kafka的生產(chǎn)者和消費(fèi)者必須就協(xié)議、格式和架構(gòu)達(dá)成一致,這在某些情況下可能會(huì)有問(wèn)題。

Apache NiFi

與Flume和Kafka不同,NIFI可以處理任何大小的消息。在基于Web的拖放用戶界面后面,NIFI在集群中運(yùn)行,并提供實(shí)時(shí)控制,以便您可以輕松地管理任何源和任何目標(biāo)之間的數(shù)據(jù)移動(dòng)。它支持不同格式、模式、協(xié)議、速度和大小的分散和分布式源。

NiFi可以用于具有嚴(yán)格安全性和合規(guī)性要求的關(guān)鍵任務(wù)數(shù)據(jù)流中,在那里我們可以可視化整個(gè)過(guò)程并實(shí)時(shí)進(jìn)行更改。在撰寫(xiě)本文時(shí),它有近200個(gè)隨時(shí)可用的處理器(包括Flume和Kafka處理器),可以進(jìn)行拖放、配置和立即投入使用。NiFi的一些關(guān)鍵特性是優(yōu)先級(jí)排隊(duì)、數(shù)據(jù)跟蹤和每個(gè)連接的背壓閾值配置。

雖然NiFi用于創(chuàng)建容錯(cuò)生產(chǎn)管道,但它不會(huì)復(fù)制像Kafka這樣的數(shù)據(jù)。如果節(jié)點(diǎn)發(fā)生故障,則可以將流定向到另一個(gè)節(jié)點(diǎn),但排隊(duì)等待故障節(jié)點(diǎn)的數(shù)據(jù)必須等待節(jié)點(diǎn)恢復(fù)。 NiFi不是一個(gè)成熟的ETL工具,不適合復(fù)雜的計(jì)算和事件處理(CEP)。要做到這一點(diǎn),它應(yīng)該連接到流式框架,如Apache Flink,Spark Streaming或Storm。

組合

沒(méi)有工具符合您的所有要求。組合以更好的方式執(zhí)行不同操作的工具可以增強(qiáng)功能并增加處理更多場(chǎng)景的靈活性。根據(jù)您的需求,NiFi和Flume可以充當(dāng)Kafka生產(chǎn)商或消費(fèi)者。

Flume-Kafka集成非常受歡迎,它有自己的名字:Flafka(我不是這樣做的)。Flafka包括Kafka源,Kafka通道和Kafka池。結(jié)合Flume和Kafka,Kafka可以避免自定義編碼并利用Flume經(jīng)過(guò)實(shí)戰(zhàn)考驗(yàn)的資源和接收器,通過(guò)Kafka通道的Flume事件將在Kafka代理中進(jìn)行存儲(chǔ)和復(fù)制,以實(shí)現(xiàn)彈性。

組合工具可能看起來(lái)很浪費(fèi),因?yàn)樗坪踉诠δ苌现丿B。例如,NiFi和Kafka都提供代理商來(lái)連接生產(chǎn)者和消費(fèi)者。但是,它們的表現(xiàn)不同:在NiFi中,大多數(shù)數(shù)據(jù)流邏輯不在生產(chǎn)者/消費(fèi)者中,而是在代理中,允許集中控制。 NiFi是為了做一件重要的事情而構(gòu)建的:數(shù)據(jù)流管理。通過(guò)兩種工具的結(jié)合,NiFi可以充分利用Kafka可靠的流數(shù)據(jù)存儲(chǔ),同時(shí)解決Kafka無(wú)法解決的數(shù)據(jù)流挑戰(zhàn)。

看完上述內(nèi)容,你們對(duì)大數(shù)據(jù)流處理中Flume、Kafka和NiFi的對(duì)比是怎樣的有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI