2 大数据电商数仓项目——项目需求及架构设计

2 大数据电商数仓项目——项目需求及架构设计

2.1 项目需求分析

  1. 用户行为数据采集平台搭建。
  2. 业务数据采集平台搭建。
  3. 数据仓库维度建模(核心):主要设计ODS、DWD、DWS、AWT、ADS等各个层的具体功能与实现方法。
  4. 分析设备、会员、商品、地区 、活动等电商核心主题,统计的报表指标近100个。
  5. 采用即席查询工具,随时进行指标分析。
  6. 对集群性能进行监控,发生异常需要报警。
  7. 元数据管理:最常用的是hive元数据以及存于MySQL中的,能够帮助实现任务调度中的可视化实现。
  8. 数据质量监控:主要是监控数据的变化与以及质量分析。
  9. 权限管理。
    在这里插入图片描述

2.2 项目架构

2.2.1 技术选型

那么根据以上需求我们提出的思考问题:

  1. 项目技术如何选型?
    技术选型主要考虑因素:数据量大小、业务需求、行业内经验、技术成熟度、开发维护成本、总成本预算

数据采集传输: Flume(用户行为数据)、Kafka(较大数据量时可以先缓冲数据)、Sqoop(业务数据)、Logstash(简单的日志数据)、DataX(业务数据)。
数据存储: MySQL(小量数据存储,如ADS查看报表)、HDFS(海量数据存储,如DWD)、HBase(存储kylin多维分析)、Redis(主要用于实时计算)、MongoDB(如存储爬虫数据,需要同步到数仓里)。
数据计算: Hive、Tez、Spark、Flink、Storm。放在不同的引擎中,计算速度等会有所不同。
数据查询: Presto(快速离线查询)、Kylin(离线查询)、Impala、Druid(快速实时查询)、ClickHouse(实时查询)、Doris。
数据可视化: Echarts(开源免费)、Superset、QuickBI(离线)、DataV(实时快速)。
任务调度: Azkaban(中小企业适用,易上手)、Oozie、DolphinScheduler(国内开源)、Airflow(Python)。
元数据管理: Atlas。
权限管理: Ranger、Sentry。

标红的一般是比较主流易上手的,也是本项目中几乎用到的。

  • 框架版本如何选型(Apache、CDH、HDP)?
  • 服务器使用物理机还是云主机?
  • 如何确认集群规模?(确认服务器的大小以及数量)

2.2.2 项目流程设计

  • 项目需求
  • 集群规模
  • 服务器选型
  • 框架版本选型
  • 技术选型

系统数据流程设计

思考问题:

  • flume采集日志: flume组成、put事务、take事务、flume三个器、flume优化
  • kafka消息缓存: kafka基本信息、kafka挂了、kafka丢了、kafka重复、kafka积压、kafka优化、kafka高效读写原因。
  • zookeeper分布式协调: 部署多少台、内部选举机制。
  • HDFS: Har归档、CombineTextInputformat、JVM重用。
  • sqoop数据同步: 需要考虑常出现的空值、一致性、数据倾斜问题,以及每天导入的数据量、执行时间。
  • hive on spark: 数仓分层。
  • klyin多维分析: 其处理后的数据存储在HBase中。
    系统框架图

2.2.3 框架版本选型

见下图所示:
框架发行版本选型其中,EMR框架只需要直接选择相应框架的数量等即可一键搭建与部署;MaCcomputer、DataWorks提供独立于EMR之外的一个数据分析框架。

具体版本型号:(以Apache为例)

在这里插入图片描述

2.2.4 服务器选型

服务器选物理机还是云主机?
物理机:
一般物理机寿命5年左右,需要专业的运维人员以及考虑电费、放置环境等,一般有长期打算且资金充足的企业会选择物理机。
云主机:
几乎不需要考虑运维工作等因素,直接付费就可以使用,十分适合短期使用,可以即使释放资源。

2.2.5 集群规模

  1. 如何确认集群规模?(假设:每台服务器8T磁盘,128G内存)
    (1)每天日活跃用户100万,每人一天平均100条:100万100条=1亿条
    (2)每条日志1K左右,每天1亿条:100000000/1024/1021=约100G
    (3)半年内不扩容服务器来算:100G
    180天=约18T
    (4)保存3个副本:18T3=54T
    (5)预留20%~30%Buf=54T/0.7=77T
    (6)算到这:约8T
    10台服务器
    2.如果考虑数仓分层?数据采用压缩?需要重新再计算

集群资源规划设计

在企业中通常会搭建一套生产集群和测试集群,生产集群运行生产任务,测试集群用于上线前代码编写和测试。

生产集群规划原则:

  1. 消耗内存的分开,如Hadoop的nn和rm
  2. 数据传输数据比较紧密的放在一起(如kafka、zookeeper)
  3. 客户端尽量放在一到两台服务器上,方便外部访问(如hive和spark)
  4. 有依赖关系的尽量放到同一台服务器(例如Hive和Azkaban Executor)
    以10台服务器为示例测试集群服务器规划:

一般测试集群三台服务器即可。
测试集群示例(1)测试集群示例(2)下一章,我们将开始介绍数据生成模块的实现。

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值