每天,亚马逊设备都会处理和分析来自全球运输、库存、容量、供应、销售、营销、生产商和客户服务团队的数十亿笔交易。 此数据用于采购设备库存以满足亚马逊客户的需求。 随着数据量同比呈现两位数的百分比增长率,以及 2021 年 COVID 大流行扰乱全球物流,扩展和生成近实时数据变得更加重要。
这篇文章向您展示了我们如何迁移到构建在 AWS 上的无服务器数据湖,该数据湖自动使用来自多个来源和不同格式的数据。 此外,它还为我们的数据科学家和工程师创造了更多机会,让他们可以使用人工智能和机器学习 (ML) 服务来持续提供和分析数据。
挑战和设计问题
我们的遗留架构主要用于 亚马逊弹性计算云 (Amazon EC2) 从各种内部异构数据源和 REST API 中提取数据,结合 亚马逊简单存储服务 (Amazon S3) 加载数据和 亚马逊Redshift 用于进一步分析和生成采购订单。
我们发现这种方法存在一些缺陷,因此推动了以下方面的改进:
- 开发速度 – 由于缺乏模式的统一和发现,这是运行时失败的主要原因,开发人员经常花时间处理运维问题。
- 可扩展性 – 大多数这些数据集在全球范围内共享。 因此,我们在查询数据时必须满足缩放限制。
- 最少的基础设施维护 – 当前进程根据数据源跨越多个计算。 因此,减少基础设施维护至关重要。
- 对数据源变化的响应 – 我们当前的系统从各种异构数据存储和服务中获取数据。 这些服务的任何更新都需要数月的开发周期。 这些数据源的响应时间对我们的主要利益相关者至关重要。 因此,我们必须采取数据驱动的方式来选择高性能的架构。
- 存储和冗余 – 由于异构数据存储和模型,存储来自不同业务利益相关者团队的不同数据集具有挑战性。 因此,将版本控制与增量数据和差异数据进行比较将提供生成更优化计划的非凡能力
- 逃犯和可及性 – 由于物流的多变性,一些业务利益相关者团队需要按需分析数据并为采购订单生成近实时的最优计划。 这引入了轮询和推送数据以近乎实时地访问和分析的需要。
实施策略
基于这些需求,我们改变策略并开始分析每个问题以确定解决方案。 在架构上,我们选择了无服务器模型,数据湖架构行动线指的是我们确定的所有架构差距和具有挑战性的功能都是改进的一部分。 从操作的角度来看,我们设计了一个新的共享责任模型来使用数据摄取 AWS胶水 而不是在 Amazon EC2 上设计的用于提取数据的内部服务(REST API)。 我们也用过 AWS Lambda 用于数据处理。 然后我们选择了 亚马逊雅典娜 作为我们的查询服务。 为了进一步优化和提高数据消费者的开发速度,我们添加了 Amazon DynamoDB 作为登陆数据湖的不同数据源的元数据存储。 这两个决定推动了我们做出的每一个设计和实施决定。
下图说明了架构
在接下来的部分中,我们将在流程中移动时更详细地查看体系结构中的每个组件。
用于 ETL 的 AWS Glue
为了在支持新业务数据源规模的同时满足客户需求,在查询各种数据源时具有高度的敏捷性、可扩展性和响应能力对我们来说至关重要。
AWS Glue 是一种无服务器数据集成服务,可让分析用户轻松发现、准备、移动和集成来自多个来源的数据。 您可以将其用于分析、ML 和应用程序开发。 它还包括用于创作、运行作业和实施业务工作流的额外生产力和 DataOps 工具。
借助 AWS Glue,您可以发现并连接到 70 多个不同的数据源,并在一个集中的数据目录中管理您的数据。 您可以直观地创建、运行和监控提取、转换和加载 (ETL) 管道,以将数据加载到数据湖中。 此外,您还可以使用 Athena 立即搜索和查询编目数据, 亚马逊电子病历及 亚马逊红移频谱.
AWS Glue 使我们能够轻松连接到各种数据存储中的数据,根据需要编辑和清理数据,并将数据加载到 AWS 预配置的存储中以获得统一视图。 可以按需安排或调用 AWS Glue 作业,以从客户端资源和数据湖中提取数据。
这些工作的一些职责如下:
- 提取源实体并将其转换为数据实体
- 丰富数据以包含年、月和日以便更好地编目,并包含快照 ID 以便更好地查询
- 为 Amazon S3 执行输入验证和路径生成
- 基于源系统关联认可的元数据
从内部服务查询 REST API 是我们的核心挑战之一,考虑到最小的基础设施,我们想在这个项目中使用它们。 AWS Glue 连接器帮助我们遵守要求和目标。 为了从 REST API 和其他数据源查询数据,我们使用了 PySpark 和 JDBC 模块。
AWS Glue 支持多种连接类型。 有关详细信息,请参阅 AWS Glue 中 ETL 的连接类型和选项.
S3 存储桶作为着陆区
我们使用 S3 存储桶作为提取数据的直接着陆区,并对其进行了进一步处理和优化。
Lambda 作为 AWS Glue ETL 触发器
我们在 S3 存储桶上启用了 S3 事件通知以触发 Lambda,从而进一步对我们的数据进行分区。 数据按 InputDataSetName、Year、Month 和 Date 进行分区。 在此数据之上运行的任何查询处理器都将只扫描数据的一个子集,以实现更好的成本和性能优化。 我们的数据可以以各种格式存储,例如 CSV、JSON 和 Parquet。
对于我们的大多数用例来说,原始数据并不是生成最佳计划的理想选择,因为它通常有重复或不正确的数据类型。 最重要的是,数据采用多种格式,但我们很快修改了数据并观察到使用 Parquet 格式显着提高了查询性能。 在这里,我们使用了其中一个性能提示 Amazon Athena 的十大性能调优技巧.
用于 ETL 的 AWS Glue 作业
我们想要更好的数据隔离和可访问性,因此我们选择使用不同的 S3 存储桶来进一步提高性能。 我们使用相同的 AWS Glue 作业将数据进一步转换并加载到所需的 S3 存储桶中,并将提取的一部分元数据加载到 DynamoDB 中。
DynamoDB 作为元数据存储
现在我们有了数据,各种业务利益相关者进一步使用它。 这给我们留下了两个问题:哪些源数据驻留在数据湖中以及什么版本。 我们选择 DynamoDB 作为我们的元数据存储,它为消费者提供最新的详细信息以有效地查询数据。 我们系统中的每个数据集都由快照 ID 唯一标识,我们可以从我们的元数据存储中搜索它。 客户端使用 API 访问此数据存储。
Amazon S3 作为数据湖
为了获得更好的数据质量,我们将丰富的数据提取到另一个具有相同 AWS Glue 作业的 S3 存储桶中。
AWS Glue 爬虫
爬虫是使我们能够响应模式更改的“秘方”。 在整个过程中,我们选择让每个步骤尽可能与模式无关,这允许任何模式更改流过,直到它们到达 AWS Glue。 使用爬虫,我们可以维护架构发生的不可知更改。 这帮助我们自动从 Amazon S3 抓取数据并生成架构和表格。
AWS Glue数据目录
数据目录帮助我们将目录维护为 Amazon S3 中数据位置、架构和运行时指标的索引。 Data Catalog 中的信息存储为元数据表,其中每个表指定一个数据存储。
用于 SQL 查询的 Athena
Athena 是一种交互式查询服务,可以使用标准 SQL 轻松分析 Amazon S3 中的数据。 Athena 是无服务器的,因此无需管理基础设施,您只需为运行的查询付费。 我们将操作稳定性和提高开发速度视为我们的关键改进因素。
我们进一步优化了查询 Athena 的过程,以便用户可以通过创建以下内容插入值和查询以从 Athena 中获取数据:
- An AWS云开发套件 (AWS CDK) 模板来创建 Athena 基础设施和 AWS身份和访问管理 (IAM) 角色以从任何帐户访问数据湖 S3 存储桶和数据目录
- 一个库,以便客户端可以提供 IAM 角色、查询、数据格式和输出位置以启动 Athena 查询并获取在他们选择的存储桶中运行的查询的状态和结果。
查询 Athena 分为两步:
- 开始查询执行 – 这将启动查询运行并获取运行 ID。 用户可以提供存储查询输出的输出位置。
- 获取查询执行 – 这会获取查询状态,因为运行是异步的。 成功后,您可以查询 S3 文件中的输出或通过 API.
启动查询运行和获取结果的辅助方法将在库中。
数据湖元数据服务
该服务是定制开发的,与 DynamoDB 交互以获取 REST API 形式的元数据(数据集名称、快照 ID、分区字符串、时间戳和数据的 S3 链接)。 发现模式后,客户端使用 Athena 作为查询处理器来查询数据。
由于所有具有快照 ID 的数据集都已分区,因此连接查询不会导致全表扫描,而只会导致 Amazon S3 上的分区扫描。 我们使用 Athena 作为我们的查询处理器,因为它可以轻松管理我们的查询基础设施。 稍后,如果我们觉得需要更多东西,我们可以使用 Redshift Spectrum 或 Amazon EMR。
结论
Amazon Devices 团队通过使用 AWS Glue 迁移到数据湖架构发现了巨大的价值,这使多个全球业务利益相关者能够以更高效的方式获取数据。 这使团队能够通过使用适当的业务逻辑近乎实时地分析不同的数据集来生成设备采购订单的最佳计划,以解决供应链、需求和预测方面的问题。
从运营的角度来看,投资已经开始产生回报:
- 它标准化了我们的摄取、存储和检索机制,节省了入职时间。 在实施该系统之前,一个数据集需要 1 个月的时间才能上线。 由于我们的新架构,我们能够在不到 15 个月的时间内加入 2 个新数据集,这将我们的敏捷性提高了 70%。
- 它消除了扩展瓶颈,创建了一个可以快速扩展到数千次运行的同构系统。
- 该解决方案在接受任何输入之前添加了架构和数据质量验证,并在发现数据质量违规时拒绝输入。
- 它使检索数据集变得容易,同时支持需要版本化输入的未来模拟和回测器用例。 这将使启动和测试模型更加简单。
- 该解决方案创建了一个通用基础架构,可以轻松扩展到 DIAL 中在数据摄取、存储和检索用例方面存在类似问题的其他团队。
- 我们的运营成本下降了近 90%。
- 我们的数据科学家和工程师可以高效地访问这个数据湖,以执行其他分析,并采用预测方法作为未来机会,为采购订单生成准确的计划。
这篇文章中的步骤可以帮助您计划使用 AWS 托管服务构建类似的现代数据策略,以从不同来源提取数据、自动创建元数据目录、在数据湖和数据仓库之间无缝共享数据,并在事件中创建警报编排的数据工作流失败。
关于作者
阿维纳什科鲁里 是 AWS 的高级解决方案架构师。 他在 Amazon Alexa 和 Devices 工作,构建和设计现代分布式解决方案。 他热衷于在 AWS 上构建经济高效且高度可扩展的解决方案。 在业余时间,他喜欢烹饪融合食谱和旅行。
维尔马 是 Amazon.com 的高级软件工程师。 他自 2015 年以来一直在亚马逊工作,通过直接影响和改善亚马逊客户生活的技术解决现实世界中的挑战。 在业余时间,他喜欢徒步旅行。
- SEO 支持的内容和 PR 分发。 今天得到放大。
- 柏拉图区块链。 Web3 元宇宙智能。 知识放大。 访问这里。
- Sumber: https://aws.amazon.com/blogs/big-data/how-amazon-devices-scaled-and-optimized-real-time-demand-and-supply-forecasts-using-serverless-analytics/
- 1
- 10
- 100
- 2021
- 70
- a
- 对,能力--
- Able
- ACCESS
- 访问
- 访问
- 认可
- 精准的
- 横过
- 操作
- 添加
- 额外
- AI
- Alexa的
- 所有类型
- 允许
- 已经
- Amazon
- 亚马逊alexa
- Amazon EC2
- 亚马逊电子病历
- Amazon.com
- 分析
- 分析
- 分析
- 分析
- 和
- 另一个
- API
- APIs
- 应用领域
- 应用程序开发
- 的途径
- 适当
- 建筑的
- 架构
- 地区
- 创作
- 自动
- AWS
- AWS胶水
- 背部
- 基于
- 因为
- before
- 更好
- 之间
- 十亿美元
- 建立
- 建
- 商业
- 被称为
- 容量
- 例
- 检索目录
- 目录
- 集中
- 链
- 挑战
- 挑战
- 更改
- 选择
- 选择
- 客户
- 客户
- 云端技术
- COM的
- 组合
- 相当常见
- 比较
- 元件
- 计算
- 分享链接
- 地都
- 考虑
- 考虑
- 消耗
- 消费者
- 一直
- 烹调
- 核心
- 价格
- 经济有效
- 成本
- 可以
- Covid
- 履带
- 创建信息图
- 创建
- 创造
- 危急
- 电流
- 习俗
- 顾客
- 客户服务
- 合作伙伴
- 周期
- data
- 数据集成
- 数据湖
- 数据处理
- 数据质量
- 数据策略
- 数据仓库
- 数据驱动
- 数据集
- 日期
- 天
- 处理
- 决定
- 决定
- 学位
- 需求
- 需求
- 根据
- 设计
- 设计
- 细节
- 详情
- 决心
- 发达
- 开发商
- 开发
- 研发支持
- 设备
- 不同
- 直接
- 通过各种方式找到
- 发现
- 发现
- 分布
- 不同
- 不会
- 重复
- 每
- 容易
- 只
- 有效
- 或
- 启用
- 使
- 工程师
- 工程师
- 丰富
- 实体
- 醚(ETH)
- 活动
- 所有的
- 提取
- 提取数据
- 因素
- 失败
- 堕落
- 特征
- 少数
- 文件
- 流
- 以下
- 如下
- 收益预测
- 申请
- 格式
- 发现
- 止
- ,
- 进一步
- 此外
- 聚变
- 未来
- 收益
- 生成
- 发电
- 代
- 得到
- 越来越
- 全球
- 全球业务
- 地球
- 目标
- 事业发展
- 有
- 帮助
- 帮助
- 此处
- 高
- 高性能
- 高度
- 徒步旅行
- 创新中心
- HTML
- HTTPS
- IAM
- 理想
- 确定
- 鉴定
- 身分
- 即时
- 立即
- 影响力故事
- 履行
- 实施
- 改善
- 改善
- 改进
- 改善
- in
- 包括
- 包括
- 增加
- 指数
- 信息
- 基础设施
- 输入
- 代替
- 整合
- 积分
- 互动
- 交互
- 内部
- 推出
- 库存
- 投资
- 问题
- 问题
- IT
- 工作
- 工作机会
- 加入
- JSON
- 键
- 缺乏
- 湖泊
- 着陆
- 最新
- 发射
- 学习
- 遗产
- 自学资料库
- 生活
- 范围
- Line
- 友情链接
- 加载
- 圖書分館的位置
- 物流
- 看
- 机
- 机器学习
- 制成
- 保持
- 保养
- 使
- 制作
- 管理
- 管理的
- 营销
- 满足
- 元数据
- 方法
- 指标
- 最小
- ML
- 模型
- 模型
- 现代
- 改性
- 模块
- 显示器
- 月
- 个月
- 更多
- 最先进的
- 移动
- 移动
- 多
- 姓名
- 自然
- 需求
- 打印车票
- 全新
- 通知
- 板载
- 前期洽谈
- 一
- 操作
- 操作
- 机会
- ZAP优势
- 最佳
- 优化
- 优化
- 优化
- 附加选项
- 订单
- 其他名称
- 流感大流行
- 部分
- 情
- 径
- 百分比
- 演出
- 性能
- 透视
- 地方
- 计划
- 计划
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 可能
- 帖子
- Prepare
- 主要
- 小学
- 问题
- 过程
- 处理
- 处理器
- 生产者
- 生产力
- 生产率
- 项目
- 提供
- 提供
- 采购
- 推动
- 质量
- 有疑问吗?
- 很快
- 率
- 原
- 原始数据
- 达到
- 真实的世界
- 实时的
- 原因
- 食谱
- 减少
- 指
- 卓越
- 去除
- 必须
- 需求
- 岗位要求
- 资源
- 响应
- 责任
- 责任
- 响应
- REST的
- 导致
- 角色
- 角色
- 运行
- 运行
- 销售
- 同
- 保存
- 可扩展性
- 可扩展性
- 鳞片
- 缩放
- 浏览
- 预定
- 科学家
- 无缝
- 搜索
- 部分
- 前辈
- 无服务器
- 服务
- 特色服务
- Share
- 共用的,
- 配送服务
- 作品
- 显著
- 类似
- 简易
- 自
- 单
- 快照
- So
- 软件
- 软件工程师
- 方案,
- 解决方案
- 解决
- 解决
- 东西
- 来源
- 来源
- 跨度
- 光谱
- 花费
- SQL
- 稳定性
- 利益相关者
- 利益相关者
- 标准
- 开始
- 开始
- 开始
- 启动
- Status
- 步
- 步骤
- 存储
- 商店
- 存储
- 商店
- 策略
- 策略
- 成功
- 这样
- 供应
- 供应链
- 支持
- 支持
- 系统
- 表
- 采取
- 需要
- 队
- 专业技术
- 模板
- 测试
- 其
- 因此
- 数千
- 通过
- 始终
- 次
- 时
- 时间戳
- 秘诀
- 至
- 最佳
- 交易
- 改造
- 旅游
- 触发
- 类型
- 统一
- 最新动态
- us
- 使用
- 用户
- 验证
- 折扣值
- 价值观
- 各种
- 各个
- 速度
- 版本
- 通过
- 查看
- 违反
- 挥发物
- 卷
- 通缉
- 仓库保管
- 方法
- 什么是
- 这
- 而
- 宽
- 将
- 工作流程
- 工作流程
- 合作
- 将
- 年
- 您一站式解决方案
- 和风网