flume+kafka整合採集數據案例

一、flume簡介

1.1.1 概述

  1. Flume是一個分佈式、可靠、和高可用的海量日誌採集、聚合和傳輸的系統。
  2. Flume可以採集文件,socket數據包、文件、文件夾、kafka等各種形式源數據,又可以將採集到的數據(下沉sink)輸出到HDFS、hbase、hive、kafka等衆多外部存儲系統中
  3. 一般的採集需求,通過對flume的簡單配置即可實現
  4. Flume針對特殊場景也具備良好的自定義擴展能力,

因此,flume可以適用於大部分的日常數據採集場景

 

1.1.2 運行機制

  1. Flume分佈式系統中最核心的角色是agent,flume採集系統就是由一個個agent所連接起來形成
  2. 每一個agent相當於一個數據傳遞員,內部有三個組件:
      1. Source:採集組件,用於跟數據源對接,以獲取數據
      2. Sink:下沉組件,用於往下一級agent傳遞數據或者往最終存儲系統傳遞數據
      3. Channel:傳輸通道組件,用於從source將數據傳遞到sink

1.1.3 Flume採集系統結構圖

1. 簡單結構

單個agent採集數據

 

2. 複雜結構

多級agent之間串聯

 

二、kafka簡介

2.1、簡介

kafka是最初由linkedin公司開發的,使用scala語言編寫,kafka是一個分佈式,分區的,多副本的,多訂閱者的日志系統(分佈式MQ系統),可以用於搜索日誌,監控日誌,訪問日誌等。

2.2、支持的語言

kafka目前支持多種客戶端的語言:javapythonc++php

2.3、apache kafka是一個分佈式發佈-訂閱消息系統

apache kafka是一個分佈式發佈-訂閱消息系統和一個強大的隊列,可以處理大量的數據,並使能夠將消息從一個端點傳遞到另一個端點,kafka適合離線和在線消息消費。kafka消息保留在磁盤上,並在集羣內複製以防止數據丟失。kafka構建在zookeeper同步服務之上。它與apachespark非常好的集成,應用於實時流式數據分析。

2.4、其他的消息隊列

RabbitMQ

Redis

ZeroMQ

ActiveMQ

2.5kafka的好處

可靠性:分佈式的,分區,複製和容錯的。

可擴展性:kafka消息傳遞系統輕鬆縮放,無需停機。

耐用性:kafka使用分佈式提交日誌,這意味着消息會盡可能快速的保存在磁盤上,因此它是持久的。

性能:kafka對於發佈和定於消息都具有高吞吐量。即使存儲了許多TB的消息,他也爆出穩定的能。

kafka非常快:保證零停機和零數據丟失。

 

三、數據採集案例

3.1 整體數據流程

使用flume監控源頭文件夾下的文件,當有新的文件時,自動採集文件數據到kafka。

3.2 flume的採集配置文件

#爲我們的source channel  sink起名

a1.sources = r1

a1.channels = c1

a1.sinks = k1

#指定我們的source收集到的數據發送到哪個管道

a1.sources.r1.channels = c1

#指定我們的source數據收集策略

a1.sources.r1.type = spooldir

a1.sources.r1.spoolDir = /export/servers/flumedata

a1.sources.r1.deletePolicy = never

a1.sources.r1.fileSuffix = .COMPLETED

a1.sources.r1.ignorePattern = ^(.)*\\.tmp$

a1.sources.r1.inputCharset = GBK

#指定我們的channel爲memory,即表示所有的數據都裝進memory當中

a1.channels.c1.type = memory

#指定我們的sink爲kafka  sink,並指定我們的sink從哪個channel當中讀取數據

a1.sinks.k1.channel = c1

a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink

a1.sinks.k1.kafka.topic = test

a1.sinks.k1.kafka.bootstrap.servers = node01:9092,node02:9092,node03:9092

a1.sinks.k1.kafka.flumeBatchSize = 20

a1.sinks.k1.kafka.producer.acks = 1

3,4 採集結果圖

採集完成後,源頭文件會自動加上completed後綴

flume日誌圖

kafka消費端接收到的數據

 

四、總結

主要核心就是flume採集配置文件的開發,配置好source.channel.sink三個組件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章