当前位置:黑鲸出海 > 热点资讯 > 干货分享 >  在亚马逊云科技上构建智能湖仓(下)

在亚马逊云科技上构建智能湖仓(下)

发表时间:2021-05-31  来源:AWS  作者:Praful Kava & Changbin Gon  浏览:次  
在本文中,我们介绍了多种专用AWS服务,您可以利用它们构建起智能湖仓架构中的五个核心逻辑层。我们还提供多种选项,介绍如何在正确的工作中使用正确的AWS服务以实现良好的灵活性与丰富的功能性。

大数据处理

为了对智能湖仓存储层(Amazon S3与Amazon Redshift)上托管的大量半结构化、非结构化或高度结构化数据进行集成处理,您可以使用Apache Spark构建大数据处理作业,并在AWS Glue或Amazon EMR上加以运行。这些作业可以使用Spark的原生及其他开源连接器进行访问,并将Amazon Redshift中存储的关系型数据同Amazon S3中存储的复杂平面或分层结构化数据结合起来。处理完成后,这些作业可以将结果数据集存储回S3数据湖、Amazon Redshift数据仓库或者二者共同构成的智能湖仓存储层。

AWS Glue提供无服务器、按使用量计费的ETL功能,其ETL管道能够处理规模达数十TB的海量数据,且无需启动或管理任何服务器或集群。为了加快ETL开发,AWS Glue还能自动生成ETL代码并提供常用的数据结构与ETL转换(用于验证、清洗、转换及展平数据)。AWS Glue还提供内置功能,用于处理存储在Amazon Redshift以及S3数据湖内的数据。在同一作业之内,AWS Glue还可以加载并处理使用平面表格式存储的Amazon Redshift数据、以及其他使用常见开源格式(例如CSV、JSON、Parquet以及Avro)存储的S3数据湖托管数据集。AWS Glue ETL作业可通过公共Lake Formation目录(AWS Glue crawlers会爬取Amazon S3及Amazon Redshift以获取数据)访问这些数据,借此以统一方式引用Amazon Redshift与Amazon S3托管表。AWS Glue ETL还能够对分区数据执行增量处理。此外,AWS Glue也提供触发器与工作流功能,可用于构建包含作业依赖项、并发运行等多个步骤的端到端数据处理管道。

您可以自动扩展EMR集群,满足PB级别大数据处理管道的严苛资源需求。这些管道还可以使用不同的Amazon Elastic Compute Cloud(Amazon EC2)竞价实例队列,进一步改善资源成本优化效果。关于实例选项的更多详细信息,请参阅支持的实例类型。

运行在Amazon EMR上的基于Spark数据处理管道能够实现以下功能:

·Spark内置的读取器与写入器能够处理采用多种开源格式的数据湖托管数据集。

·开源Spark-Amazon Redshift连接器能够直接对Amazon Redshift数据仓库中的数据进行读取与写入。

要读取由数据湖托管的复杂结构化数据集schema,Amazon EMR上的Spark ETL作业可以接入Lake Formation目录。这是通过AWS Glue兼容性配合AWS身份与访问管理(IAM)策略共同实现,负责对指向AWS Glue表以及底层S3对象的访问进行分别授权。同样,Spark作业还可以使用Spark-Amazon Redshift连接器读取Amazon Redshift托管数据集的数据与schema。您也可以使用Spark及Apache Hudi构建高效的增量数据处理管道Amazon EMR。

近实时ETL

要执行多个现代分析用例,您需要以近实时方式执行以下操作:

·摄取大量高频或流式数据

·验证、清洗与丰富数据

·将数据放入智能湖仓存储以供消费

您可以使用以下方法构建起能够轻松扩展、并近实时处理大量数据的管道:

·Amazon Kinesis Data Analytics for SQL/Flink

·在AWS Glue或Amazon EMR上使用Spark Streaming

·将Kinesis Data Firehose与AWS Lambda相集成

Kinesis Data Analytics、AWS Glue与Kinesis Data Firehose可帮助您建立起近实时数据处理管道,且无需创建或管理任何计算基础设施。Kinesis Data Firehose与Kinesis Data Analytics管道能够弹性扩展以匹配源吞吐量,而基于Amazon EMR与AWS Glue的Spark Streaming作业则可以根据指定的扩展参数、在几分钟内完成规模扩展。

