数仓开发——数据采集

1.大数据组件介绍

Hadoop:

功能:大数据存储和处理框架,提供分布式存储(HDFS)和计算(MapReduce)。

节点:NameNode:管理文件系统的元数据和文件到数据块的映射。

DataNode:存储实际的数据块,负责数据的读写。

ResourceManager:调度和管理计算资源,负责资源分配。

NodeManager:运行在每个数据节点上,负责任务的执行和资源监控。

Kafka:

功能:分布式消息队列,用于处理和传输实时数据流。

节点:Broker:处理消息的接收、存储和分发。

Producer:将数据发布到Kafka的主题中。

Consumer:从主题中读取数据。

Zookeeper(通常用于Kafka的元数据管理和集群协调):负责协调Kafka节点的工作,管理Broker的元数据。

Zookeeper:

功能:分布式协调服务,提供分布式应用的协调和同步功能。

节点:Leader:负责处理写请求,协调集群的操作。

Follower:从Leader节点接收更新,处理读请求。

Observer:接收数据更新,但不参与写操作,主要用于增加系统的读取性能。

Flume:

功能:分布式数据收集、聚合和传输系统,用于将日志数据从多个源传输到目标系统。

节点:Source:从外部系统接收数据。

Channel:存储数据,作为数据流的中间环节。

Sink:将数据写入最终存储系统,如HDFS、HBase等。

DataX:

功能:数据同步工具,支持各种数据源之间的数据迁移和同步。

节点:Reader:从源数据源读取数据。

Writer:将数据写入目标数据源。

Plugin:包括各种读取和写入插件,用于支持不同类型的数据源。

Maxwell:

功能:MySQL变更数据捕获(CDC)工具,用于实时数据同步和流式处理。

节点:Maxwell Process:捕获MySQL的变更日志,转换为JSON格式,并将其发布到Kafka等流处理系统。

Kafka/其他流系统:用于存储和进一步处理捕获的变更数据。

2.数据采集流程

日志数据:

Logdata(本地)--flume(采集方式)-->kafka---flume(采集方式)-->hdfs---load-->hive

(1)配置flume到kafka的文件创建job文件写一个conf脚本

示例如下:

# 定义Flume agent的名称为a1,配置source和channel

a1.sources = r1

a1.channels = c1

# 配置source r1

# 使用TAILDIR类型来监控目录中的日志文件

a1.sources.r1.type = TAILDIR

# 定义文件组f1

a1.sources.r1.filegroups = f1

# 指定要监控的日志文件路径

a1.sources.r1.filegroups.f1 = /opt/module/applog/log/app.*

# 指定Flume存储文件位置的路径

a1.sources.r1.positionFile = /opt/module/flume/taildir_position.json

# 配置channel c1

# 使用KafkaChannel类型的channel,将数据传输到Kafka

a1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel

# Kafka服务器的地址

a1.channels.c1.kafka.bootstrap.servers = hadoop102:9092,hadoop103:9092

# Kafka的topic

a1.channels.c1.kafka.topic = topic_log

# 是否将数据解析为Flume事件

a1.channels.c1.parseAsFlumeEvent = false

# 将source r1 绑定到channel c1

a1.sources.r1.channels = c1

(2)配置kafka到hdfs

# 定义Flume agent的名称为a1,配置source、channel和sink

a1.sources = r1

a1.channels = c1

a1.sinks = k1

# 配置source r1

# 使用KafkaSource从Kafka读取数据

a1.sources.r1.type = org.apache.flume.source.kafka.KafkaSource

# 批处理的大小

a1.sources.r1.batchSize = 5000

# 批处理的时间间隔(毫秒)

a1.sources.r1.batchDurationMillis = 2000

# Kafka服务器的地址

a1.sources.r1.kafka.bootstrap.servers = hadoop102:9092,hadoop103:9092

# 从Kafka读取的主题

a1.sources.r1.kafka.topics = topic_db

# Kafka消费者组ID

a1.sources.r1.kafka.consumer.group.id = flume

# 将Kafka消息中的主题设置到Flume事件的header中

a1.sources.r1.setTopicHeader = true

a1.sources.r1.topicHeader = topic

# 使用拦截器i1来处理事件

a1.sources.r1.interceptors = i1

a1.sources.r1.interceptors.i1.type = com.atguigu.gmall.flume.interceptor.TimestampAndTableNameInterceptor$Builder

# 配置channel c1

# 使用file类型的channel来存储数据

a1.channels.c1.type = file

# 存储检查点数据的目录

a1.channels.c1.checkpointDir = /opt/module/flume/checkpoint/behavior2

# 存储数据文件的目录

a1.channels.c1.dataDirs = /opt/module/flume/data/behavior2/

# 单个文件的最大大小

a1.channels.c1.maxFileSize = 2146435071

