| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 离线数仓开发思路---从日志采集到dwd层 -> 正文阅读 |
|
[大数据]离线数仓开发思路---从日志采集到dwd层 |
1- 首先我们先从app端采集日志到日志服务器,一般按照日期分为不同的文件夹使用到的技术:nginx\openresty 产生的数据:json格式的文件 2-日志服务器中flume的架构为两层,采集数据到hdfs上,压缩并且按日期分在不同的文件夹中第一层使用failover组的sink,并要考虑峰值数据传进来的速度,第一层有六个节点,第二层有四个节点,上层的三个的sink传进下层的一个source,并且当上层的一个sink,或者下层的一个节点失效无法传输时,启动上层的failover组的另一个sink,以及下层的另一个节点 上层的flume配置文件
下层的flume配置文件
3- 数据采集到hdfs上之后,我们要检查一下,hdfs上的数据有没有传对,数据会不会有重复的多了,或者是少了几行。但是因为日志服务器,hdfs服务器不在同一节点上,无法将结果在一起比较,因此需要开发一个web服务器,作为一个监控平台,把日志文件的行数发送到web端,并把hdfs上的文件行数也发送到web端那么首先开发web服务器,我们使用spingboot框架开发 3.1 先查询日志文件的行数
请求web服务器的命令,把当前日志服务器节点的主机名、日志类型、时间信息、行数写在一条json中发送给web服务:
3.2 在日志服务器中连接mysql,将日志服务器的信息保存在mysql中?3.3?在hdfs节点上判断3.2.1 从web服务器获取到日志服务器查到的行数命令: metabus_host为运行web服务器节点的ip地址
3.2.2 统计hdfs上文件的行数
3.2.3 判断两个统计的行数是否相等,如果不相等,执行hive sql命令,将数据group by 去重后,将数据写入hdfs上的去重文件夹中:? ? ? /tmp/distinct_task/applog/${dt}4- 数据去重之后,将数据加载入库ods层判断有没有做过去重,有的话去去重文件夹加载数据 没做过去重,则将flume的采集路径作为数据加载路径 结果:生成一个APP日志表?ods.mall_app_log partition(dt='${dt}') (字段包含用户日志的所有信息) 每日更新该表 5- 建数据库,建表,执行脚本********5.1 各层数据库
5.2 建表 (建表语句就先不写了)dws层:
dwd层:
tmp层:
5.3 更新计算-用户注册信息表?dwd.user_reg_infosql逻辑:
5.4?更新计算-绑定权重表dim.dev_acc_bind_wsql逻辑:
报错:classNotFount 解决:add jar? 5.5?更新计算-空设备临时id映射表?dws.mall_app_device_tmpidsql逻辑:
5.6 对数据进行加工:做数据清洗、切分sessionId、数据规范、数据集成、添加guid?重点:添加guid sql逻辑:
?优化
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 5:38:33- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |