Flume Agent配置

Flume Agent配置

Flume介绍

Flume的Agent主要是由三个重要的组件组成:分别为Source、Channel、Sink。
(1)Source:完成对日志数据的收集,分成transtion和event导入到Channel之中。
(2)Channel:主要提供一个队列的功能,对Source提供的数据进行简单的缓存。
(3)Sink:取出Channel中的数据,相应的存储到文件系统,数据库,或者提交到远程服务器。

配置步骤

检查Hadoop相关进程,是否已经启动。若未启动,切换到/apps/hadoop/sbin目录下,启动Hadoop。

1.jps  
2.cd /apps/hadoop/sbin  
3../start-all.sh 
  1. 切换到/data/flume2目录下,如不存在需提前创建flume2文件夹,使用wget命令,在此目录下下载http://192.168.1.100:60000/allfiles/flume2中的文件。
1.mkdir /data/flume2  
2.cd /data/flume2  

3.实验场景1:source:exec,channel:memory,sink:logger,数据是/data/flume2/目录下的goods文件。
场景1是最简单的一个Flume配置,它的结构是由以下几部分组成:首先定义各个组件,其次配置Source的类型为exec,并定义了命令command为tail -n 20 /data/flume2/goods(查看/data/flume2目录下的goods文件里的倒数20行记录),然后配置Channel的类型为memory,Sink的类型为logger,最后将各个组件关联起来(设置Source的Channel为ch,Sink的Channel也为ch)。
切换到/apps/flume/conf目录下,使用vim编辑conf文件,名为:exec_mem_logger.conf。

1.cd /apps/flume/conf  
2.vim exec_mem_logger.conf  

将以下内容写入exec_mem_logger.conf文件中。

1.#定义各个组件  
2.agent1.sources  = src  
3.agent1.channels = ch  
4.agent1.sinks    = des  
5. 
6.#配置source  
7.agent1.sources.src.type = exec  
8.agent1.sources.src.command = tail -n 20 /data/flume2/goods  
9. 
10.#配置channel  
11.agent1.channels.ch.type = memory  
12. 
13.#配置sink  
14.agent1.sinks.des.type = logger  
15. 
16.##下面是把上面设置的组件关联起来(把点用线连起来)  
17.agent1.sources.src.channels = ch  
18.agent1.sinks.des.channel    = ch

启动flume命令:

1.flume-ng agent -c /conf -f /apps/flume/conf/exec_mem_logger.conf -n agent1 -Dflume.root.logger=DEBUG,console  

参数说明:# source:exec、channel:memory、 sink:logger
-c 配置文件存放的目录
-f 所使用的配置文件路径
-n agent的名称
开启flume后,查看输出效果
按ctrl+c停止flume。
4.实验场景2:source:exec,channel:memory,sink:hdfs。 场景2相对于场景1,它的Sink类型发生了变化,变成了hdfs型。其结构中定义的各组件,Source配置没有变,在配置Channel时最大容量capacity为100000,通信的最大容量为100,在配置Sink时类型变为hdfs,路径设置为hdfs://localhost:9000/myflume2/exec_mem_hdfs/%Y/%m/%d,里面的%Y/%m/%d代表年月日,数据类型为文本型,写入格式为Text格式,写入hdfs的文件是否新建有几种判断方式:rollInterval表示基于时间判断,单位是秒,当为0时,表示不基于时间判断。rollSize表示基于文件大小判断,单位是B,当为0时表示不基于大小判断,rollCount表示基于写入记录的条数来判断,当为0时,表示不基于条数来判断。idleTimeout表示基于空闲时间来判断,单位是秒,当为0时,代表不基于空闲时间来判断。最后和实验1一样通过设置Source和Sink的Channel都为ch,把Source、Channel和Sink三个组件关联起来。
使用vim编辑conf文件,名为:exec_mem_hdfs.conf。

1.cd /apps/flume/conf  
2.vim exec_mem_hdfs.conf  

将以下内容写入exec_mem_hdfs.conf文件中。

1.#定义各个组件  
2.agent1.sources  = src  
3.agent1.channels = ch  
4.agent1.sinks    = des  
5. 
6.#配置source  
7.agent1.sources.src.type = exec  
8.agent1.sources.src.command = tail -n 20 /data/flume2/goods  
9. 
10.#配置channel  
11.agent1.channels.ch.type = memory  
12.agent1.channels.ch.keep-alive = 30  
13.agnet1.channels.ch.capacity = 1000000  
14.agent1.channels.ch.transactionCapacity = 100  
15. 
16.#配置sink  
17.agent1.sinks.des.type = hdfs  
18.agent1.sinks.des.hdfs.path = hdfs://localhost:9000/myflume2/exec_mem_hdfs/%Y%m%d/  
19.agent1.sinks.des.hdfs.useLocalTimeStamp = true  
20. 
21.#设置flume临时文件的前缀为 . 或 _ 在hive加载时,会忽略此文件。  
22.agent1.sinks.des.hdfs.inUsePrefix=_  
23.#设置flume写入文件的前缀是什么  
24.agent1.sinks.des.hdfs.filePrefix = abc  
25.agent1.sinks.des.hdfs.fileType = DataStream  
26.agent1.sinks.des.hdfs.writeFormat = Text  
27.#hdfs创建多久会新建一个文件,0为不基于时间判断,单位为秒  
28.agent1.sinks.des.hdfs.rollInterval = 30  
29.#hdfs写入的文件达到多大时,创建新文件 0为不基于空间大小,单位B  
30.agent1.sinks.des.hdfs.rollSize = 100000  
31.#hdfs有多少条消息记录时,创建文件,0为不基于条数判断  
32.agent1.sinks.des.hdfs.rollCount = 10000  
33.#hdfs空闲多久就新建一个文件,单位秒  
34.agent1.sinks.des.hdfs.idleTimeout = 30  
35.##下面是把上面设置的组件关联起来(把点用线连起来)  
36.agent1.sources.src.channels = ch  
37.agent1.sinks.des.channel    = ch  