基于Kinesis Data Analytics for Flink/SQL的流式管道通常会从Amazon Kinesis Data Streams(位于我们智能湖仓架构的摄取层中)读取记录、对其进行转换,而后将处理完成的数据写入至Kinesis Data Firehose。Spark Streaming管道则通常从Kinesis Data Streams(位于我们智能湖仓架构的摄取层中)读取记录、对其进行转换,而后将处理完成的数据写入至另一Kinesis数据流,且后者又接入Kinesis Data Firehose交付流。Firehose交付流能够将处理后的数据交付至智能湖仓存储层内的Amazon S3或Amazon Redshift。要构建起简单、不涉及状态转换的近实时管道,您可以将数据直接摄取至Kinesis Data Firehose中,并使用Kinesis Data Firehose调用的Lambda函数对传入记录进行微批处理。Kinesis Data Firehose会将转换后的微批记录交付至智能湖仓存储层中的Amazon S3或Amazon Redshift。

凭借着将数据交付至Amazon S3与Amazon Redshift的能力,Kinesis Data Firehose得以为处理层中的近实时ETL管道提供统一的智能湖仓存储写入器接口。在Amazon S3上,Kinesis Data Firehose可以将数据存储在有效的Parquet或ORC文件中,您可以灵活使用ZIP、GZIP及Snappy等开源编解码器对这些文件进行压缩。

数据消费层

我们的智能湖仓参考架构提供多种专用AWS服务,能够让不同角色类型之间的数据消费方式互连互通,包括支持交互式SQL查询、商务智能与机器学习等多种分析用例。这些服务使用统一的智能湖仓接口访问存储在Amazon S3、Amazon Redshift以及Lake Formation目录中的所有数据与元数据。此外,各项服务还可以通过开放文件格式(例如JSON、Avro、Parquet以及ORC)使用Amazon Redshift表中存储的平面关系数据以及S3对象中存储的平面或复杂结构化或非结构化数据。

交互式SQL

要使用交互式SQL探索智能湖仓内存储的所有数据,商务分析师与数据科学家可以使用Amazon Redshift(配合Redshift Spectrum)或者Athena轻松实现。您可以运行SQL查询,这些查询会将Amazon Redshift集群中托管的平面、关系、结构化维度数据,连同Amazon S3中存储的TB级规模的平面或复杂结构化历史事实数据结合起来,而且允许在数据中使用JSON、Avro、Parquet以及ORC等开放文件格式。在Amazon S3中查询数据集时,Athena与Redshift Spectrum都将获取存储在Lake Formation目录中的schema,并将其应用于读取操作(schema-on-read)。您可以在Athena或Amazon Redshift各自的控制台上运行查询,也可以将面向JDBC或ODBC端点提交查询。关于更多详细信息,请参阅使用ODBC与JDBC驱动程序接入Amazon Athena,以及在Amazon Redshift中配置连接。

Athena能够针对存储在Amazon S3中的TB级数据运行复杂的ANSI SQL,而且您无需预先将其加载至数据库内。Athena具有无服务器特性,因此不存在需要设置或管理的基础设施,您只需要为运行查询所产生的数据扫描量付费。Athena还提供联合查询功能,允许在同一SQL查询中将Amazon S3托管的事实数据与Amazon Redshift集群内托管的维度表结合起来。Athena利用存储在Lake Formation目录内的数据集分区信息减少数据扫描量,由此更快提供结果并降低查询成本。您可以使用Athena CTAS语句存储重复的查询结果,这将进一步降低查询成本。

Amazon Redshift提供强大的SQL功能,可对智能湖仓存储(跨Amazon Redshift MPP集群与S3存储湖)内的超大型数据集进行快速在线分析处理(OLAP)。Amazon Redshift还提供功能强大的查询优化器,能够通过类似于PostgreSQL的语法编写出复杂的用户查询,并生成可在Amazon Redshift MPP集群与Redshift Spectrum节点队列(以查询Amazon S3中的数据)上运行的高性能查询计划。Amazon Redshift则提供结果缓存功能,可将同一查询的重复操作次数降低几个数量级,借此显著缩短查询运行时间。借助Amazon Redshift中的物化视图,您只需要对复杂join进行一次预先计算(后续以增量方式进行刷新),借此简化并加快用户所需编写的下游查询。Amazon Redshift还提供并发扩展,可在几秒钟内启动更多瞬态集群,借此支持几乎无限数量的并发查询。您可以将查询结果写入回Amazon Redshift原生表或者S3数据湖上托管的外部表(使用Redshift Spectrum)。

