使用 AWS 和无服务器为您的企业设计数据分析引擎

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前, 星球 内第2个项目《仿小红书(微服务架构)》正在更新中。第1个项目:全栈前后端分离博客项目已经完结,演示地址:http://116.62.199.48/。采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 255 小节,累计 39w+ 字,讲解图:1716 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 1300+ 小伙伴加入,欢迎点击围观

本文由 AWS 高级开发人员倡导者 Wojciech Gawronski 撰写,并经许可发布。

据估计,到 2030 年,人类将产生高达 572 泽字节的数据海洋,相当于 5.72 亿拍字节。这就提出了一个问题:如何在不增加基础设施成本和花费数小时进行维护的情况下为此准备 IT 基础设施?其次,组织如何开始从收集到的信息中产生洞察力,而不必担心容量规划、基础设施和运营的复杂性?答案之一是在 AWS 云中使用无服务器数据分析。

“云数据分析的无服务器未来”研讨会下提供了动手练习,而本文展示了您可以在您的组织中使用的架构设计方法,以开始数据之旅并快速获得结果。

从商业案例开始

想象一下,您是推动 Serverlesspresso 初创公司发展的技术团队的一员。这家公司创造了一种交互式和创新的方式来在 IT 活动中提供咖啡(事实上,它是在 AWS re:Invent 2021 期间推出的)。开发人员以对咖啡因的渴望而闻名,市场规模显着增长。为了反映业务平台的高动态性,它是使用AWS 的纯无服务器服务构建的。

这种方法的优点包括:

  • 能够在 IT 事件之间缩减至 0,从而限制成本和所需的维护工作
  • 无需管理基础架构 - 仅配置
  • 应用进化架构,使平台具有新特性的快速扩展能力

这很好,但正如介绍中所述——数据呢?为了发展业务,在某些时候您必须实施数据策略。一个引擎不仅能够产生有形的、可操作的业务洞察力,而且还将成为保留有关 IT 事件的历史信息、收集新数据、动态调整当前流量并提供自动化预处理方式的解决方案和分析信息。

把它分解成更小的谜题

了解业务环境后,您必须进入设计阶段,这将导致实现。解决方案架构的行为是一个过程:一个专注于做出最佳决策以满足业务对技术的期望的过程。为了使流程更高效、更简单,值得将数据分析引擎分解成更小的部分。您必须解决一些谜语。

云数据分析的无服务器未来

看上面的图表。在左侧,您可以看到现有的实施 - 一个生成与咖啡订单、准备和分发相关的事件的系统。另一方面,您收集了存储在Amazon S3 中的历史数据。您必须设计和实现的新部分在右侧。在里面你可以很快发现 4 个问号,它们是:

  • 数据收集——您如何有效地从各种数据源获取数据?你在哪里保存它们?
  • 数据转换——如何将来自不同来源、不同格式的传入信息组合成一个通用模式?您如何丰富数据以提高其质量和可用性?
  • 数据分析——数据收集是否不言自明?您如何构建新的聚合来建立新的视角并更加了解趋势或加快报告的生成?
  • 数据可视化——最好的呈现方式是什么?哪些数据应该实时跟踪,哪些数据会进入上个月的活动报告?

上述问题只是帮助您设计最佳解决方案的示例。剩下的一件大事是:你应该使用什么样的数据存储?它应该是数据湖、数据仓库、常规数据库还是 NoSQL?

构建框架

在设计必须大规模工作、为不同业务和技术领域提供动力的现代数据解决方案时,值得考虑数据湖。简而言之,数据湖是一个中心位置,您可以在其中存储来自任意数量、任意大小和格式的通道的数据。与数据仓库相比,不同之处在于不需要模式规划以及数据关系。这种没有模式的松散方法引入了灵活性。

