Flume和Kafka的區別與聯絡

2021-09-12 02:37:02 字數 1976 閱讀 9029

目錄

區別點一:

區別點二:

同樣是流式資料採集框架,

flume一般用於日誌採集,可以定製很多資料來源,減少開發量,基本架構是乙個flume程序agent(source、***、選擇器、channel、sink),其中傳遞的是原子性的event資料;

使用雙層flume架構可以實現一層資料採集,一層資料集合;

flume的概念、基本架構

kafka一般用於日誌快取,是乙個可持久的分布式訊息佇列,自帶儲存,提供push和pull兩種儲存資料功能;包括producer、kafkacluster(broker:topic、partition)、consumer,依賴於zookeeper(brokerid、topic、partition元資料存在znode,partition選舉leader依賴zookeeper);

kafka的概念、基本架構

flume和kafka的側重點不同,

而flume追求的是資料和資料來源、資料流向的多樣性,適合多個生產者的場景;flume有自己內建的多種source和sink元件,具體操作方式是編寫source、channel和sink的.conf配置檔案,開啟flume元件的時候用命令關聯讀取配置檔案實現;

# 開啟flume的指令碼部分:

$flume_home/bin/flume-ng

agent

-c $flume_home/conf

-f $job_home/flume-hdfs.conf

-n agent-hdfs

-dflume.root.logger=info,

console >$flume_home/logs/flume-hdfs.log 2>&1 &

-c:flume啟動讀取的配置檔案flume-env.sh(指定jdk路徑)儲存在/conf目錄中

-f:編寫好source、interceptor、selector、channel和sink的配置檔案flume-hdfs.conf的儲存目錄

-n:表示給flume-hdfs.conf中的agent起名為agent-hdfs

--------------------以下可不寫-------------------

-d:表示flume執行時動態修改flume.root.logger引數屬性值,並將控制台日誌列印級別設定為info級別。日誌級別包括:log、info、warn、error,僅為debug使用,生產環境一般不用

console:列印日誌傳送路徑

kafka追求的是高吞吐,高負載,同一topic下可以有多個partition,由於是pull模式拉取資料,因此適合多個消費者的場景;kafka沒有內建的producer和consumer元件,需要自己編寫**。

flume和kafka的定位有所不同:

1. flume

cloudera公司研發,適合多個生產者;

適合下游資料消費者不多的情況;(乙個消費者開乙個channel)

適合資料安全性要求不高的操作;(資料沒有備份、沒有副本)

適合與hadoop生態圈對接的操作。(hdfs、hbase等)

適合生產和收集資料

2. kafka

linkedin公司研發,適合多個消費者;

適合資料下游消費眾多的情況;(kafka從磁碟讀,並且只找leader讀)

適合資料安全性要求較高的操作,支援replication(多副本)。

適合消費資料

因此工作中常用的一種模型是:

線上資料 --> flume --> kafka --> hdfs --> hive/mr計算

--> sparkstreaming計算

也有kafka與springboot組合,採集資料後交給sparkstreaming進行流式計算

Kafka與flume的整合

為我們的source channel sink起名 a1.sources r1 a1.channels c1 a1.sinks k1 指定我們的source收集到的資料傳送到哪個管道 a1.sources r1.channels c1 指定我們的source資料收集策略 a1.sources r1....

kafka和flume的對比

摘要 1 kafka和flume都是日誌系統。kafka是分布式訊息中介軟體,自帶儲存,提供push和pull訪問資料功能。flume分為agent 資料採集器 collector 資料簡單處理和寫入 storage 儲存器 三部分,每一部分都是可以定製的。比如agent採用 rpc thrift ...

資料收集之flume與kafka

flume是實時日誌收集系統,管道流方式,提供了很多的預設實現。kafka是可持久化的分布式訊息佇列。kafka 是乙個通用的系統,可以有許多生產者和消費者共享多個主題。相比之下,flume是乙個專用工具,被設計為旨在往hdfs,hbase傳送資料。如果資料被多個系統消費,使用kafka 如果資料被...