
系统数据流通过程:
电商数据来源分为两部分:
(1)第一部分在网站做埋点,用户点击产生的日志数据,通过nginx,springboot将数据分发到日志服务器,logfile保存在日志服务器上。
(2)第二部分是网站的业务数据,一般保存在mysql数据库。
数据传输
日志数据通过flume收集,然后保存到kafka,再通过flume传输到hdfs。
业务数据直接通过sqoop导入到hdfs。
数据处理
编写hql以及脚本程序,放在azkaban上作为每日定时任务,将最后结果导入到mysql数据库。
数据展示
在页面上展示完成后放在mysql的数据。
flume采集日志:
1.自定义了ETL拦截器和分类型拦截器。
ETL拦截器实现了简单的数据过滤和清洗。注意复杂的清洗还是在hive中清洗,flume只适合做一些最简单的清洗,因为它在复杂的数据清洗上性能并不是很好。
分类型拦截器主要是对数据进行分发到kafka不同的topic中去,所以需要配置不同通道的selector。
问题:为什么增加一层kafka和一层flume而不是直接由flume采集日志到hdfs上。因为考虑到后期采集的日期数据可能会重复利用,比如实时计算。如果后面重新搭建flume来采集既费时又浪费资源。所以统一保存在kakfa中。其它业务有需求直接从kafka中去数据。
数据仓库一般分为4层:
ods:数据原始

本文详细介绍了离线数据仓库的工作流程,包括数据来源、传输、处理和展示。电商数据通过nginx和springboot发送到日志服务器,由flume收集到kafka,再传输至hdfs。业务数据使用sqoop导入hdfs。数据处理阶段,通过hql和脚本在azkaban上执行定时任务,结果存储于mysql。数据仓库分为ods、dwd、dws和ads四层,确保数据清洗和分析。同时讨论了为何使用kafka作为中间层以及hadoop的配置细节,如lzo和snappy压缩、orc格式和tez计算引擎。
最低0.47元/天 解锁文章
996

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



