寫在前面
在學習一門新的技術以前,咱們得知道了解這個東西有什麼用?咱們可使用它來作些什麼呢?簡單來講,flume是大數據日誌分析中不能缺乏的一個組件,既可使用在流處理中,也可使用在數據的批處理中。
1.流處理:
2.離線批處理:
分析:無論你是數據的實時流處理,仍是數據的離線批處理,都是會使用flume這個日誌收集框架來作日誌的收集。所以,學習這個這個組件是很重要的。這個組件的使用也是很簡單的。html
簡單介紹一下Flume
Flume是一種分佈式的、可靠的、可用的服務,用於高效地收集、聚合和移動大量日誌數據。它具備基於流數據流的簡單靈活的體系結構。它具備可調的可靠性機制和許多故障轉移和恢復機制,具備健壯性和容錯性。它使用一個簡單的可擴展的數據模型,容許聯機分析應用程序。
一句話總結:Flume就是用來作日誌收集的這麼一個工具java
Flume架構介紹
1) Source 收集 (從webserver讀取數據到Channel中去)git
2) Channel 彙集 (減小直接與磁盤的對接次數(生產環境中通常使用類型爲Memory),當channel滿了,再寫到sink中去。同時,也起到了容錯的做用,由於只有當sink接收到了數據,channel纔會把原有的數據丟棄)web
3) Sink 輸出(從channel中讀取數據,寫到目的地,這裏的目的地能夠是HDFS、其他的一些文件系統或者做爲下一個agent的source等)apache
順便說一下
Event的概念
在整個數據的收集彙集傳送的過程當中,流動的是event,即事務保證是在event級別進行的。
那麼什麼是event呢?—–event將傳輸的數據進行封裝,是flume傳輸數據的基本單位,若是是文本文件,一般是一行記錄,event也是事務的基本單位。
event從source,流向channel,再到sink,自己爲一個字節數組,並可攜帶headers(頭信息)信息。event表明着一個數據的最小完整單元,從外部數據源來,向外部的目的地去。
爲了方便你們理解,給出一張event的數據流向圖:
vim
上面這段引用來自大神「安靜的技術控」的文章,由於我以爲大神已經解釋得很到位了。很好理解,在這裏,感謝大神啦數組
工欲善其事,必先利其器bash
由於有的小夥伴可能尚未安裝flume組件,接下來咱們就開始介紹一下flume的安裝。
咱們也能夠去官網看一下,怎麼安裝。架構
System Requirements
Java Runtime Environment - Java 1.8 or later
Memory - Sufficient memory for configurations used by sources, channels or sinks
Disk Space - Sufficient disk space for configurations used by channels or sinks
Directory Permissions - Read/Write permissions for directories used by agent
這段話,簡單解釋:咱們必須得安裝java1.8或者更高版本,內存要足夠(由於咱們的Channel通常是寫在內存上的),磁盤空間要足夠,還有就是對咱們代理中的目錄要有讀寫權限oracle
說明:Flume的安裝是不須要Hadoop集羣的環境的
(一)安裝JDK
[hadoop@hadoop000 app]$ vim ~/.bash_profile #新增導出的java環境,JAVA_HOME後面的值爲本身的解壓目錄 export JAVA_HOME=/home/hadoop/app/jdk1.8.0_144 export PATH=$JAVA_HOME/bin:$PATH #:wq 保存退出 [hadoop@hadoop000 app]$ source ~/.bash_profile #回車就好,使得剛剛的導出生效 #驗證配置 [hadoop@hadoop000 app]$ java -version java version "1.8.0_144" Java(TM) SE Runtime Environment (build 1.8.0_144-b01) Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode) [hadoop@hadoop000 app]$
(二)安裝flume
[hadoop@hadoop000 app]$ vim ~/.bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs export JAVA_HOME=/home/hadoop/app/jdk1.8.0_144 export PATH=$JAVA_HOME/bin:$PATH export FLUME_HOME=/home/hadoop/app/flume export PATH=$FLUME_HOME/bin:$PATH #:wq 保存退出
3.來到flume下的conf文件目錄下:
[hadoop@hadoop000 conf]$ cp flume-env.sh.template flume-env.sh [hadoop@hadoop000 conf]$ [hadoop@hadoop000 conf]$ vim flume-env.sh #修改這裏默認的JAVA_HOME爲本身的java目錄 export JAVA_HOME=/home/hadoop/app/jdk1.8.0_144 #:wq保存退出
4.測試是否安裝成功
[hadoop@hadoop000 conf]$ flume-ng version Flume 1.6.0-cdh5.7.0 Source code repository: https://git-wip-us.apache.org/repos/asf/flume.git Revision: 8f5f5143ae30802fe79f9ab96f893e6c54a105d1 Compiled by jenkins on Wed Mar 23 11:38:48 PDT 2016 From source with checksum 50b533f0ffc32db9246405ac4431872e [hadoop@hadoop000 conf]$
到這裏咱們的環境就搭建成功了,接下來,咱們就能夠開始咱們的Flume之旅啦.... 推薦Flume系列二之案例實戰 http://blog.csdn.net/liuge36/article/details/78591367