点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

  • Hadoop(已更完)
  • HDFS(已更完)
  • MapReduce(已更完)
  • Hive(已更完)
  • Flume(已更完)
  • Sqoop(已更完)
  • Zookeeper(已更完)
  • HBase(已更完)
  • Redis (已更完)
  • Kafka(已更完)
  • Spark(已更完)
  • Flink(已更完)
  • ClickHouse(已更完)
  • Kudu(已更完)
  • Druid(已更完)
  • Kylin(已更完)
  • Elasticsearch(已更完)
  • DataX(已更完)
  • Tez(已更完)
  • 数据挖掘(已更完)
  • Prometheus(已更完)
  • Grafana(已更完)
  • 离线数仓(正在更新…)

章节内容

上节我们完成了如下的内容:

  • 业务分析
  • 数据埋点
  • 指标体系
  • 维度拆解

在这里插入图片描述

总体架构设计

技术方案选型

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

框架选型

Apache或第三方发行版(CDH、HDP、Fusion Insight)

Apache社区版本

优点:

  • 完全开源免费
  • 社区活跃
  • 文档、资料详实

缺点:

  • 复杂的版本管理
  • 复杂的集群安装
  • 复杂的集群运维
  • 复杂的生态环境

第三方发行版本

CDH、HDP、Fusion Insight
Hadoop遵从Apache开源协议,用户可以免费的任意的修改并使用Hadoop,正因如此,市面上有很多厂家在ApacheHadoop的基础上开发了自己的产品,如Cloudera的CDH,Hortonworks的HDP,华为的FusionInsight等,这些产品的优点是:

  • 主要功能和社区版本一致
  • 版本管理清晰,比如:Cloudera、CDH3、CDH4等,后面加上补丁的版本:CDH4.1.0 patch
  • 比ApacheHadoop在兼容性、安全性、稳定性上有增强,第三方发行版通常都是经过了大量的测试验证,有众多部署实例,大量的运用到各种生产环境中
  • 版本更新快,如CDH每个季度会有一个Update,每一年都有一个Release
  • 基于稳定版的ApacheHadoop,并应用了最新Bug修复、Feature的patch
  • 提供了部署、安装、配置工具,大大提高了集群的安装效率,可以在几个小时之内安装好集群。
  • 运维简单,提供了管理、监控、诊断、配置修改的工具,管理配置方便,定位问题快速,准确,使运维工作简单,有效

主要的版本有如下的这些:

  • CHD:最成型的发行版本,拥有最多的部署案例,提供强大的部署、管理和监控工具,国内使用最大的版本,拥有强大的社区支持,当遇到问题,能够通过社区、论坛等网络资源快速获取解决方法
  • HDP:100%开源,可以进行二次开发,但没有CDH稳定,国内使用相对较少
  • Fusion Insight:华为基于Hadoop2.7.2版开发的,坚持分层,解耦,开放的原则,得益于高可靠性,在全国各地政府、运营商、金融系统有较多案例

软件选型

  • 数据采集:DataX、Flume、Sqoop、Logstash、Kafka
  • 数据存储:HDFS、HBase
  • 数据计算:Hive、MapReduce、Tez、Spark、Flink
  • 调度系统:Airflow、azkaban、Oozie
  • 元数据管理:Atlas
  • 数据质量管理:Griffin
  • 即席查询:Impala、Kylin、ClickHouse、Presto、Druid
  • 其他:MySQL

框架,软件尽量不要选择最新的版本,选择半年前左右的稳定版本。
在这里插入图片描述

服务器选型

选择物理机还是云主机:

  • 机器成本考虑:物理机的价格 > 云主机的价格
  • 运维成本考虑:物理机需要有专业的运维人员,云主机的运维工作由供应商完成,运维相对容易,成本相对较低

集群规模

如何确认集群规模(假设:每台服务器20T硬盘,128GB内存)
可以从计算能力、CPU、内存、存储量等方面考虑集群规模。
假设:

  • 每天的日活500万,平均每人每天有100条日志信息
  • 每条日志大小1K左右
  • 不考虑历史数据,半年集群不扩容
  • 数据3个副本
  • 离线数据仓库应用

这种情况下,需要多大的集群规模?
要分析的数据有两部分:日志数据+业务数据

  • 每天日志数据量:500W1001K / 1024 / 1024 = 500G
  • 半年需要存储量:500G * 3 * 180 / 1024 = 260T
  • 通常要给磁盘预留 20%-30%的空间: 260*1.25 = 325T
  • 数据仓库应用有1-2倍的数据膨胀325T * 1.5 = 500T
  • 需要大约25个节点

其他未考虑的因素:数据压缩、业务数据
以上估算的生产环境,实际上除了生产环境以外,还需要开发测试环境,这也需要一定数量的机器。

系统逻辑架构

在这里插入图片描述
服务器软件配置如下所示:
在这里插入图片描述

数据仓库命名规范

数据库命名

  • 命名规则:数仓对应分层
  • 命名示例:ods/dwd/dws/dim/temp/ads

数仓各层对应数据库

  • ods层 => ods_{业务线|业务项目}
  • dw层 => dwd_{业务线|业务项目} + dws_{业务线|业务项目}
  • dim => dim_维表
  • ads => ads_{业务线|业务项目} (统计指标等)
  • 临时数据 => temp_{业务线|业务项目}

(备注:本项目未使用)

表命名(数据库表命名)

  • ODS层:ods_{业务线|业务项目}[数据来源类型]{业务}
  • DWD层:dwd_{业务线|业务项目}{主题域}{子业务}
  • DWS层:dws_{业务线|业务项目}{主题域}{汇总相关粒度}_{汇总时间周期}
  • ADS层:ads_{业务线|业务项目}{统计业务}{报表form|热门排序topN}
  • DIM层:dim_{业务线|业务项目|pub公共}_{维度}

创建数据库

我们启动Hive,进行操作:

create database if not exists ods;
create database if not exists dwd;
create database if not exists dws;
create database if not exists ads;
create database if not exists dim;
create database if not exists tmp;

执行结果如下图所示:
在这里插入图片描述

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部