# channel的容量

a1.channels.c1.capacity = 1000000

# channel的保持时间(秒)

a1.channels.c1.keep-alive = 6

# 配置sink k1

# 将数据写入HDFS

a1.sinks.k1.type = hdfs

# HDFS中的路径

a1.sinks.k1.hdfs.path = /origin_data/gmall/db/%{tableName}_inc/%Y-%m-%d

# 文件前缀

a1.sinks.k1.hdfs.filePrefix = db

# 不进行文件轮换

a1.sinks.k1.hdfs.round = false

# HDFS文件轮换配置

a1.sinks.k1.hdfs.rollInterval = 10

a1.sinks.k1.hdfs.rollSize = 134217728

a1.sinks.k1.hdfs.rollCount = 0

# HDFS文件类型和压缩配置

a1.sinks.k1.hdfs.fileType = CompressedStream

a1.sinks.k1.hdfs.codeC = gzip

# 将source r1 绑定到channel c1

a1.sources.r1.channels = c1

# 将sink k1 绑定到channel c1

a1.sinks.k1.channel = c1

业务数据:

(1)Mysql(binlog)--maxwell(增量数据)-->kafka--flume-->hdfs

Maxwell-bootstrap也可以采集历史全量

配置maxwell

# 设置日志级别为信息

log_level=info

# Kafka生产者配置

producer=kafka

# Kafka集群的Bootstrap服务器列表

kafka.bootstrap.servers=hadoop102:9092,hadoop103:9092,hadoop104:9092

# Kafka主题

kafka_topic=topic_db

# MySQL登录信息

# MySQL主机地址

host=hadoop102

# MySQL用户名

user=maxwell

# MySQL密码

password=maxwell

# JDBC连接选项,包含SSL、时区和公钥检索设置

jdbc_options=useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true

# 过滤条件:排除gmall中的z_log表的数据,该表是日志数据的备份,不需要采集

filter=exclude:gmall.z_log

# 数据分区策略:按主键分组,以避免数据倾斜

producer_partition_by=primary_key

# 模拟的日期,用于修改数据时间戳的日期部分

mock_date=2024-08-19

(2)

Mysql --全量数据(datax)--mysqlreader>datax--hdfswriter-->hdfs

dataX一些配数据库(数据库名,表名,驱动等)和hdfs的信息(json格式)

退出安全模式:hdfs dfsadmin -safemode leave

                          

本教程为授权出品 一、课程简介数据仓库(Data Warehouse,可简写为DW或DWH),是面向分析的集成化数据环境,为企业决策制定过程,提供系统数据支持的战略集合,是国内外各大公司正在重点投入的战略级技术领域。 二、课程内容《大数据电商数仓项目实战》视频教程,从项目架构的搭建,到数据采集模块的设计、数仓架构的设计、实战需求实现、即席查询的实现,我们针对国内目前广泛使用的Apache原生框架和CDH版本框架进行了分别介绍,Apache原生框架介绍中涉及到的技术框架包括Flume、Kafka、Sqoop、MySql、HDFS、Hive、Tez、Spark、Presto、Druid等,CDH版本框架讲解包括CM的安装部署、Hadoop、Zookeeper、Hive、Flume、Kafka、Oozie、Impala、HUE、Kudu、Spark的安装配置,透彻了解不同版本框架的区别联系,将大数据全生态系统前沿技术一网打尽。在过程中对大数据生态体系进行了系统的讲解,对实际企业数仓项目中可能涉及到的技术点都进行了深入的讲解和探讨。同时穿插了大量数仓基础理论知识,让你在掌握实战经验的同时能够打下坚实的理论基础。 三、课程目标本课程以国内电商巨头实际业务应用场景为依托,对电商数仓的常见实战指标以及难点实战指标进行了详尽讲解,具体指标包括:每日、周、月活跃设备明细,留存用户比例,沉默用户、回流用户、流失用户统计,最近连续3周活跃用户统计,最近7天内连续3天活跃用户统计,GMV成交总额分析,转化率及漏斗分析,品牌复购率分析、订单表拉链表的设计等,让学生拥有更直观全面的实战经验。通过对本课程的学习,对数仓项目可以建立起清晰明确的概念,系统全面的掌握各项数仓项目技术,轻松应对各种数仓难题。 四、课程亮点本课程结合国内多家企业实际项目经验,特别加入了项目架构模块,从集群规模的确定到框架版本选型以及服务器选型,手把手教你从零开始搭建大数据集群。并且总结大量项目实战中会遇到的问题,针对各个技术框架,均有调优实战经验,具体包括:常用Linux运维命令、Hadoop集群调优、Flume组件选型及性能优化、Kafka集群规模确认及关键参数调优。通过这部分学习,助学生迅速成长,获取前沿技术经验,从容解决实战问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值