您还记得我们在数据分析解决方案中必须设计的阶段吗?创建一些具有命名职责并处理数据处理的某些阶段的数据层是一种很好的做法。例如:

  • 数据收集阶段——这会将未更改的原始数据上传到数据湖内的原始层。它将带来两个主要好处:通过分离改进数据质量控制,以及并行数据处理的能力,为组织的不同部分提供各种数据。
  • 数据转换阶段——这是一个单向过程,从数据湖中的原始层开始,可以执行多种操作:清理、重复数据删除、丰富、连接等。操作的输出应加载到清理或丰富的数据湖中的层。这是平台其余部分和其他系统的主要信息来源。
  • 数据分析和可视化阶段——根据分析的技术和类型,我们可以决定进一步丰富数据,并将它们加载到数据仓库、关系数据库或外部工具中。入口点始终来自数据湖的丰富层。最终目的地取决于用例。

一旦您清楚了数据策略,包括处理阶段、人员和应用程序的访问权限、转换步骤、通信和数据流,您就可以开始实施实际的解决方案。

数据采集

在第一步中,您必须在出现时捕获传入的咖啡事件,并将它们保存到数据湖内的原始层。要加速设置,您可以使用Amazon MSK 无服务器服务。它旨在提供一种运行Apache Kafka 的简单方法。 MSK Serverless 自动配置和扩展计算和存储资源,因此您可以按需使用它并为流式传输和保留的数据付费。

模块一:Serverlesspro Data Analytics的高层架构——数据采集

要真正实施一个完全自动化的过程,以近乎实时的方式从您的系统中捕获事件,然后将它们保存到数据湖中,您必须配置 Kafka Connect。您可以将连接器想象成代表您工作的代理,知道如何连接到数据生产者(您的系统)并将数据发送到 Kafka 主题。在主题的另一端(数据管道)是另一个知道如何与 Amazon S3 通信的连接器(代理)——这是我们分层数据湖的基础。

您有 3 种主要方法来配置连接器并将它们连接到现有的 Amazon MSK 无服务器集群:

  1. 通过AWS Fargate服务运行 Kafka Connect 连接器- 您可以将容器化连接器推送到容器存储库并使用无服务器解决方案运行它。这将是一个既可操作又具有成本效益的解决方案。
  2. 通过Amazon MSK Connect运行 Kafka Connect 连接器- 这是一种本机方法和向导驱动的配置。它是无服务器的、托管的和直接的。您可以将所有运营和基础设施繁重的工作卸载到 AWS。
  3. 在您管理的基础设施上通过容器运行 Kafka Connect 连接器——这可能是一种不错的测试和学习方法,但对于生产用例来说是不可持续的。如果您的实例终止,事件的获取将停止。

数据转换

当数据采集工作并近乎实时地捕获咖啡事件时,您应该查看它们携带的信息。了解数据质量、相关性和可能的​​丰富性是设计数据引擎的数据转换部分的关键部分。

想象一下:原始数据只能包含 ID 和其他字母数字值,很难从中得出含义。这是典型的,因为系统被设计为处理轻量级事件,每秒服务数千个请求而没有任何延迟。这意味着原始层目前在业务洞察力方面几乎没有价值。

克服这种挑战的一种方法是构建元数据存储来解释字段的含义以及字典,让您有机会使数据可读。

模块 2:Severlesspro 数据分析的高层架构 - 数据转换和丰富

上图是此类实现的示例。 Amazon DynamoDB存储字典和所有可在转换中使用的附加数据。如您所见,数据流很简单。您首先从原始层提取数据,使用实现逻辑的专用作业对其进行处理,然后将其保存到数据湖内的单独层。这种自动化在幕后是如何工作的?

  • 使用AWS Glue自动发现模式第一步,您必须能够在数据湖的原始层中创建现有信息的映射。尽管我们说过数据可以是非结构化的并且可以是多种格式,但您需要知道跨数据集有哪些字段可用,以便能够执行任何类型的操作。 AWS Glue 是一种无服务器数据集成服务,可以更轻松地发现、准备、移动和集成来自多个来源的数据,用于分析、机器学习 (ML) 和应用程序开发。在这种情况下,爬虫每 1 小时自动运行一次以对模式进行编目。
  • 使用Amazon EMR 无服务器丰富数据 Amazon EMR 中的这个选项使数据分析师和工程师能够运行开源大数据分析框架,而无需配置、管理和扩展集群或服务器。通过采用 Apache Spark(一种有助于 ML、流处理或图形分析的分布式处理框架和编程模型)并实现数据连接、重复数据删除、用有意义的字典值替换 ID 以及将最终数据集转换为Apache Parquet 的逻辑(旨在为分析操作提供最佳性能的二进制、基于列的格式),您将能够创建为最后阶段做好准备的集合:分析。

