(09)数仓-采集日志flume(写入kafka)

(1)flume

(09)数仓-采集日志flume(写入kafka)_第1张图片

(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 配置分析
(09)数仓-采集日志flume(写入kafka)_第2张图片
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
在文件配置如下内容
(09)数仓-采集日志flume(写入kafka)_第3张图片
(09)数仓-采集日志flume(写入kafka)_第4张图片
注意: com.atguigu.flume.interceptor.ETLInterceptor 是自定义的拦截器的全类名。需要根据用户自定义的拦截器做相应修改。
(5)Flume拦截器
1)创建Maven 工程 flume-interceptor
2 )创建包名: com.atguigu.flume.interceptor
3 )在 pom.xml 文件中添加如下配置
(09)数仓-采集日志flume(写入kafka)_第5张图片
(09)数仓-采集日志flume(写入kafka)_第6张图片
4 )在 com.atguigu.flume.interceptor 包下创建 JSONUtils
(09)数仓-采集日志flume(写入kafka)_第7张图片
5 )在 com.atguigu.flume.interceptor 包下创建 LogInterceptor
(09)数仓-采集日志flume(写入kafka)_第8张图片
(09)数仓-采集日志flume(写入kafka)_第9张图片
6 )打包
7 )需要先将打好的包放入到 hadoop102 /opt/module/flume/lib 文件夹下面。
 
8 )分发 Flume hadoop103 hadoop104
[atguigu@hadoop102 module]$ xsync flume/
9 )分别在 hadoop102 hadoop103 上启动 Flume
10) 日志采集 Flume 启动停止脚本
1 )在 /home/atguigu/bin 目录下创建脚本 f1.sh
[atguigu@hadoop102 bin]$ vim f1.sh
在脚本中填写如下内容
(09)数仓-采集日志flume(写入kafka)_第10张图片
说明 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

你可能感兴趣的:(离线数仓,大数据)