大数据平台架构设计探究

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 本文介绍了一些数据平台设计思路来帮助业务减少数据开发中的痛点和难点。

本文首发于 vivo互联网技术 微信公众号 
链接:https://mp.weixin.qq.com/s/npRRRDqNUHNjbybliFxOxA
作者:刘延江

近年来,随着IT技术与大数据、机器学习、算法方向的不断发展,越来越多的企业都意识到了数据存在的价值,将数据作为自身宝贵的资产进行管理,利用大数据和机器学习能力去挖掘、识别、利用数据资产。如果缺乏有效的数据整体架构设计或者部分能力缺失,会导致业务层难以直接利用大数据大数据,大数据和业务产生了巨大的鸿沟,这道鸿沟的出现导致企业在使用大数据的过程中出现数据不可知、需求难实现、数据难共享等一系列问题,本文介绍了一些数据平台设计思路来帮助业务减少数据开发中的痛点和难点。

本文主要包括以下几个章节:

  1. 本文第一部分介绍一下大数据基础组件和相关知识。

  2. 第二部分会介绍lambda架构和kappa架构。

  3. 第三部分会介绍lambda和kappa架构模式下的一般大数据架构

  4. 第四部分介绍裸露的数据架构体系下数据端到端难点以及痛点。

  5. 第五部分介绍优秀的大数据架构整体设计

  6. 从第五部分以后都是在介绍通过各种数据平台和组件将这些大数据组件结合起来打造一套高效、易用的数据平台来提高业务系统效能,让业务开发不在畏惧复杂的数据开发组件,无需关注底层实现,只需要会使用SQL就可以完成一站式开发,完成数据回流,让大数据不再是数据工程师才有的技能。

一、大数据技术栈

大数据整体流程涉及很多模块,每一个模块都比较复杂,下图列出这些模块和组件以及他们的功能特性,后续会有专题去详细介绍相关模块领域知识,例如数据采集、数据传输、实时计算、离线计算、大数据储存等相关模块。

二、lambda架构和kappa架构

目前基本上所有的大数据架构都是基于lambda和kappa架构,不同公司在这两个架构模式上设计出符合该公司的数据体系架构。lambda 架构使开发人员能够构建大规模分布式数据处理系统。它具有很好的灵活性和可扩展性,也对硬件故障和人为失误有很好的容错性,关于lambda架构可以在网上搜到很多相关文章。而kappa架构解决了lambda架构存在的两套数据加工体系,从而带来的各种成本问题,这也是目前流批一体化研究方向,很多企业已经开始使用这种更为先进的架构。

Lambda架构

Kappa架构

三、kappa架构和lambda架构下的大数据架构

目前各大公司基本上都是使用kappa架构或者lambda架构模式,这两种模式下大数据整体架构在早期发展阶段可能是下面这样的:

四、数据端到端痛点

虽然上述架构看起来将多种大数据组件串联起来实行了一体化管理,但是接触过数据开发的人会感受比较强烈,这样的裸露架构业务数据开发需要关注很多基础工具的使用,实际数据开发中存在很多痛点与难点,具体表现在下面一些方面。

  1. 缺乏一套数据开发IDE来管理整个数据开发环节,长远的流程无法管理起来。

  2. 没有产生标准数据建模体系,导致不同数据工程师对指标理解不同计算口径有误。

  3. 大数据组件开发要求高,普通业务去直接使用Hbase、ES等技术组件会产生各种问题。

  4. 基本上每个公司大数据团队都会很复杂,涉及到很多环节,遇到问题难以定位难以找到对应负责人。

  5. 难以打破数据孤岛,跨团队跨部门数据难以共享,互相不清楚对方有什么数据。

  6. 需要维护两套计算模型批计算和流计算,难以上手开发,需要提供一套流批统一的SQL。

  7. 缺乏公司层面的元数据体系规划,同一条数据实时和离线难以复用计算,每次开发任务都要各种梳理。

基本上大多数公司在数据平台治理上和提供开放能力上都存在上述问题和痛点。在复杂的数据架构下,对于数据适用方来说,每一个环节的不清晰或者一个功能的不友好,都会让复杂链路变更更加复杂起来。想要解决这些痛点,就需要精心打磨每一个环节,将上面技术组件无缝衔接起来,让业务从端到端使用数据就像写SQL查询数据库一样简单。

五、优秀的大数据整体架构设计

提供多种平台以及工具来助力数据平台:多种数据源的数据采集平台、一键数据同步平台、数据质量和建模平台、元数据体系、数据统一访问平台、实时和离线计算平台、资源调度平台、一站式开发IDE。

六、元数据-大数据体系基石