作业的输出保存到数据湖中的丰富层。由于该过程是无服务器的,因此您不必管理底层基础设施。配置基本参数和设置作业触发器(频率)后,该过程将以完全自动化的方式进行信息丰富。

数据仓库和可视化

您构建的数据采集和转换管道为最后一步(数据分析)奠定了坚实的基础。让数据湖中的所有咖啡事件都以丰富的格式出现,您必须找到一种方法来高效地查询它们并获得业务洞察力。在众多可能性中,使用灵活的云数据仓库似乎符合目的。

第 3 单元:Severlesspro 数据分析的高级架构 - 数据分析和可视化

数据仓库是信息的中央存储库,可以对其进行分析以做出更明智的决策。数据以规律的节奏或按需流入其中。业务用户依靠报告、仪表板和分析工具从他们的数据中提取见解、监控业务绩效并支持决策制定。

数据仓库架构由层组成。顶层是呈现报告的前端客户端,中间层由用于访问和分析数据的分析引擎组成,架构的底层是数据库服务器,加载和存储数据。在数据仓库中,我们对事实和维度进行操作,其中:

  • 事实 -这些是与业务或功能相关的测量事件。它是与时间相关的量化信息:例如,活动期间参观Serverlesspresso展位并订购咖啡的人是我们的业务领域,因此他们在活动期间流入系统的咖啡订单是事实。
  • 维度——这些是关于事实的信息集合。他们对事实记录进行分类和描述,这使他们能够为业务问题提供描述性答案。维度充当具有少量行的轻量级字典,因此它们对性能的影响很小。它们有许多属性,主要是文本的或时间的。这些属性在分析阶段用于从不同角度查看事实并提供过滤标准;例如,IT 事件元数据,如事件名称、开始时间、日期、参加人数等。

图中可见的Amazon Redshift Serverless使您可以轻松地在几秒钟内运行 PB 级分析以快速获得洞察力,而无需配置和管理您的数据仓库集群。 Amazon Redshift Serverless自动配置和扩展数据仓库容量,为要求苛刻且不可预测的工作负载提供高性能,并且您只需为使用的资源付费。

将数据湖中丰富层的数据加载到数据仓库后,您有 3 个基本选项可用于快速插入和进行分析:

  • 通过名为 psql 的PostgreSQL客户端(或任何其他与 JDBC 兼容的客户端)从连接到数据仓库的终端会话进行连接,并编写相关的OLAP查询。
  • 使用Amazon Redshift 查询编辑器 v2.0连接并编写相关查询。
  • Amazon QuickSight与作为数据源的数据仓库连接起来,并通过Amazon QuickSight Analysis探索和可视化可用数据。

成功实施上述三个阶段可将数据采集、处理和分析过程自动化到可以开始回答业务问题的程度,例如:

  • 到目前为止,每个事件分发了多少咖啡杯?
  • 到目前为止,贵公司的已交付、酿造、未交付或完全丢失的订单的百分比是多少?
  • 平均总提前期(订单到交货)和总酿造时间(订单到酿造)是多少?

现代数据分析见解

您无需拥有大量数据即可开始为您的业务生成见解。所提出的方法在很大程度上基于演化方法——从小处着手,然后发展壮大,确保每次演化都带来额外的业务价值。 AWS 云和无服务器使组织能够进行数据之旅:您无需拥有大量科学家和基础设施支持即可开始收集、处理系统已有数据并从中获取价值。基础设施的维护、配置和监控、自动化转换和处理方面的工作量减少,从而节省了允许进行更多试验的时间。

本文中描述的方法是其中一种可能性。此类解决方案的设计应始终从实际业务案例开始。如果您好奇并想通过动手练习学习,请访问“云数据分析的无服务器未来”研讨会。