(2)Nginx >>日志服务器/业务服务器
采集过来的数据通过 nginx 均匀的分布到日志服务器和业务服务器上。
(3)日志服务器 >> Flume >> Kafka
Flume 实时的读取采集过来的数据,三台 Flume 分别采集三台日志服务器上
的数据,souce 使用的是 tailDir Source,TailDir Source 优点是断点续传、多目录。
针对采集过来的数据,自定义了两个 Flume 的拦截器,分别是 ETL 拦截器和
分区拦截器。
ETL 拦截器:过滤时间戳不合法和 Json 数据不完整的日志
分区拦截器:将启动日志和普通页面埋点日志分开来。
(4)Kafka >>Flume >> HDFS
选 用 第 二 层 flume 消 费 kafka 中 的 数 据 , flume 的 source 选 择 的 是
KafkaSource,channel 选择的是 FileChannel,FileChannel 传输速度相对于 Memory
慢,但数据安全保障高,Agent 进程挂掉也可以从失败中恢复数据。为了提高其
吞吐量,我们对 FileChannel 进行了优化,通过配置 dataDirs 指向多个路径,每
个路径对应不同的硬盘,增大 Flume 吞吐量。Sink 选择的是 HDFS,把数据存储
按照日期储存在 hdfs 上。
(5)MySQL >> HDFS
关于业务数据,是从 mysql 中使用 sqoop 每天定时导入到 hdfs 上。
2. 遇到的问题及解决措施(备注:留了问题:mysql 元数据备
份)
2.1 Flume 相关
2.1.1 常规配置
1)Flume 内存配置为 4G(flume-env.sh 修改)。备注:默认是 2g,一般提高到
4-6g。
2)FileChannel 优化
通过配置 dataDirs 指向多个路径,每个路径对应不同的硬盘,增大 Flume 吞吐量。
checkpointDir 和 backupCheckpointDir 也尽量配置在不同硬盘对应的目录中,保
证 checkpoint 坏掉后,可以快速使用 backupCheckpointDir 恢复数据
3)Sink:HDFS Sink 小文件处理
这三个参数配置写入 HDFS 后会产生小文件,hdfs.rollInterval、hdfs.rollSize、
hdfs.rollCount