总体架构设计
技术方案选型
技术方案选型包括:
- 框架选型
- 软件选型
- 服务器选型
- 集群规模的估算
框架选型对比
Apache 社区版本
- 完全开源免费
- 社区活跃
- 文档详实
第三方发行版
CDH/HDP/FusionInsight:
- 版本管理清晰
- 兼容性/稳定性增强
- 运维简单
软件选型清单
数据采集
- DataX
- Flume
- Sqoop
- Logstash
- Kafka
数据存储
- HDFS
- HBase
数据计算
- Hive
- MapReduce
- Tez
- Spark
- Flink
调度系统
- Airflow
- azkaban
- Oozie
元数据管理
- Atlas
数据质量管理
- Griffin
即席查询
- Impala
- Kylin
- ClickHouse
- Presto
- Druid
服务器选型
- 物理机 vs 云主机
集群规模估算示例
基于以下假设:
- 日活 500 万
- 每人每天 100 条日志
- 每条日志 1K
- 3 副本
- 半年存储
计算得出需要约 25 个节点
数据仓库命名规范
数据库命名规则
ods / dwd / dws / dim / temp / ads
ODS层命名格式
ods_{业务线|业务项目}_[数据来源类型]_{业务}
DWD层命名格式
dwd_{业务线|业务项目}_{主题域}_{子业务}
DWS层命名格式
dws_{业务线|业务项目}_{主题域}_{汇总相关粒度}_{汇总时间周期}
ADS层命名格式
ads_{业务线|业务项目}_{统计业务}_{报表form|热门排序topN}
DIM层命名格式
dim_{业务线|业务项目|pub公共}_{维度}
错误速查
| 症状 | 根因 | 修复 |
|---|---|---|
| 集群上线后很快磁盘告急 | 容量估算问题 | 重新评估数据增长预期,增加存储容量 |
| 组件兼容问题 | 版本管理问题 | 梳理组件依赖关系,统一版本 |
| 安装部署周期过长 | 缺少一体化部署/运维工具 | 引入 CDH/HDP 等管理平台 |
| 运维定位慢、改配置风险大 | 缺少集中管理工具 | 使用集群管理工具进行配置管理 |
| 数仓分层混乱、表名不可读 | 无统一命名规范 | 制定并执行命名规范 |
| Hive建库建表后权限/资源冲突 | 环境隔离不足 | 做好 namespace/queue 隔离 |