媒介
本日开始学习数仓的内容,之前耗费一年半的时间已经学完了 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 传输到 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、云服务
- 阿里云 EMR(包罗常用的大部门大数据框架)、MaxCompute、DataWorks
- 亚马逊 EMR
- 腾讯云 EMR
- 华为云 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、云主机
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。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |