离线数仓(一)【数仓概念、需求架构】

前言

        今天开始学习数仓的内容,之前花费一年半的时间已经学完了 Hadoop、Hive、Zookeeper、Spark、HBase、Flume、Sqoop、Kafka、Flink 等基础组件。把学过的内容用到实践这是最重要的,相信会有很大的收获。

1、数据仓库概念

1.1、概念

        数据仓库( Data Warehouse ),是为企业制定决策,提供数据支持的。可以帮助企业,改进业务流程、提高产品质量等。(数据仓库的目的不只是简单的存储数据,而是把收集起来的数据进行计算分析,得到有价值的信息)

1.2、数据分类

        数据仓库的输入数据通常包括:业务数据用户行为数据爬虫数据

        业务数据:就是各行业在处理事务过程中产生的数据。比如用户在电商网站中登录、下单、支付等过程中,需要和网站后台数据库进行增删改查交互,产生的数据就是业务数据业务数据通常存储在MySQL、Oracle等数据库中(要求响应要快)。

        用户行为数据:用户在使用产品过程中,通过埋点收集与客户端产品交互过程中产生的数据,并发往日志服务器进行保存。比如页面浏览、点击、停留、评论、点赞、收藏等。用户行为数据通常存储在日志文件中。

        爬虫数据:通常是通过爬虫等技术获取其他公司网站的数据。

1.3、数仓架构

  • ODS 层(原始数据层):离线数仓中一般是 Hive,用来做数据备份(如果后面的 DWD 、DWS、ADS 层数据丢失,都可以通过上一层来进行恢复)
  • DWD 层(明细数据层):主要做数据清洗(对错误缺失数据进行处理,以及一些隐私信息的脱敏)
  • DWS 层(汇总数据层):预聚合(做一些表的连接 join 之类的操作,提前 join,节省计算开销)
  • ADS 层(数据应用层):统计最终指标

数据仓库并不是数据的最终目的,而是为数据最终的目的做准备,包括比如:备份、清洗、聚合、统计等。

2、项目需求及架构设计

2.1、项目需求分析

1)采集平台

  1. 用户行为数据采集平台搭建
  2. 业务数据采集平台搭建

2)离线需求

3)实时需求

2.2、项目框架

1. 技术选型

考虑因素:数据量大小、业务需求、行业内经验、技术成熟度(比如spark/flink)、开发维护成本、总成本预算

  • 数据采集传输:Flume(用户行为数据采集,因为这部分数据都是日志文件的形式),DataX(业务数据采集,因为要把数据从 MySQL 传输到 HDFS),MaxWell(功能类似于 DataX 但是 DataX 是全量同步,MaxWell 是增量同步),Kafka(流量削峰),Sqoop(功能和 Datax 一样,也可以使用)
  • 数据存储:MySQL(离线数仓和实时数仓的计算结果都会存到 MySQL 供数据展示),HDFS,HBase(实时数仓),Redis(实时数仓),MongoDB(一般存储爬虫的数据,这里不用)
  • 数据计算:Hive,Spark(一般只用在离线,Hive on Spark 结合使用),Flink,Storm(这里不用),Tez(同样是一个基于内存的离线引擎,这里也不用)
  • 即席查询:Presto(用于离线),Kylin(用于离线,这里不用),Impala(用于离线,这里不用),Druid(用于实时,这里不用),ClickHouse(用于实时),Doris(用于实时,这里不用)
  • 数据可视化;Superset(用于离线),Echarts,Sugar(用于实时),QuickBI,DataV
  • 任务调度:DolphinScheduler(国产开源,兼具轻量级和功能丰富,用于离线),Azkaban(轻量级,用法简单),Oozie(重量级,功能更多),Airflow(Python 写的一款框架)
  • 集群监控:Zabbix(离线),Prometheus(实时)
  • 元数据管理:Atlas(管理表和表之间的关系)
  • 权限管理:Ranger(HDP 公司),Sentry(CDH 公司)

2. 系统数据流设计

这里 Kafka 不管是离线数仓还是实时数仓都是一个不可缺少的中间件。

3. 框架版本选项

3.1、Apache/CDH/HDP

我们使用 Apache 版本,但是组件的兼容性需要我们自己解决。

CDH 版本很稳定但是它是收费的,HDP 版本可以二次开发但是不稳定。

3.2、云服务
  1. 阿里云 EMR(包含常用的大部分大数据框架)、MaxCompute、DataWorks
  2. 亚马逊 EMR
  3. 腾讯云 EMR
  4. 华为云 EMR
3.3、具体版本选择
  • Hadoop 3.1.3
  • Zookeeper 3.5.7
  • MySQL 5.7.16
  • Hive 3.1.2
  • Flume 1.9.0
  • Kafka 3.0.0
  • Spark 3.0.0
  • DataX 3.0.0
  • Superset 1.3.2
  • Dolphinscheduler 2.0.3
  • Maxwell 1.29.2
  • Flink 1.13.0
  • Redis 6.0.8
  • HBase 2.0.5
  • ClickHouse 20.4.5.36-2

