(1)flume
(2)flume安装
资源分配
(3)flume组件选型
(
1
)
Taildir Source
相比
Exec Source
、
Spooling Directory Source
的优势
TailDir Source
:断点续传、多目录。
Flume1.6
以前需要自己自定义
Source
记录每次读
取文件位置,实现断点续传。
Exec Source
可以实时搜集数据,但是在
Flume
不运行或者
Shell
命令出错的情况下,数
据将会丢失。
Spooling Directory Source
监控目录,支持断点续传。
(
2
)
batchSize
大小如何设置?
答:
Event 1K
左右时,
500-1000
合适(默认为
100
)
2
)
Channel
采用
Kafka Channel
,省去了
Sink
,提高了效率。
KafkaChannel
数据存储在
Kafka
里面,
所以数据是存储在磁盘中。
注意在
Flume1.7
以前,
Kafka Channel
很少有人使用,因为发现
parseAsFlumeEvent
这个
配置起不了作用。也就是无论
parseAsFlumeEvent
配置为
true
还是
false
,都会转为
Flume
Event
。这样的话,造成的结果是,会始终都把
Flume
的
headers
中的信息混合着内容一起写
入
Kafka
的消息中,这显然不是我所需要的,我只是需要把内容写入即可。
(4)日志采集Flume配置
1
)
Flume
配置分析
![](https://i-blog.csdnimg.cn/blog_migrate/dea7c30ee496ec0972ded083e68eedf7.png)
Flume
直接读
log
日志的数据,
log
日志的格式是
app.yyyy-mm-dd.log
。
2
)
Flume
的具体配置如下:
(
1
)在
/opt/module/flume/conf
目录下创建
file-flume-kafka.conf
文件
[atguigu@hadoop102 conf]$ vim file-flume-kafka.conf
在文件配置如下内容
![](https://i-blog.csdnimg.cn/blog_migrate/d06ff4a38259e0f67ba90cf6e604b048.png)
![](https://i-blog.csdnimg.cn/blog_migrate/be4ffe3718c73882804671975933da51.png)
注意:
com.atguigu.flume.interceptor.ETLInterceptor
是自定义的拦截器的全类名。需要根据用户自定义的拦截器做相应修改。
(5)Flume拦截器
1)创建Maven 工程 flume-interceptor
2
)创建包名:
com.atguigu.flume.interceptor
3
)在
pom.xml
文件中添加如下配置
![](https://i-blog.csdnimg.cn/blog_migrate/b7e07df6efbba86546a401bdce4e400b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/40f985f85f43b617e9030b6d576c419b.png)
4
)在
com.atguigu.flume.interceptor
包下创建
JSONUtils
类
![](https://i-blog.csdnimg.cn/blog_migrate/e520854ae8d0749e417c6a5ca5ca4b7c.png)
5
)在
com.atguigu.flume.interceptor
包下创建
LogInterceptor
类
![](https://i-blog.csdnimg.cn/blog_migrate/09c9aea1fc2b1cfcbfa5664d61443028.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1e033576145ce954a482f054b1f9e681.png)
6
)打包
![](https://i-blog.csdnimg.cn/blog_migrate/4d135828043842e0bfd313cd88a133cc.png)
7
)需要先将打好的包放入到
hadoop102
的
/opt/module/flume/lib
文件夹下面。
![](https://i-blog.csdnimg.cn/blog_migrate/2430cdd21ee280acd09d26647fb43f9b.png)
8
)分发
Flume
到
hadoop103
、
hadoop104
[atguigu@hadoop102 module]$ xsync flume/
9
)分别在
hadoop102
、
hadoop103
上启动
Flume
![](https://i-blog.csdnimg.cn/blog_migrate/004a618ca1315efd3350a6e3b34d7b3b.png)
10)
日志采集
Flume
启动停止脚本
1
)在
/home/atguigu/bin
目录下创建脚本
f1.sh
[atguigu@hadoop102 bin]$ vim f1.sh
在脚本中填写如下内容
![](https://i-blog.csdnimg.cn/blog_migrate/5feeef2b693bf5362233128953e3bd6f.png)
说明
1
:
nohup
,该命令可以在你退出帐户
/
关闭终端之后
继续运行相应的进程
。
nohup
就
是不挂起的意思,
不挂断地运行命令
。
说明
2
:
awk
默认分隔符为空格
说明
3
:
xargs
表示取出前面命令运行的结果,作为后面命令的输入参数。
2
)增加脚本执行权限
[atguigu@hadoop102 bin]$ chmod u+x f1.sh
3
)
f1
集群启动脚本
[atguigu@hadoop102 module]$ f1.sh start
4
)
f1
集群停止脚本
[atguigu@hadoop102 module]$ f1.sh stop