1.项目记录Flume采集用户行为日志到HDFS
Flume采集日志到HDFS
将产生的数据不断的导入到HDFS上,供方便后续使用,日志通过前端,后端埋点通过HTTP同步到了不同的日志服务器上,所以使用Flume将日志文件以及Kafka中的用户行为数据通过Flume导入到HDFS上
需求
将日志服务器中的用户行为日志上传到HDFS上
解决方案
在所有的日志服务器上安装Flume,每个Flume监控一个或者多个日志文件夹,将用户行为日志同步到各种数据源中,可以实现增量导入HDFS
具体步骤
-
安装Flume
- 傻瓜式安装
-
修改配置文件
配置文件速览(去敏)
# fume的采集配置
# 指定Flume中的关系
a1.sources = r1
a1.channels = c1
a1.sinks = k1
# source config,
a1.sources.r1.channels = c1
a1.sources.r1.type = TAILDIR
a1.sources.r1.filegroups = g1
a1.sources.r1.filegroups.g1 = /aaa/aaa/access.*
a1.sources.r1.header.g1.abc = bbb
a1.sources.r1.batchSize = 100
a1.sources.r1.fileHeader = true
a1.sources.r1.fileHeaderKey = fileName
a1.sources.r1.interceptors = i1
a1.sources.r1.interceptors.i1.type = timestamp
# channel config
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 200
# sink config
a1.sinks.k1.channel = c1
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = hdfs://linux01:9000/aaa/%Y-%m-%d/%H-%M/
a1.sinks.k1.hdfs.filePrefix = event_
a1.sinks.k1.hdfs.fileSuffix = .log
a1.sinks.k1.hdfs.rollInterval = 0
a1.sinks.k1.hdfs.rollCount = 0
a1.sinks.k1.hdfs.rollSize = 134217728
a1.sinks.k1.hdfs.round = true
a1.sinks.k1.hdfs.roundValue = 10
a1.sinks.k1.hdfs.roundUnit = minute
a1.sinks.k1.hdfs.fileType = DataStream
- 启动Flume,开始增量导入日志
bin/flume-ng agent -c conf -f agentconf/taildir-m-hdfs.conf -n a1
bin / flume-ng agent -conf conf -z zkhost:2181,zkhost1:2181 -p / flume -name a1 -Dflume.root.logger = INFO,console
1、flume-ng agent 运行一个Flume Agent
2、-conf 指定配置文件,这个配置文件必须在全局选项的–conf参数定义的目录下。
3、-z Zookeeper连接字符串。以逗号分隔的主机名列表:port
4、-p Zookeeper中的基本路径,用于存储代理配置
5、-name a1 Agent的名称a1
6、-Dflume.root.logger=INFO,console 该参数将会把flume的日志输出到console,为了将其输出到日志文件(默认在$FLUME_HOME/logs),可以将console改为LOGFILE形式
具体的配置可以修改$FLUME_HOME/conf/log4j.properties
-Dflume.log.file=./wchatAgent.logs 该参数直接输出日志到目标文件
参数详解可以参考 https://www.cnblogs.com/51python/p/10966341.html
设置日志级别 -Dflume.root.logger=INFO,console
放入后台运行 加上参数 1>/dev/null 2>&1 &
使用Gianglia监控运行状态