总体架构设计

技术方案选型

技术方案选型包括:

  • 框架选型
  • 软件选型
  • 服务器选型
  • 集群规模的估算

框架选型对比

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 隔离