网站收录怎么做,电子商务系统的建设过程,济南小程序制作公司,英文网站建设合同前言 今天开始学习数仓的内容#xff0c;之前花费一年半的时间已经学完了 Hadoop、Hive、Zookeeper、Spark、HBase、Flume、Sqoop、Kafka、Flink 等基础组件。把学过的内容用到实践这是最重要的#xff0c;相信会有很大的收获。
1、数据仓库概念
1.1、概念 数据仓库#x…前言 今天开始学习数仓的内容之前花费一年半的时间已经学完了 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采集平台
用户行为数据采集平台搭建业务数据采集平台搭建
2离线需求 3实时需求 2.2、项目框架
1. 技术选型
考虑因素数据量大小、业务需求、行业内经验、技术成熟度比如spark/flink、开发维护成本、总成本预算等
数据采集传输Flume用户行为数据采集因为这部分数据都是日志文件的形式DataX业务数据采集因为要把数据从 MySQL 传输到 HDFSMaxWell功能类似于 DataX 但是 DataX 是全量同步MaxWell 是增量同步Kafka流量削峰Sqoop功能和 Datax 一样也可以使用数据存储MySQL离线数仓和实时数仓的计算结果都会存到 MySQL 供数据展示HDFSHBase实时数仓Redis实时数仓MongoDB一般存储爬虫的数据这里不用数据计算HiveSpark一般只用在离线Hive on Spark 结合使用FlinkStorm这里不用Tez同样是一个基于内存的离线引擎这里也不用即席查询Presto用于离线Kylin用于离线这里不用Impala用于离线这里不用Druid用于实时这里不用ClickHouse用于实时Doris用于实时这里不用数据可视化Superset用于离线EchartsSugar用于实时QuickBIDataV任务调度DolphinScheduler国产开源兼具轻量级和功能丰富用于离线Azkaban轻量级用法简单Oozie重量级功能更多AirflowPython 写的一款框架集群监控Zabbix离线Prometheus实时元数据管理Atlas管理表和表之间的关系权限管理RangerHDP 公司SentryCDH 公司
2. 系统数据流设计 这里 Kafka 不管是离线数仓还是实时数仓都是一个不可缺少的中间件。
3. 框架版本选项
3.1、Apache/CDH/HDP
我们使用 Apache 版本但是组件的兼容性需要我们自己解决。
CDH 版本很稳定但是它是收费的HDP 版本可以二次开发但是不稳定。
3.2、云服务
阿里云 EMR包含常用的大部分大数据框架、MaxCompute、DataWorks亚马逊 EMR腾讯云 EMR华为云 EMR
3.3、具体版本选择
Hadoop 3.1.3Zookeeper 3.5.7MySQL 5.7.16Hive 3.1.2Flume 1.9.0Kafka 3.0.0Spark 3.0.0DataX 3.0.0Superset 1.3.2Dolphinscheduler 2.0.3Maxwell 1.29.2Flink 1.13.0Redis 6.0.8HBase 2.0.5ClickHouse 20.4.5.36-2
4. 服务器选型
4.1、物理机
128G 内存20 核物理 CPU40 线程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% buf54TB / 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。