基于大量数据复杂分析需求的解决方案

本贴最后更新于 1573 天前,其中的信息可能已经事过境迁

背景

随着客户的统计需求日趋复杂,以及数据量的日渐增大,我们在应用程序内使用复杂 SQL 进行统计计算的效率变得极低,执行时间超出了正常可以接受的范围。因此需要一个新的解决方案,可以满足复杂且经常变化的统计需求。

ETL

etl.png

ETL 是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。

我们整个系统的实现过程可以以 ETL 为模型,进行相关的设计及开发。

数据中心

我们姑且把我们的系统理解为一个数据中心,关于数据中心,这里有三个名词

  • ODS(Operational Data Store)
    可操作数据仓库,有如下特点
    1. 在业务系统和数据仓库之间形成一个隔离,ODS 直接存放从业务系统抽取过来的数据,这些数据从结构和数据上与业务系统保持一致,降低了数据抽取的复杂性。
    2. 转移一部分业务系统的细节查询功能,因为 ODS 存放的数据与业务系统相同,原来有业务系统产生的报表,现在可以从 ODS 中产生了。
    3. ODS 数据只能增加不能修改,而且数据都是业务系统原样拷贝,所以可能存在数据冲突的可能,解决办法是为每一条数据增加一个时间版本来区分相同的数据。
  • DW(Data Warehouse)
    数据仓库,把 ODS 的数据进行处理、清洗,并转存到数据仓库中并长期保存,提供所有类型数据支持的战略集合,是一个包含所有主题的通用的集合。
  • DM(Data Mart)
    数据集市,可以理解为对数据仓库的数据进行进一步加工,并提供给各级应用。

相关工具

列举一些常用的 ETL 相关工具:

数据抽取/同步:

  • kafka
  • flume
  • sqoop

数据清洗

  • hive
  • pig
  • storm
  • spark

数据存储

  • Hadoop
  • hbase
  • ES
  • Redis

业务分析及选型

目前的需求是对历史数据进行离线分析,并且数据来源为关系型数据库 MySQL,所以选择如下方案:

  1. 使用 sqoop 进行数据同步,把有可能用到的表直接灌到 ODS 层,ODS 使用 Hadoop(HDFS) 进行数据存储,以供后续的数据清洗。
  2. 使用 hive 对 ODS 中的数据进行查询、清洗和计算,并输出到 DW,DW 的存储仍使用 MySQL。
  3. 回归到 Web 业务层,进行相关需求的开发,这里可以把不同的需求理解为不同的 DM,进行数据的可视化展示或导出。
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    89 引用 • 113 回帖
  • 解决方案
    3 引用 • 6 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...