启动flume命令:

1.flume-ng agent -c /conf -f /apps/flume/conf/exec_mem_hdfs.conf -n agent1 -Dflume.root.logger=DEBUG,console  

在另一窗口,查看HDFS上的输出。

1.hadoop fs -ls -R /myflume2 

在执行flume命令的窗口,按ctrl+c停止flume。
5.实验场景3:source:exec channel:file sink:hdfs。
场景3相对于场景2把通道Channel的类型从memory改变为file。其结构在各组件定义,配置Source和设置组件的关联三方面与场景2一样。在配置Channel时把类型变为file型,并设置了检查点目录checkpointDir为/data/flume2/ckdir(用于检查Flume与HDFS是否正常通信),还设置了数据存储目录dataDir为/data/flume2/dataDir。在Sink配置中相对场景2增添了useLocalTimeStamp、inUsePrefix和filePrefix这三个设置。useLocalTimeStamp设置是判断是否开启使用本地时间戳,当设置为true是表示开启。inUsePrefix表示设置临时文件的前缀这里设置为"_",filePrefix表示文件的前缀设置,这里设置为abc。
使用vim编辑conf文件,名为:exec_file_hdfs.conf。

1.cd /apps/flume/conf  
2.vim exec_file_hdfs.conf  

将以下内容写入到exec_file_hdfs.conf文件中。

1.#定义各个组件  
2.agent1.sources  = src  
3.agent1.channels = ch  
4.agent1.sinks    = des  
5. 
6.#配置source  
7.agent1.sources.src.type = exec  
8.agent1.sources.src.command = tail -n 20 /data/flume2/goods  
9. 
10.#配置channel  
11.agent1.channels.ch.type = file  
12.agent1.channels.ch.checkpointDir = /data/flume2/ckdir  
13.agent1.channels.ch.dataDirs = /data/flume2/datadir  
14. 
15.#配置sink  
16.agent1.sinks.des.type = hdfs  
17.agent1.sinks.des.hdfs.path = hdfs://localhost:9000/myflume2/exec_file_hdfs/%Y%m%d/  
18.agent1.sinks.des.hdfs.useLocalTimeStamp = true  
19. 
20.#设置flume临时文件的前缀为 . 或 _ 在hive加载时,会忽略此文件。  
21.agent1.sinks.des.hdfs.inUsePrefix=_  
22.#设置flume写入文件的前缀是什么  
23.agent1.sinks.des.hdfs.filePrefix = abc  
24.agent1.sinks.des.hdfs.fileType = DataStream  
25.agent1.sinks.des.hdfs.writeFormat = Text  
26.#hdfs创建多久会新建一个文件,0为不基于时间判断,单位为秒  
27.agent1.sinks.des.hdfs.rollInterval = 30  
28.#hdfs写入的文件达到多大时,创建新文件 0为不基于空间大小,单位B  
29.agent1.sinks.des.hdfs.rollSize = 100000  
30.#hdfs有多少条消息记录时,创建文件,0为不基于条数判断  
31.agent1.sinks.des.hdfs.rollCount = 10000  
32.#hdfs空闲多久就新建一个文件,单位秒  
33.agent1.sinks.des.hdfs.idleTimeout = 30  
34.##下面是把上面设置的组件关联起来(把点用线连起来)  
35.agent1.sources.src.channels = ch  
36.agent1.sinks.des.channel    = ch  

启动flume命令:

1.flume-ng agent -c /conf -f /apps/flume/conf/exec_file_hdfs.conf -n agent1 -Dflume.root.logger=DEBUG,console  

在另一窗口,查看HDFS上的输出。

1.hadoop fs -ls -R /myflume2  

在执行flume命令的窗口,按ctrl+c停止flume。
6.实验场景4:source:syslogtcp,channel:memory,sink:logger。
场景4是一个比较简单的Flume组件配置。首先定义了各组件,然后配置Source,Source的类型配置为syslogtcp,监听端口为6868,主机名为localhost,接下来是配置了Channel的类型为memeory,Sink的类型为logger,最后用通过定义Source和Sink的Channel都为ch,来将Source、Channel和Sink三个相关联起来。
使用vim编辑conf文件,名为:syslog_mem_logger.conf。

1.cd /apps/flume/conf  
2.vim syslog_mem_logger.conf  

将以下内容写入到syslog_mem_logger.conf文件中。

1.#定义各个组件  
2.agent1.sources  = src  
3.agent1.channels = ch  
4.agent1.sinks    = des  
5. 
6.#配置source  
7.agent1.sources.src.type = syslogtcp  
8.agent1.sources.src.port = 6868  
9.agent1.sources.src.host = localhost  
10. 
11.#配置channel  
12.agent1.channels.ch.type = memory  
13. 
14.#配置sink  
15.agent1.sinks.des.type = logger  
16. 
17.##下面是把上面设置的组件关联起来(把点用线连起来)  
18.agent1.sources.src.channels = ch  
19.agent1.sinks.des.channel    = ch  

启动flume命令:

1.flume-ng agent -c /conf -f /apps/flume/conf/syslog_mem_logger.conf -n agent1 -Dflume.root.logger=DEBUG,console  

在另一个窗口,向6868端口发送数据:
1.echo “hello can you hear me?” | nc localhost 6868
在刚才执行启动flume命令的窗口查看输出

配置结束

发布了32 篇原创文章 · 获赞 28 · 访问量 1393

猜你喜欢

转载自blog.csdn.net/Maqiuqiu520/article/details/102969226