![](https://csdnimg.cn/release/download_crawler_static/88189734/bg8.jpg)
户前台活跃、用户后台活跃、消息通知、广告、点赞、收藏、评论、错误日志。ETL 拦截器
用于过滤时间戳不合法和 Json 数据不完整的日志。分区拦截器用于将启动日志和事件日志
区分开来。
为了将 flume 中的数据发往 Kafka 的不同 Topic,我们还使用了 flume 的 mutiplexing
channel 选择器 。
Channel 在 FileChannel/MemoryChannel/KafkaChannel 中 采 用 Kafka Channel , memory
channel,虽然说速度快,但是挂掉之后容易丢失数据,而 file channel,虽然说数据的存储
量大并且可靠性得到了保证,但是效率太低了,综合考虑之后我们选择了 kafka channel,这
样既能保证可靠性又能保证效率,因为省去了 sink,它的效率还高于 memory channel。
(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. 遇到的问题及解决措施
2.1 Flume 相关
2.1.1 常规配置
1)Flume 内存配置为 4G(flume-env.sh 修改)。备注:默认是 2g,一般提高到 4-6g。
2)FileChannel 优化
通过配置 dataDirs 指向多个路径,每个路径对应不同的硬盘,增大 Flume 吞吐量。
checkpointDir 和 backupCheckpointDir 也尽量配置在不同硬盘对应的目录中,保证 checkpoint
坏掉后,可以快速使用 backupCheckpointDir 恢复数据