4. 服务器选型

4.1、物理机
  • 128G 内存,20 核物理 CPU,40 线程,8 THDD 和 2T SSD 硬盘,戴尔品牌单台报价 4w+ ,寿命 5 年左右。
  • 需要考虑运维人员、电费成本。
4.2、云主机
  • 5w 左右每年,不需要考虑运维、电费成本。
4.3、企业选择
  • 有钱的公司(大城市的一些对技术不太讲究的公司,比如金融公司)会选择阿里云
  • 中小型公司有钱后会购买物理机(数据放在自己手里更放心)
  • 有长期打算,资金充足的公司也会选择物理机

5. 集群规模

确认集群规模:

  • 每天日活跃用户 100 万,每人每天创造 100 条数据: 100w * 100 = 1亿条
  • 每条数据 1KB ,每天:1亿 / 1024 / 1024 ≈ 100GB
  • 半年不扩容服务器来算:100GB * 180天 ≈ 18TB
  • 保存 3 个副本:18TB * 3 = 54 TB
  • 预留 20%~30% buf:54TB / 0.7 = 77TB

        算到这里需要大概 8T * 10 台服务器,但是数仓是分层的,我们的数据在 ODS 层(原始数据层)是主要的消耗磁盘的地方,而其他几层也是需要消耗磁盘存放中间结果的,所以结果应该比我们预估的更大!但是又考虑到数据在存储时可以压缩(100GB 可以压缩到 5~10GB左右),所以我们其实只需要 3 台服务器就可以保证半年内每天 100 GB 数据的计算存储,5~10 台服务器则可以保证 2~3 年数据该数据的计算和存储。

6. 集群资源规划设计

在企业中通常会搭建一套生产集群(十几、甚至几十几百台)和一套测试集群(3~5台)。生产集群运行生产任务,测试集群用于上线前代码编写和测试。

服务名称

服务

服务器

hadoop102

服务器

hadoop103

服务器

hadoop104

HDFS

NameNode

DataNode

SecondaryNameNode

Yarn

NodeManager

Resourcemanager

Zookeeper

Zookeeper Server

Flume(采集日志)

Flume

Kafka

Kafka

Flume

(消费Kafka日志)

Flume

Flume

(消费Kafka业务)

Flume

Hive

MySQL

MySQL

DataX

Spark

DolphinScheduler

ApiApplicationServer

AlertServer

MasterServer

WorkerServer

LoggerServer

Superset

Superset

Flink

ClickHouse

Redis

Hbase

服务数总计

20

11

12

 总结

        到这里,数仓基本的概念是了解了,这个项目会用到哪些技术也基本明白了(Hadoop、Hive、MySQL、Spark、Flume、Kafka、HBase、DataX等),接下来就是慢慢熟练之前学的哪些框架在实际应用中是怎么使用的,一些没学过的框架(比如 DataX、Superset、DoplhinScheduler)慢慢补,都是小工具 so easy。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/382133.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】数据库的基础——数据库的介绍、MySQL的介绍和架构、SQL分类、MySQL的基本使用、MySQL的存储引擎

文章目录 MySQL1. 数据库的介绍1.2 主流数据库 2. MySQL的介绍2.1 MySQL架构2.2 SQL分类2.3 MySQL的基本使用2.4 MySQL存储引擎 MySQL 1. 数据库的介绍 数据库(Database,简称DB)是按照数据结构来组织、存储和管理数据的仓库。它是长期存储在计…

中年低端中产程序员从西安出发到海南三亚低成本吃喝万里行:西安-南宁-湛江-雷州-徐闻-博鳌-陵水-三亚-重庆-西安

文章大纲 旅途规划来回行程的确定南宁 - 北海 - 湛江轮渡成为了最终最大的不确定性!感谢神州租车气温与游玩地点总体花费 游玩过程出发时间:Day1-1月25日星期四,西安飞南宁路途中:Day2-1月26日星期五,南宁-湛江-住雷州…

数据分析基础之《pandas(7)—高级处理2》

四、合并 如果数据由多张表组成,那么有时候需要将不同的内容合并在一起分析 1、先回忆下numpy中如何合并 水平拼接 np.hstack() 竖直拼接 np.vstack() 两个都能实现 np.concatenate((a, b), axis) 2、pd.concat([data1, data2], axis1) 按照行或者列…

第二节 zookeeper基础应用与实战

目录 1. Zookeeper命令操作 1.1 Zookeeper 数据模型 1.2 Zookeeper服务端常用命令 1.3 Zookeeper客户端常用命令 1.3.1 基本CRUD 1.3.2 创建临时&顺序节点 2. Zookeeper JavaAPI操作 2.1 Curator介绍 2.2 引入Curator 2.3 建立连接 2.4 添加节点 2.5 修改节点 …

一周学会Django5 Python Web开发-Django5创建项目(用PyCharm工具)

锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计11条视频,包括:2024版 Django5 Python we…

《PCI Express体系结构导读》随记 —— 第II篇 第4章 PCIe总线概述(10)

