日志采集Flume配置概述
按照规划,需要采集的用户行为日志文件分布在hadoop102,hadoop103两台日志服务器,故需要在hadoop102,hadoop103两台节点配置日志采集Flume。日志采集Flume需要采集日志文件内容,并对日志格式(JSON)进行校验,然后将校验通过的日志发送到Kafka。
此处可选择TaildirSource和KafkaChannel,并配置日志校验拦截器。
选择TailDirSource和KafkaChannel的原因如下:
1)TailDirSource
TailDirSource相比ExecSource、SpoolingDirectorySource的优势
TailDirSource:断点续传、多目录。Flume1.6以前需要自己自定义Source记录每次读取文件位置,实现断点续传。
ExecSource可以实时搜集数据,但是在Flume不运行或者Shell命令出错的情况下,数据将会丢失。
SpoolingDirectorySource监控目录,支持断点续传。
2)KafkaChannel
采用Kafka Channel,省去了Sink,提高了效率
日志采集Flume关键配置如下:

日志采集Flume配置实操
创建Flume配置文件
在hadoop102节点的Flume的job目录下创建file_to_kafka.conf

配置文件内容如下

编写Flume拦截器
创建Maven工程flume-interceptor
File->new->project 选择Maven项目

写入名字直接Finish

创建包:com.zxh.gmall.flume.interceptor

在pom.xml文件中添加如下配置
<dependencies>
<dependency>
<groupId>org.apache.flume</groupId>
<artifactId>flume-ng-core</artifactId>
<version>1.9.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
在com.zxh.gmall.flume.utils包下创建JSONUtil类

在com.zxh.gmall.flume.interceptor包下创建ETLInterceptor类



打包

选择下面这个

需要先将打好的包放入到hadoop102的/opt/module/flume/lib文件夹下面

本文详细介绍了如何在Hadoop集群中使用Flume进行用户行为日志采集,包括选择TailDirSource和KafkaChannel的原因,以及实际的配置步骤,涉及JSON格式校验和Flume拦截器的编写。
1283

被折叠的 条评论
为什么被折叠?



