文章目录
8. 实时数仓同步数据
实时数仓由Flink源源不断从Kafka当中读数据计算,所以不需要手动同步数据到实时数仓。
9. 离线数仓同步数据
9.1 用户行为数据同步
9.1.1 数据通道
用户行为数据由Flume从Kafka直接同步到HDFS,由于离线数仓采用Hive的分区表按天统计,所以目标路径要包含一层日期。具体数据流向如下图所示。
9.1.1.1 用户行为数据通道

9.1.2 日志消费Flume配置概述
按照规划,该Flume需将Kafka中topic_log的数据发往HDFS。并且对每天产生的用户行为日志进行区分,将不同天的数据发往HDFS不同天的路径。
此处选择KafkaSource、FileChannel、HDFSSink。
关键配置如下:
9.1.2.1 日志消费Flume关键配置

9.1.3 日志消费Flume配置实操
9.1.3.1 创建Flume配置文件

先将里面的文件删除。
9.1.3.2 配置文件内容如下
# 定义组件
a1.sources=r1
a1.channels=c1
a1.sinks=k1
# 配置source1
# 连接Kafka集群
a1.sources.r1.type = org.apache.flume.source.kafka.KafkaSource
a1.sources.r1.kafka.bootstrap.servers = hadoop102:9092,hadoop103:9092
# 消费者从topic_log读数据
a1.sources.r1.kafka.topics = topic_log
# 给消费者设置一个唯一标识,也就是消费者组ID,建议配置和业务一样的,如果用默认的,有多个消费者,则会有的消费者可以消费到数据,有些消费者消费不了数据
a1.sources.r1.kafka.consumer.group.id = topic_log
# 一次最大传输多少数据,数据满了就传输
a1.sources.r1.batchSize = 2000
# 多久传输一次,时间到了就传输,不管数据到2000了没有,时间一到就开始传输数据。
a1.sources.r1.batchDurationMillis = 1000
# 拦截器
a1.sources.r1.interceptors = i1
a1.sources.r1.interceptors.i1.type = com.summer.gmall.flume.interceptor.TimestampInterceptor$Builder
# 配置channel
a1.channels.c1.type = file
# 这个是Flume的第一次备份路径
a1.channels.c1.checkpointDir = /opt/module/flume-1.9.0/checkpoint/behavior1
# 打开二次Flume的二次备份,一般情况这个都是关闭状态,要是想打开的话改为true即可,然后配置backupCheckpointDir 的路径,这个路径要和第一次的路径放在不同的磁盘上
a1.channels.c1.useDualCheckpoints = false
# 这个是Flume的第二次备份路径
# a1.channels.c1.backupCheckpointDir = /opt/module/flume-1.9.0/checkpoint/behavior2
# 是flume的多目录存储,可以将服务器存在多个磁盘上,目前我只有一个磁盘,因此只能配置一个磁盘。和Hadoop的datadirs是一个意思。
a1.channels.c1.dataDirs = /opt/module/flume-1.9.0/data/behavior1
# file channel写入文件,这个文件最大可以容纳2G内容
a1.channels.c1.maxF
Flume日志同步实践

本文介绍如何使用Flume从Kafka同步用户行为日志到HDFS,并详细讲解配置优化、自定义拦截器及脚本化管理的过程。
最低0.47元/天 解锁文章
2070

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



