大数据架构

某网广告平台展示的数据指标包含两类:曝光类(包括曝光数、点击数、点击单价、花费),转化类(包括转化下单数、转化下单金额、转化付款数、转化付款金额)。前一类的数据主要由流量方以接口的方式提供(比如对接的腾讯广点通平台),后一类则是某网特有的数据,通过买家的浏览、下单、付款日志算出来。

批处理层:将Kafka中的浏览、下单消息同步到HDFS中,再将HDFS中的日志数据解析成Hive表,最终将Hive表导出到MySQL。通过定时任务调用第三方API获取曝光和点击数,每天定时写入另一张MySQL表。

实时处理层:用Spark Streaming程序监听Kafka中的下单、付款消息,计算出每个追踪链接维度的转化数据,存储在redis中。

服务层:Java服务读取两张MySQL表和一个Redis库的数据。

【问题1】

该平台采用了典型的Lambda架构形式,架构图如图所示。图中,(1)(2)(3)分别是哪三层?

(1) 批处理层

(2) 服务层

(3) 流处理层(实时处理层)

【问题2】

典型的大数据架构,除了Lambda架构之外,还有kappa架构,这两个架构的区别如下标所示,请补充表中空(1)-(4)

对比内容 Lambda架构 Kappa架构
复杂度与开发、维护成本 需要维护两套系统,复杂度高,开发、维护成本高 (1) 只需要维护一套系统,复杂度低,开发、维护成本低
计算开销 (2) 需要一直运行批处理和实时计算,计算开销大 必要时进行全量计算,计算开销相对较小
实时性 满足实时性 (3) 满足实时性
历史数据处理能力 (4) 批示全量处理,吞吐量大,历史数据处理能力强 流式全量处理,吞吐量相对较低,历史数据处理能力相对较弱

【问题3】

该平台目前的架构存在两个问题:

第一,其数据处理层比较简单,性能的瓶颈在Java服务层。服务层需要关联两张MySQL表,查询过程很复杂。

第二,实时数据只对接了内部的kafka消息,没有实时的获取第三方的曝光、点击、浏览数据。

请问应该如何改进这两个问题?

1. 在数据层面只维护一张包含所有指标的MySQL表,表中的stday字段作为索引,stday=当天的保存实时数据,stday<当天的保存离线数据。

2. 在实时处理层做了一个常驻后台的python脚本,不断调用第三方API的小时报表,更新stday=当天的曝光类字段。

相关推荐

  1. 数据架构

    2024-05-03 09:38:05       38 阅读
  2. 数据」Kappa架构

    2024-05-03 09:38:05       39 阅读
  3. 数据」Lambda架构

    2024-05-03 09:38:05       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-03 09:38:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-03 09:38:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-03 09:38:05       87 阅读
  4. Python语言-面向对象

    2024-05-03 09:38:05       96 阅读

热门阅读

  1. redis

    redis

    2024-05-03 09:38:05      33 阅读
  2. 孩子学编程,考级和竞赛二者间的比较

    2024-05-03 09:38:05       29 阅读
  3. Qt绘图与图形视图之Graphics View坐标系的简单介绍

    2024-05-03 09:38:05       31 阅读
  4. Unity功能——开发中逻辑坐标和世界坐标是什么?

    2024-05-03 09:38:05       30 阅读
  5. J2EE模式

    2024-05-03 09:38:05       27 阅读
  6. 企微私域运营软件:构建高效私域流量的利器

    2024-05-03 09:38:05       34 阅读
  7. 代码18-29

    2024-05-03 09:38:05       32 阅读
  8. 银河麒麟记录

    2024-05-03 09:38:05       28 阅读
  9. 对比学习用于分类任务

    2024-05-03 09:38:05       27 阅读