接前一篇文章:《PCI Express体系结构导读》随记 —— 第II篇 第4章 PCIe总线概述(9) 4.2 PCIe体系结构的组成部件 PCIe总线作为处理器系统的局部总线,其作用与PCI总线类似,主要目的是为了连接处理器系统中的外部设备&…

C语言中的数据类型-强转

强制类型转换 概念:将某种类型的数据转化我们需要的数据类型,注意强制类型转化是临时强转,不会改变本身的数据类型。 强转又分为显式强转和隐式转化 显示强转是按照我们的要求进行转化 格式:(需要转化数据类型)变量名 #inclu…

C#,欧拉常数(Euler Constant)的算法与源代码

1 欧拉常数 欧拉常数最先由瑞士数学家莱昂哈德 欧拉 (Leonhard Euler) 在1735年发表的文章《De Progressionibus harmonicus observationes》中定义。欧拉曾经使用γ作为它的符号,并计算出了它的前6位,1761年他又将该值计算到了16位 。 欧拉常数最先由瑞…

Swift 使用 Combine 进行开发 从入门到精通七

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三Swift Combine 发布者publisher的生命周期 从入门到精通四Swift Combine 操作符operations和Subjects发布者的生命周期 从入门到精通五Swift Com…

Dubbo源码一:【Dubbo与Spring整合】

正常在项目中,我们都是在Spring环境下使用Dubbo,所以我们这里就在Spring的环境下看看Dubbo是如何运作的 入口 在源码下载下来之后,有一个dubbo-demo目录,里面有一个基于spring注解的子目录dubbo-demo-annotation, 里面有一个生产…

蓝桥杯每日一题------背包问题(二)

前言 本次讲解背包问题的一些延申问题,新的知识点主要涉及到二进制优化,单调队列优化DP,树形DP等。 多重背包 原始做法 多重背包的题意处在01背包和完全背包之间,因为对于每一个物品它规定了可选的个数,那么可以考虑…

M1 Mac使用SquareLine-Studio进行LVGL开发

背景 使用Gui-Guider开发遇到一些问题,比如组件不全。使用LVGL官方的设计软件开发 延续上一篇使用的基本环境。 LVGL项目 新建项目 选择Arduino的项目,设定好分辨率及颜色。 设计UI 导出代码 Export -> Create Template Project 导出文件如图…

vue+springboot前后端视频文件等的上传与展示(基于七牛云)

前言:在初步说明完成功能之前,我会把重要的部分说明下。后续我会细化。 vue视频文件上传 其实这里和图片这些文件就是一样的。因为上传只是把我们想在云端展示的文件按等传输到云端的bucket。然后方便网站去请求引用。 有人问我我就说明下。这种东西无…

Linux 36.2@Jetson Orin Nano之Hello AI World!

Linux 36.2Jetson Orin Nano之Hello AI World! 1. 源由2. Hello AI World!3. 步骤3.1 准备阶段3.2 获取代码3.3 Python环境3.4 重点环节3.5 软件配置3.6 PyTorch安装3.7 编译链接3.8 安装更新 4. 测试4.1 video-viewer4.2 detectnet4.3 演示命令 5. 参考…

问题:2、计算机网络的目标是实现________。 #媒体#知识分享

问题:2、计算机网络的目标是实现________。 A.数据处理 B.信息传输与数据处理 C.资源共享与信息传输 D.文献查询 参考答案如图所示

开发者实战 | 如何在 Windows 上调用 NPU 部署深度学习模型

点击蓝字 关注我们,让开发变得更有趣 作者 | 杨亦诚 排版 | 李擎 OpenVINO™..♩~ ♫. ♪.. 相信很多小伙伴都已经知道,在最新一代的 Intel Core Ultra 移动端平台中已经集成了被称为 NPU 的神经网络加速处理器,以提供低功耗的AI算力,特别适合…

代码随想录算法训练营day15||二叉树part02、102.二叉树的层序遍历、 226.翻转二叉树(优先掌握递归)、101. 对称二叉树 (优先掌握递归)

102.二叉树的层序遍历 题目:给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 接下来我们再来介绍二叉树的另一种遍历方式:层序遍历。 层序遍历一个二叉树。就是…

分布式搜索引擎 elasticsearch

分布式搜索引擎 elasticsearch 第一部分 1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容 例如: 在GitHub搜索…

酷开科技荣获消费者服务平台黑猫投诉“消费者服务之星”称号

什么是优质服务?既是以客户为中心的庄严承诺,又是对服务能力提升的深耕细作;既是对服务标准的敬畏,也是对服务创新的不断探索……服务是多维的,每个企业都有自己独到的诠释,或事无巨细环环严控,…

Mybatis开发辅助神器p6spy

Mybatis什么都好,就是不能打印完整的SQL语句,虽然可以根据数据来判断一二,但始终不能直观的看到实际语句。这对我们想用完整语句去数据库里执行,带来了不便。 怎么说呢不管用其他什么方式来实现完整语句,都始终不是Myb…
最新文章