centos上安裝flume及案例演示

環境準備:

1、1臺centos系統機器

2、jdk安裝包

3、flume安裝包

步驟:

1、flume安裝的前提是先安裝了JDK

如下:

centos7.2使用rpm安裝jdk8

①下載jdk

到官網下載:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

我下載的這個版本:

Linux x64 56.52 MB   jdk-8u221-linux-x64-demos.rpm

 

②安裝jdk

rpm -ivh 	jdk-8u221-linux-x64-demos.rpm

③配置環境變量(告訴電腦jdk在哪裏)

vim /etc/profile //打開環境變量文件

進入insert模式(按字母i) 在最後面加上下面這段,然後按esc 然後保存退出(按 :wq回車)

PS:FLUME_HOME和PATH裏面關於FLUME的路徑是安裝完FLUME後加上的。


JAVA_HOME=/usr/java/jdk1.8.0_221-amd64
CLASSPATH=%JAVA_HOME%/lib:%JAVA_HOME%/jre/lib
FLUME_HOME=/opt/flume-1.8.0
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$FLUME_HOME/bin
source /etc/profile //重新載入

 

④檢查是否完成安裝

java -version

 


rmp卸載jdk

rpm -qa|grep jdk   //查看版本
rpm -e  jdk版本 //卸載

2、安裝flume

①首先去官網下載http://flume.apache.org/download.html

選擇apache-flume-1.8.0-bin.tar.gz

解壓並安裝

  • 解壓tar -zxvf apache-flume-1.8.0-bin.tar.gz
  • 安裝:mv apache-flume-1.8.0-bin /opt/flume-1.8.0(放到想要安裝的目錄下,目錄名保存爲flume-1.8.0,如/opt)

到這裏已經安裝完成了吧!!!記得去上面PS增加java裏flume的配置(紅色文字)

下面是一個案例,我們在一臺機器上來做測試就可以了!!!

案例來了

我們去到/opt/flume-1.8.0/conf  目錄下新建一個example.conf來測試(vi example.conf),當然也可以直接在flume.conf中寫測試配置,我們這裏用新建example.conf,裏面填寫要測試的內容:

#配置agent
agent1.sources=source1
agent1.channels=channel1
agent1.sinks=sink1

#配置source1

agent1.sources.source1.type=spooldir

#指定監控的目錄,監控/home/hadoop/logs,如果監控的文件夾有更新,那麼就同步數據文件到/home/hadoop/logs/fileRoll文件夾中
agent1.sources.source1.spoolDir=/home/hadoop/logs
agent1.sources.source1.channels=channel1
agent1.sources.source1.fileHeader=false
agent1.sources.source1.interceptors=i1
agent1.sources.source1.interceptors.i1.type=timestamp

#配置sink1
agent1.sinks.sink1.type=file_roll
#配置sink類型爲追加文件
agent1.sinks.sink1.channel=channel1
#配置作用於哪個channel
agent1.sinks.sink1.sink.directory=/home/hadoop/logs/fileRoll


#配置channel1
agent1.channels.channel1.type=file
#channel存放數據的備份目錄
agent1.channels.channel1.checkpointDir=/home/hadoop/channel_data.backup
#channel數據存放目錄
agent1.channels.channel1.dataDirs=/home/hadoop/channel_data

 

寫完這個文件後保存,接着就是啓動了!

bin/flume-ng agent -n agent1 -c conf -f conf/example.conf -Dflume.root.logger=DEBUG,console

啓動時如果沒有報錯的話, 我們就再啓動一個xshell命令框,也是登陸到同樣的服務器。

我們可以先查看下/home/hadoop/logs目錄下有無文件,只有一個fileRoll,

我們在這個目錄下(/home/hadoop/logs)新增一個有測試內容的文件:echo "Abby test">1.txt

回車後我們會在fileRoll文件下產生一些文件,其中大小不爲0的文件中,查看內容,cat 1563498683527-8 

就可以看到我們剛纔寫的:Abby test

成功啦!!!

以上是操作

我是分割線——————————————————————————————————————————————————————

下面是理論

一.Apache Flume

1.概述

Flume是Cloudera提供的一個高可用的,高可靠的,分佈式的海量日誌採集聚合和傳輸的軟件。

Flume的核心是把數據從數據源(source)收集過來,再將收集到的數據送到指定的目的地(sink),爲了保證傳輸過程一定成功,在送到目的地(sink)之前,會先緩存(channel),待數據真正到達目的地(sink)之後,Flume再刪除自己緩存的數據。

Flume支持定製各類數據發送方,用於收集各類型數據;同時,Flume支持定製各種數據接受方,用於最終存儲數據。一般的採集需求,通過對Flume的簡單配置即可實現。針對特殊場景也具備良好的自定義擴展能力。因此,Flume可以適應大部分的日常數據採集情景。

 

當前Flume有兩個版本,Flume 0.9X版本的統稱爲Flume OG,而1.X版本統稱爲Flume NG,後來Flume納入Apache旗下,Cloudera Flume改名爲Apache Flume。

2.運行機制

Flume系統中核心的角色是agent,agent本身是一個Java進程,一般運行在日誌收集節點

每一個agent相當於一個數據傳輸員 ,內部有三個組件:

source:採集源,用於和數據源對接,以獲取數據,Source是數據的收集端,負責將數據捕獲後進行特殊的格式化,將數據封裝到事件(event) 裏,然後將事件推入Channel中。 Flume提供了很多內置的Source, 支持 Avro, log4j, syslog 和 http post(body爲json格式)。可以讓應用程序同已有的Source直接打交道,如AvroSource,SyslogTcpSource。 如果內置的Source無法滿足需要, Flume還支持自定義Source。;

sink:Sink從Channel中取出事件,然後將數據發到別處,可以向文件系統、數據庫、 hadoop存數據, 也可以是其他agent的Source。在日誌數據較少時,可以將數據存儲在文件系統中,並且設定一定的時間間隔保存數據。

channel:Channel是連接Source和Sink的組件,大家可以將它看做一個數據的緩衝區(數據隊列),它可以將事件暫存到內存中也可以持久化到本地磁盤上, 直到Sink處理完該事件。介紹兩個較爲常用的Channel, MemoryChannel和FileChannel。;

在整個數據的傳輸的過程中,流動的是event,它是Flume內部傳輸的基本單位,它將傳輸的數據進行封裝,如果是文本文件,通常是一行記錄,本身爲一個字節數組,並且可以攜帶headers(頭信息)。event代表着一個數據的最小完整單元,

 向外部數據源來,向外部目的地去.

3.Flume採集系統結構圖

1)簡單結構

2)複雜結構


--------------------- 
 

參考文章:

https://segmentfault.com/a/1190000011881177

https://blog.csdn.net/qq_39327985/article/details/85246214

https://blog.csdn.net/budingningmeng/article/details/96313734

還有網易雲課堂上的科多大數據視頻

 

 

 

 

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