元数据是打通数据源、数据仓库、数据应用,记录了数据从产生到消费的完整链路。元数据包含静态的表、列、分区信息(也就是MetaStore)。动态的任务、表依赖映射关系;数据仓库的模型定义、数据生命周期;以及ETL任务调度信息、输入输出等元数据是数据管理、数据内容、数据应用的基础。例如可以利用元数据构建任务、表、列、用户之间的数据图谱;构建任务DAG依赖关系,编排任务执行序列;构建任务画像,进行任务质量治理;提供个人或BU的资产管理、计算资源消耗概览等。

可以认为整个大数据数据流动都是依靠元数据来管理的,没有一套完整的元数据设计,就会出现上面的数据难以追踪、权限难以把控、资源难以管理、数据难以共享等等问题。

很多公司都是依靠hive来管理元数据,但是个人认为在发展一定阶段还是需要自己去建设元数据平台来匹配相关的架构。

关于元数据可以参考饿了么一些实战:https://www.jianshu.com/p/f60b2111e414

七、流批一体化计算

如果维护两套计算引擎例如离线计算Spark和实时计算Flink,那么会对使用者造成极大困扰,既需要学习流计算知识也需要批计算领域知识。如果实时用Flink离线用Spark或者Hadoop,可以开发一套自定义的DSL描述语言去匹配不同计算引擎语法,上层使用者无需关注底层具体的执行细节,只需要掌握一门DSL语言,就可以完成Spark和Hadoop以及Flink等等计算引擎的接入。

八、实时与离线ETL平台

ETL 即 Extract-Transform-Load,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL 一词较常用在数据仓库,但其对象并不限于数据仓库。一般而言ETL平台在数据清洗、数据格式转换、数据补全、数据质量管理等方面有很重要作用。作为重要的数据清洗中间层,一般而言ETL最起码要具备下面几个功能:

  1. 支持多种数据源,例如消息系统、文件系统等

  2. 支持多种算子,过滤、分割、转换、输出、查询数据源补全等算子能力

  3. 支持动态变更逻辑,例如上述算子通过动态jar方式提交可以做到不停服发布变更。

九、智能统一查询平台

大多数数据查询都是由需求驱动,一个需求开发一个或者几个接口,编写接口文档,开放给业务方调用,这种模式在大数据体系下存在很多问题:

  1. 这种架构简单,但接口粒度很粗,灵活性不高,扩展性差,复用率低.随着业务需求的增加,接口的数量大幅增加,维护成本高企。

  2. 同时,开发效率不高,这对于海量的数据体系显然会造成大量重复开发,难以做到数据和逻辑复用,严重降低业务适用方体验。

  3. 如果没有统一的查询平台直接将Hbase等库暴露给业务,后续的数据权限运维管理也会比较难,接入大数据组件对于业务适用方同样很痛苦,稍有不慎就会出现各种问题。

通过一套智能查询解决上述大数据查询痛点问题

十、数仓建模规范体系

随着业务复杂度和数据规模上升,混乱的数据调用和拷贝,重复建设带来的资源浪费,数据指标定义不同而带来的歧义、数据使用门槛越来越高。以笔者见证实际业务埋点和数仓使用为例,同一个商品名称有些表字段是good_id,有些叫spu_id,还有很多其他命名,对于想利用这些数据人会造成极大困扰。因此没有一套完整的大数据建模体系,会给数据治理带来极大困难,具体表现在下面几个方面:

  1. 数据标准不一致,即使是同样的命名,但定义口径却不一致。例如,仅uv这样一个指标,就有十几种定义。带来的问题是:都是uv,我要用哪个?都是uv,为什么数据却不一样?

  2. 造成巨大研发成本,每个工程师都需要从头到尾了解研发流程的每个细节,对同样的“坑”每个人都会重新踩一遍,对研发人员的时间和精力成本造成浪费。这也是目标笔者遇到的困扰,想去实际开发提取数据太难。

  3. 没有统一的规范标准管理,造成了重复计算等资源浪费。而数据表的层次、粒度不清晰,也使得重复存储严重。

因此大数据开发和数仓表设计必须要坚持设计原则,数据平台可以开发平台来约束不合理的设计,例如阿里巴巴的OneData体。一般而言,数据开发要经过按照下面的指导方针进行:

有兴趣的可以参考阿里巴巴的OneData设计体系。

十一、一键集成平台

很简单的就能将各种各式数据一键采集到数据平台,通过数据传输平台将数据无缝衔接到ETL平台。ETL通过和元数据平台打通,规范Schema定义,然后将数据转换、分流流入到实时与离线计算平台,后续任何针对该数据离线和实时处理,只需要申请元数据表权限就可以开发任务完成计算。数据采集支持多种各式数据来源,例如binlog、日志采集、前端埋点、kafka消息队列等

