flume安装及使用

一、下载安装包并解压

下载地址:http://archive.cloudera.com/cdh5/cdh/5/flume-ng-1.6.0-cdh5.15.1.tar.gz
解压:

[hadoop@hadoop000 software]$ tar -zxvf flume-ng-1.6.0-cdh5.15.1.tar.gz -C ../app/
[hadoop@hadoop000 app]$ ln -s apache-flume-1.6.0-cdh5.15.1-bin flume

二、配置环境变量

[hadoop@hadoop000 ~]$ vi .bash_profile 
export FLUME_HOME=/home/hadoop/app/flume
export PATH=${FLUME_HOME}/bin:${PATH}
[hadoop@hadoop000 ~]$ source .bash_profile 

三、 配置flume-env.sh文件的JavaHome

[hadoop@hadoop000 conf]$ cp flume-env.sh.template flume-env.sh
[hadoop@hadoop000 conf]$ vi flume-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_45

四、使用案例

  • 需求:监控一个文件夹下的数据输出到hdfs并且分区
组件名称 选型
Source taildir
Channel memory
Sink HDFS/logger(测试)
  • 脚本(测试)
[hadoop@hadoop000 flume]$ cat taildir-memory-logger.conf 
#define agent
taildir-hdfs-agent.sources=taildir-source
taildir-hdfs-agent.channels=taildir-memory-channel
taildir-hdfs-agent.sinks=hdfs-sink

#define source
taildir-hdfs-agent.sources.taildir-source.type=TAILDIR
taildir-hdfs-agent.sources.taildir-source.filegroups=f1 f2
taildir-hdfs-agent.sources.taildir-source.filegroups.f1=/home/hadoop/data/taildir/test1/example.log
taildir-hdfs-agent.sources.taildir-source.filegroups.f2=/home/hadoop/data/taildir/test2/.*log.*
taildir-hdfs-agent.sources.taildir-source.positionFile=/home/hadoop/position/taildir_position.json

#define channel
taildir-hdfs-agent.channels.taildir-memory-channel.type=memory

#define sink 
taildir-hdfs-agent.sinks.hdfs-sink.type=logger


#bind source and sink to channel
taildir-hdfs-agent.sources.taildir-source.channels=taildir-memory-channel
taildir-hdfs-agent.sinks.hdfs-sink.channel=taildir-memory-channel
  • 启动命令
[hadoop@hadoop000 flume]$ flume-ng \
agent \
-n taildir-hdfs-agent \
-f /home/hadoop/script/flume/taildir-memory-logger.conf \
-c ${FLUME_HOME}/conf \
-Dflume.root.logger=INFO,console

特别注意
其中最重要的就是 --name 或者 -n ,它指定了启动agent的名称,注意是启动agent的名称。

这个名称必须与配置文件中的一样
这个名称必须与配置文件中的一样
这个名称必须与配置文件中的一样


  • 脚本(hdfs)
[hadoop@hadoop000 flume]$ cat taildir-memory-hdfs.conf     
#define agent
taildir-hdfs-agent.sources=taildir-source
taildir-hdfs-agent.channels=taildir-memory-channel
taildir-hdfs-agent.sinks=hdfs-sink

#define source
taildir-hdfs-agent.sources.taildir-source.type=TAILDIR
taildir-hdfs-agent.sources.taildir-source.filegroups=f1 f2
taildir-hdfs-agent.sources.taildir-source.filegroups.f1=/home/hadoop/data/taildir/test1/example.log
taildir-hdfs-agent.sources.taildir-source.filegroups.f2=/home/hadoop/data/taildir/test2/.*log.*
taildir-hdfs-agent.sources.taildir-source.positionFile=/home/hadoop/position/taildir_position.json

#define channel
taildir-hdfs-agent.channels.taildir-memory-channel.type=memory

#define sink 
taildir-hdfs-agent.sinks.hdfs-sink.type=hdfs
taildir-hdfs-agent.sinks.hdfs-sink.hdfs.path=hdfs://hadoop000:9000/flume/events/%y-%m-%d-%H-%M
taildir-hdfs-agent.sinks.hdfs-sink.hdfs.filePrefix=events-
#隔多少秒滚动当前文件
taildir-hdfs-agent.sinks.hdfs-sink.hdfs.rollInterval=120
#隔多少bytes滚动当前文件(生成上一般设置为127、126M,因为如果设置128M可能会导致一条events在两个文件中)
taildir-hdfs-agent.sinks.hdfs-sink.hdfs.rollSize=1024
#隔多少个events滚动当前文件
taildir-hdfs-agent.sinks.hdfs-sink.hdfs.rollCount=10
#以上三个满足只要一个就滚动当前文件(当前正在写的文件后缀为.tmp,所以最好设置hdfs.rollInterval参数,不然没有达到另外两个参数,同时又跳到下一个分区去了,那么这个文件就一直是.tmp后缀)

