Linux flume安裝與配置

百聯達發表於2014-10-06
背景:

Flume是Cloudera提供的一個高可用的,高可靠的,分散式的海量日誌採集、聚合和傳輸的系統,Flume支援在日誌系統中定製各類資料傳送方,用於收集資料;同時,Flume提供對資料進行簡單處理,並寫到各種資料接受方(可定製)的能力。

flume版本:apache-flume-1.5.0.1-bin.tar.gz

一:安裝

tar -zxvf apache-flume-1.5.0.1-bin.tar.gz -C /usr/local/flume1.5.1

系統引數配置
vi /etc/profile
export FLUME_HOME=/usr/local/flume1.5.1/
export FLUME_CONF_DIR=/usr/local/flume1.5.1/conf
export PATH=$PATH:$FLUME_HOME/bin
source /etc/profile

二:引數配置

cp flume-conf.properties.template  flume.conf
vi flume.conf

# The configuration file needs to define the sources, 
# the channels and the sinks.
# Sources, channels and sinks are defined per agent, 
# in this case called 'agent'


a1.sources = r1
a1.sinks = k1
a1.channels = c1


# For each one of the sources, the type is defined
a1.sources.r1.type = exec
a1.sources.r1.bind = localhost
a1.sources.r1.port = 5858
a1.sources.r1.shell = /bin/bash -c
a1.sources.r1.command = tail -F /tomcat_app/nohup.out
a1.sources.r1.restartThrottle = 300000
a1.sources.r1.restart = true
a1.sources.r1.logStdErr = false
a1.soources.r1.batchSize = 5


# The channel can be defined as follows.
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
a1.channels.c1.keep-alive = 30
a1.channels.c1.byteCapacityBufferPercentage = 80%
a1.channels.c1.byteCapacity = 1024000000


# Each sink's type must be defined
a1.sinks.k1.type = logger


a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

三:flume啟動記憶體配置

cp flume-env.sh.template flume-env.sh
JAVA_OPTS="-Xms1024m -Xmx1024m -Dcom.sun.management.jmxremote"

四:啟動

cd /usr/local/flume1.5.1

nohup bin/flume-ng agent --conf conf --conf-file conf/flume.conf --name a1 -Dflume.root.logger=INFO,console &

五:flume引數配置說明

source

資料的源端,負責產生資料;也可以接收其他程式或者agent發來的資料。目前的已經支援的常用的source包括:

flume支援的source介紹

source

source.type

簡介

avro source

avro

提供一個基於avro協議的serverbind到某個埠上,等待
avro
協議客戶端發過來的訊息;一般在agent之間傳輸資料時,可以配置為avro

thrift source

thrift

同上,不過傳輸協議為thrift

exec source

exec

執行一個unix command,以其std out作為資料來源;
命令可以透過..command<source>配置,如:
tail -f /var/log/mesg
。支援對命令或者指令碼的自動重啟

netcat source

netcat

監控指定埠,每一行作為一個event傳輸;認為輸入的資料為text的,每一行
的資料最大長度可配置(
max-line-length)預設為512

http source

http

支援httppostgetget僅僅用於測試)

scribe source

org.apache.flume.source.scribe.ScribeSource

scribe的相容

syslog source

syslogtcp
syslogudp

監聽syslog,支援tcp或者udp

sequence source

seq

用於測試,自動產生編號自增的資料

spooling directory source

監控某個目錄下的所有檔案,將其新加入的檔案作為資料來源傳輸走;
每傳輸玩一個檔案後,會被rename成其他名字(表示已經傳輸過)或者刪掉;
預設監控目錄下的檔案具有:immutableuniquely-named屬性,否則會出錯;

jms source

jms

從訊息佇列獲取資料。active mq


使用者也可以自己實現source,繼承與類AbstractSource即可。配置時,type配置為類的全稱。

channel

channel

type

簡介

memory channel

memory

訊息放在記憶體中,提供高吞吐,但不提供可靠性;
可能丟失資料

file channel

file

對資料持久化;但是配置較為麻煩,需要配置資料目錄和checkpoint目錄;
不同的file channel均需要配置一個checkpoint 目錄;
By default the File Channel uses paths for checkpoint
 and data directories that are within the user home
 
as specified above. As a result if you have more than
 
one File Channel instances active within the agent,
 
only one will be able to lock the directories and cause
 
the other channel initialization to fail.

jdbc channel

jdbc

內建的derb資料庫,對event進行了持久化,提供高可靠性;
看來是取代同樣具有持久特性的file channel

sinks

sinks,負責處理source來的資料,常用的如下:

flume支援的sink

type

簡介

hdfs sink

hdfs

將資料寫到hdfs上;
可以配置目錄(支援轉義%Y-%m-%d;

logger sink

logger

採用loggerlogger可以配置(可以直接輸出到控制檯,也可輸出到檔案);
注意:loggereventbody長度有限制,超過限制會截斷;

avro sink

avro

傳送給另外一個avrosource(當然也可以不是flumesource,可以是自己
開發的基於avroserver

thift sink

thrift

傳送給另外一個thriftsource

IRC sink

irc

Internet Relay Chat

file roll sink

file_roll

本地file,支援rotate(可配置大小、時間、event count來進行rotate);

null sink

null

丟棄,等同於scribenull store

hbase sink

hbase
asynchbase

寫到hbase中;需要配置hbasetablecolumnFamily等資訊;
比較扯淡的是,到底寫入到哪一個hbase,取決於flumeclasspath中碰到的第一個
hbase-site.xml

The Hbase configuration is picked up from the first hbase-site.xml
encountered in the classpath.
asynchbase支援可配置的hbase(配置zookeperznode path

morphline solr sink

org.apache.flume.sink.solr.morphline.MorphlineSolrSink

Solr是一個基於Lucene java庫的企業級搜尋伺服器。
transforms it, and loads it in near-real-time into Apache Solr servers,
 
which in turn serve queries to end users or search applications.

elastic search sink

org.apache.flume.sink.elasticsearch.ElasticSearchSink

類似的同上,換成了elasticsearch cluster

custom sink

$FQCN

full qualified class name

 






來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-1289937/,如需轉載,請註明出處,否則將追究法律責任。

相關文章