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

前言

        今天开始学习数仓的内容,之前花费一年半的时间已经学完了 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.hqwc.cn/news/464898.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

正则可视化工具:学习和编写正则表达式的利器

引言 正则表达式是一种强大的文本匹配和处理工具,但对于初学者和非专业开发者来说,编写和理解正则表达式可能是一项具有挑战性的任务。为了帮助人们更好地学习和编写正则表达式,正则可视化工具应运而生。本文将探讨正则可视化工具的优点&…

【安装记录】安装 netperf 和 perf

这是一篇发疯随笔X.X 我的环境是虚拟机debian12,出于种种原因,之前直接使用apt-get install netperf apt-get install perf指令直接安装,报错找不到包 然后上网搜了一堆教程,有说下载netperf源码编译的,那些教程里面有…

C++入门学习(二十七)跳转语句—break语句

1、与switch语句联合使用 C入门学习&#xff08;二十三&#xff09;选择结构-switch语句-CSDN博客 #include <iostream> #include <string> using namespace std;int main() { int number;cout<<"请为《斗萝大路》打星(1~5※)&#xff1a;" &…

AJAX——常用请求方法

1 请求方法 请求方法&#xff1a;对服务器资源&#xff0c;要执行的操作 2 数据提交 场景&#xff1a;当数据需要在服务器上保存 3 axios请求配置 url&#xff1a;请求的URL网址 method&#xff1a;请求的方法&#xff0c;GET可以省略&#xff08;不区分大小写&#xff09; …

IT行业有哪些证书含金量高?

1.Amazon Certified Cloud Practitioner 转码小白超友好的一门入门级证书&#xff0c;对于之前没有IT或者project经验的同学也可以轻轻松松顺利拿下&#xff0c;含金量很高可以直接标到linkedln的个人介绍里面。 (1)将如何帮助职业生涯 获得此认证可验证对 AWS Cloud、服务和…

Linux内核有什么之内存管理子系统有什么——基础篇之struct vm_area_struct(2)

接前一篇文章&#xff1a;Linux内核有什么之内存管理子系统有什么——基础篇之struct vm_area_struct&#xff08;1&#xff09; 本文内容参考&#xff1a; linux进程虚拟地址空间 《趣谈Linux操作系统 核心原理篇&#xff1a;第四部分 内存管理—— 刘超》 4.6 深入理解 Li…

创新S3存储桶检索:Langchain社区S3加载器搭载OpenAI API

在瞬息万变的数据存储和处理领域&#xff0c;将高效的云存储解决方案与先进的 AI 功能相结合&#xff0c;为处理大量数据提供了一种变革性的方法。本文演示了使用 MinIO、Langchain 和 OpenAI 的 GPT-3.5 模型的实际实现&#xff0c;重点总结了存储在 MinIO 存储桶中的文档。 …

Linux基础-1

Linux基础 内核exp利用 kernel 2.6.32 版本相对来说比较安全&#xff01; 系统命令 Vi编辑器 vi编辑器有三种模式&#xff01; 命令模式、插入模式、底行模式 ​ 命令模式&#xff1a;输入一些命令对文本进行操控 gg:回到文首 G:进入文本尾部 dd : 删除光标所在行&…

Unity Meta Quest MR 开发(四):使用 Scene API 和 Depth API 实现深度识别和环境遮挡

文章目录 &#x1f4d5;教程说明&#x1f4d5;Scene API 实现遮挡&#x1f4d5;Scene API 实现遮挡的缺点&#x1f4d5;Depth API 实现遮挡⭐导入 Depth API⭐修改环境配置⭐添加 EnvironmentDepthOcclusion 预制体⭐给物体替换遮挡 Shader⭐取消现实手部的遮挡效果 此教程相关…

Java微服务学习Day1

文章目录 认识微服务服务拆分及远程调用服务拆分服务远程调用提供者与消费者 Eureka注册中心介绍构建EurekaServer注册user-serviceorder-service完成服务拉取 Ribbon负载均衡介绍原理策略饥饿加载 Nacos注册中心介绍配置分级存储负载均衡环境隔离nacos注册中心原理 认识微服务…

Web前端框架-Vue(初识)

文章目录 web前端三大主流框架**1.Angular****2.React****3.Vue**什么是Vue.js 为什么要学习流行框架框架和库和插件的区别一.简介指令v-cloakv-textv-htmlv-pre**v-once**v-onv-on事件函数中传入参数事件修饰符双向数据绑定v-model 按键修饰符自定义按键修饰符别名v-bind(属性…

洛谷p3435 OKR-Periods of Words

题目链接 反思 我们之前用 k m p kmp kmp都是用到前缀字串的最长匹配长度&#xff0c;本题则需要利用 p m t pmt pmt数组找到最短匹配长度 思路 题目中匹配前缀的意思是&#xff0c;在字符串 a a a的前缀中&#xff0c;某个前缀自身重复两遍后能把 a a a包括进来 如图&…