#不会压缩输出文件
taildir-hdfs-agent.sinks.hdfs-sink.hdfs.fileType=DataStream
#使用本地时间(如果根据时间分区,必须为true)
taildir-hdfs-agent.sinks.hdfs-sink.hdfs.useLocalTimeStamp=true
#是否滚动分区(如果这个分区内没有数据,则不会产生这个分区)
taildir-hdfs-agent.sinks.hdfs-sink.hdfs.round=true
#滚动分区的值
taildir-hdfs-agent.sinks.hdfs-sink.hdfs.roundValue=2
#滚动分区的单位
taildir-hdfs-agent.sinks.hdfs-sink.hdfs.roundUnit=minute


#bind source and sink to channel
taildir-hdfs-agent.sources.taildir-source.channels=taildir-memory-channel
taildir-hdfs-agent.sinks.hdfs-sink.channel=taildir-memory-channel
  • 启动命令
[hadoop@hadoop000 flume]$ flume-ng \
agent \
-n taildir-hdfs-agent \
-f /home/hadoop/script/flume/taildir-memory-hdfs.conf \
-c ${FLUME_HOME}/conf \
-Dflume.root.logger=INFO,console

五、归并案例

Source Channel Sink
nc memory avro
taildir memory avro
avro memory logger
  • nc-memory-avro
[hadoop@hadoop000 multi-agent]$ vi nc-memory-avro.conf
#define agent
nc-avro-agent.sources=nc-source
nc-avro-agent.channels=nc-memory-channel
nc-avro-agent.sinks=avro-sink

#define source
nc-avro-agent.sources.nc-source.type=netcat
nc-avro-agent.sources.nc-source.bind=0.0.0.0
nc-avro-agent.sources.nc-source.port=44444

#define channel
nc-avro-agent.channels.nc-memory-channel.type=memory

#define sink
nc-avro-agent.sinks.avro-sink.type=avro
nc-avro-agent.sinks.avro-sink.hostname=hadoop000
nc-avro-agent.sinks.avro-sink.port=44445

#bind source and sink to channel
nc-avro-agent.sources.nc-source.channels=nc-memory-channel
nc-avro-agent.sinks.avro-sink.channel=nc-memory-channel
  • taildir-memory-avro
[hadoop@hadoop000 multi-agent]$ vi taildir-memory-avro.conf 
#define agent
taildir-avro-agent.sources=taildir-source
taildir-avro-agent.channels=taildir-memory-channel
taildir-avro-agent.sinks=avro-sink

#define source
taildir-avro-agent.sources.taildir-source.type=TAILDIR
taildir-avro-agent.sources.taildir-source.filegroups=f1 f2
taildir-avro-agent.sources.taildir-source.filegroups.f1=/home/hadoop/data/taildir/test1/example.log
taildir-avro-agent.sources.taildir-source.filegroups.f2=/home/hadoop/data/taildir/test2/.*log.*
taildir-avro-agent.sources.taildir-source.positionFile=/home/hadoop/position/taildir_position.json

#define channel
taildir-avro-agent.channels.taildir-memory-channel.type=memory

#define sink
taildir-avro-agent.sinks.avro-sink.type=avro
taildir-avro-agent.sinks.avro-sink.hostname=hadoop000
taildir-avro-agent.sinks.avro-sink.port=44445

#bind source and sink to channel
taildir-avro-agent.sources.taildir-source.channels=taildir-memory-channel
taildir-avro-agent.sinks.avro-sink.channel=taildir-memory-channel
  • avro-memory-logger
[hadoop@hadoop000 multi-agent]$ vi avro-memory-logger.conf 
#define agent
avro-logger-agent.sources=avro-source
avro-logger-agent.channels=avro-memory-channel
avro-logger-agent.sinks=logger-sink

#define source
avro-logger-agent.sources.avro-source.type=avro
avro-logger-agent.sources.avro-source.bind=hadoop000
avro-logger-agent.sources.avro-source.port=44445

#define channel
avro-logger-agent.channels.avro-memory-channel.type=memory

#define sink
avro-logger-agent.sinks.logger-sink.type=logger

#bind source and sink to channel
avro-logger-agent.sources.avro-source.channels=avro-memory-channel
avro-logger-agent.sinks.logger-sink.channel=avro-memory-channel

  • 启动命令
flume-ng agent -n avro-logger-agent -f /home/hadoop/script/flume/multi-agent/avro-memory-logger.conf -c ${FLUME_HOME}/conf -Dflume.root.logger=INFO,console

flume-ng agent -n nc-avro-agent -f /home/hadoop/script/flume/multi-agent/nc-memory-avro.conf -c ${FLUME_HOME}/conf -Dflume.root.logger=INFO,console

flume-ng agent -n taildir-avro-agent -f /home/hadoop/script/flume/multi-agent/taildir-memory-avro.conf -c ${FLUME_HOME}/conf -Dflume.root.logger=INFO,console
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容