十二、数据开发IDE-高效的端到端工具

高效的数据开发一站式解决工具,通过IDE可以完成实时计算与离线计算任务开发,将上述平台全部打通提供一站式解决方案。数据开发IDE提供数据集成、数据开发、数据管理、数据质量和数据服务等全方位的产品服务,一站式开发管理的界面,通过数据IDE完成对数据进行传输、转换和集成等操作。从不同的数据存储引入数据,并进行转化和开发,最后将处理好的数据同步至其他数据系统。通过高效率的大数据开发IDE,基本上让大数据工程师可以屏蔽掉各种痛点,将上述多种平台能力结合起来,让大数据开发可以向写SQL一样简单。

关于数据开发工具可以参考阿里云的DataWorks

解决端到端难点还需要其他若干能力辅助,这里就不再叙述,有兴趣的同学可以自行研究。

十三、其他

完整的数据体系研发还包括告警与监控中心、资源调度中心、资源计算隔离、数据质量检测、一站式数据加工体系,这里就不再继续讨论了。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
1月前
|
大数据
【赵渝强老师】大数据主从架构的单点故障
大数据体系架构中,核心组件采用主从架构,存在单点故障问题。为提高系统可用性,需实现高可用(HA)架构,通常借助ZooKeeper来实现。ZooKeeper提供配置维护、分布式同步等功能,确保集群稳定运行。下图展示了基于ZooKeeper的HDFS HA架构。
|
2月前
|
SQL 存储 分布式计算
ODPS技术架构深度剖析与实战指南——从零开始掌握阿里巴巴大数据处理平台的核心要义与应用技巧
【10月更文挑战第9天】ODPS是阿里巴巴推出的大数据处理平台,支持海量数据的存储与计算,适用于数据仓库、数据挖掘等场景。其核心组件涵盖数据存储、计算引擎、任务调度、资源管理和用户界面,确保数据处理的稳定、安全与高效。通过创建项目、上传数据、编写SQL或MapReduce程序,用户可轻松完成复杂的数据处理任务。示例展示了如何使用ODPS SQL查询每个用户的最早登录时间。
154 1
|
2月前
|
存储 分布式计算 大数据
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
66 3
|
2天前
|
存储 SQL 分布式计算
大数据时代的引擎:大数据架构随记
大数据架构通常分为四层:数据采集层、数据存储层、数据计算层和数据应用层。数据采集层负责从各种源采集、清洗和转换数据,常用技术包括Flume、Sqoop和Logstash+Filebeat。数据存储层管理数据的持久性和组织,常用技术有Hadoop HDFS、HBase和Elasticsearch。数据计算层处理大规模数据集,支持离线和在线计算,如Spark SQL、Flink等。数据应用层将结果可视化或提供给第三方应用,常用工具为Tableau、Zeppelin和Superset。
30 8
|
1月前
|
SQL 数据采集 分布式计算
【赵渝强老师】基于大数据组件的平台架构
本文介绍了大数据平台的总体架构及各层的功能。大数据平台架构分为五层:数据源层、数据采集层、大数据平台层、数据仓库层和应用层。其中,大数据平台层为核心,负责数据的存储和计算,支持离线和实时数据处理。数据仓库层则基于大数据平台构建数据模型,应用层则利用这些模型实现具体的应用场景。文中还提供了Lambda和Kappa架构的视频讲解。
164 3
【赵渝强老师】基于大数据组件的平台架构
|
2天前
|
存储 负载均衡 监控
揭秘 Elasticsearch 集群架构,解锁大数据处理神器
Elasticsearch 是一个强大的分布式搜索和分析引擎,广泛应用于大数据处理、实时搜索和分析。本文深入探讨了 Elasticsearch 集群的架构和特性,包括高可用性和负载均衡,以及主节点、数据节点、协调节点和 Ingest 节点的角色和功能。
9 0
|
2月前
|
SQL 存储 分布式计算
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
41 9
|
2月前
|
存储 SQL 分布式计算
湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
【10月更文挑战第7天】湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
144 1
|
2月前
|
存储 分布式计算 druid
大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
69 3
|
2月前
|
存储 SQL 缓存
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
从 3.0 系列版本开始,Apache Doris 开始支持存算分离模式,用户可以在集群部署时选择采用存算一体模式或存算分离模式。基于云原生存算分离的架构,用户可以通过多计算集群实现查询负载间的物理隔离以及读写负载隔离,并借助对象存储或 HDFS 等低成本的共享存储系统来大幅降低存储成本。
Apache Doris 3.0 里程碑版本|存算分离架构升级、湖仓一体再进化
下一篇
DataWorks