机器学习

数据科学家们往往需要探索、整理并特征化各类结构化与非结构化数据集,为机器学习模型的训练作业做好准备。智能湖仓接口(用于将Amazon Redshift与Athena及Spark接口配合使用的交互式SQL接口)能够为数据科学家提供以下功能,由此大大简化并加快数据准备进程:

·统一的Lake Formation目录,用于搜索及发现智能湖仓存储中托管的所有数据。

·基于Amazon Redshift SQL与Athena的交互式SQL功能,用于访问、浏览及转换智能湖仓存储中的所有数据。

·基于Spark的统一访问机制,能够整理并转换智能湖仓存储中托管的所有数据集(包括结构化与非结构化),并将其转换为特征集。

接下来,数据科学家可以将Amazon SageMaker接入智能湖仓的存储层并访问训练特征集,借此完成机器学习模型的开发、训练与部署。

SageMaker是一项完全托管服务,提供一套名为SageMaker Studio交互式开发环境(IDE)以构建、训练及部署机器学习的各组件。在Studio中,您可以使用统一的可视化界面统一上传数据、创建新notebook、训练及调整模型、在各步骤间往来移动以调整实验过程、比较结果并将模型部署至生产环境中。

SageMaker还提供托管Jupyter notebook,您只需单击几下即可启动notebook。SageMaker notebook提供弹性计算资源、git集成、轻松共享、预置机器学习算法、几十种现成机器学习示例以及AWS Marketplace集成功能,您可以轻松部署数百种经过预训练的算法。SageMaker notebook还预先配置了所有主要深度学习框架,包括TensorFlow、PyTorch、Apache MXNet、Chainer、Keras、Gluon、Horovod、Scikit-learn以及Deep Graph Library等。

各机器学习模型在SageMaker托管的计算实例上进行训练,其中也包括成本效益极高的EC2竞价实例。您可以使用SageMaker Experiments组织多项训练作业,也可以使用SageMaker的内置算法、自定义算法或AWS Marketplace提供的数百种算法构建训练作业。SageMaker Debugger则提供对于模型训练作业的完全可见性。最后,SageMaker也为机器学习训练作业提供强大的自动超参数调优选项。

只需要单击几下,您就可以将SageMaker训练完成的模型部署至生产中,并轻松通过一组完全托管EC2实例进行扩展。您可以在多种EC2实例类型中做出选择,并附加具有成本效益的GPU驱动实例实现推理加速。模型部署完成后,SageMaker即可监控关键模型指标以提高推理准确性,同时检测一切概念漂移迹象。

商务智能

Amazon QuickSight提供无服务器功能,可供您轻松创建并发布包含丰富信息的交互式商务智能仪表板。商务分析师们可以使用Athena或Amazon Redshift的交互式SQL接口,通过智能湖仓存储中的数据为QuickSight仪表板提供素材支持。此外,您也可以直接将QuickSight接入可操作数据库(例如MS SQL、Postgres)以及各类SaaS应用(例如Salesforce、Square以及ServiceNow等)。为了保证仪表板拥有出色的性能表现,QuickSight还提供一款名为SPICE的内存缓存与计算引擎。SPICE能够自动复制数据以实现高可用性,允许成千上万用户同时执行快速交互式分析,并有效保护底层数据基础设施。

QuickSight凭借开箱即用、自动生成的机器学习洞见(包括预测、异常检测与叙述重点等)极大丰富了仪表板信息与视觉效果。QuickSight与SageMaker原生集成,可在商务智能仪表板上实现其他基于机器学习模型的自定义洞见。您可以使用QuickSIght应用程序经由任意设备访问QuickSight仪表板,也可以将仪表板灵活嵌入至Web应用程序、门户与网站中。QuickSight能够自动扩展至成千上万用户,并以经济高效的按会话计费方式提供极具性价比的服务体验。

总结

基于专用服务组合建立的智能湖仓架构将帮助您从海量数据中快速获取面向所有用户的洞察见解,同时充分预留升级空间,供您随后续发展随时引入新的分析方法与技术成果。

在本文中,我们介绍了多种专用AWS服务,您可以利用它们构建起智能湖仓架构中的五个核心逻辑层。我们还提供多种选项,介绍如何在正确的工作中使用正确的AWS服务以实现良好的灵活性与丰富的功能性。

注:文章源自于互联网,如有侵权,请联系客服删除。
19951839869
黑鲸出海客服