数据摄取与摄取工具

数据摄取层

数据湖的一个核心价值观是,将所有组织内数据资产的收集点和存储库,无论数据的格式和类型。我们应该可以快速的摄取保存,以及集中治理和管理。 在本节内容中,我们将讨论一些常见的数据摄取体系结构和模式。

数据摄取层主要负责将数据摄取至集中存储层(例如数据湖)以进行分析。摄取层包含多项服务,各服务用于使用来自外部来源数据集的批量与实时流数据,具体涵盖网站点击流、数据库事件流、财务交易、社交媒体馈送、IT日志、位置跟踪事件、物联网遥测数据、本地数据源以及云原生数据存储等等。

Amazon Kinesis为专门用于实时数据摄取的服务家族,不仅提供安全的流数据加载与分析功能,同时可将流数据传输至Amazon Simple Storage Service(简称Amazon S3)以实现长期存储。我们还提供Amazon Managed Streaming for Kafka(简称MSK),这是一项全托管服务,可帮助用户通过安全的高可用性Apache Kafka集群处理流数据,且无需修改现有代码库。

接下来是AWS Database Migration Services(简称DMS),您可以借此在保证源数据库正常运行的同时复制并摄取该数据库。此项服务支持多个数据库源与目标,包括直接将数据写入至Amazon S3。为了加快DMS迁移,您还可以选择AWS Snowball——这项服务通过安全物理设备实现大规模数据对AWS云的批量传入与导出。最后,您也可以使用AWS Direct Connect,这项服务负责在本地数据中心与AWS云环境之间建立起统一的专用网络连接。

有些用户可能还需要使用其他数据摄取点,例如AWS IoT Core,这是一套托管平台,能够可靠且安全地大规模处理消息并将消息内容路由至AWS 数据存储当中。AWS DataSync是一项数据传输服务,能够自动简化并加快数据在本地存储系统(例如NFS)与AWS存储服务(例如Amazon EFS及Amazon S3)之间的移动与复制流程,并将数据内容摄取至分析类工作负载当中。

使用Kinesis Firehose 和 Kinesis Producer Library (KPL)摄取数据

Amazon Kinesis 可轻松收集、处理和分析实时流式处理数据,从而获得及时的业务见解并快速响应新信息。Amazon Kinesis 可以经济高效的方式以任何规模处理流式数据,同时可以对接各种后端工具,您可以灵活选择最适合您应用程序要求的工具。

Kinesis Firehose 是一项完全托管的服务,可将数据传递到目标位置,包括 Amazon S3、redshift和ElasticSearch服务。Kinesis 生产者库 (KPL) 简化了生产者应用程序开发,使开发人员能够实现对 Kinesis Data Stream的高写入吞吐量。下面我们举例,KPL 用于将数据从生产者应用程序写入 Kinesis 数据流。Kinesis Firehose 然后读取此流数据,将传入记录批处理到文件中,然后根据 Firehose 配置中定义的文件缓冲区大小/时间限制将它们传递到 S3。

体系结构组件演练
  • 应用程序使用 Kinesis KPL收集记录并写入 Kinesis Data Stream

  • 如果应用程序驻留在 VPC 中,您可以使用 Internet 网关或 Kinesis VPC 终端节点访问 Kinesis 服务

  • Kinesis Firehose 配置为从 Kinesis Data Stream读取数据流

  • Firehose 根据计数或目标文件大小对记录进行批处理,然后在传递到 S3 之前压缩和加密文件

使用Database Migration Service(DMS)摄取数据

AWS 数据库迁移服务 (DMS) 是将数据迁移到 AWS 的托管服务。它可以将数据从操作数据库和数据仓库(内部或 AWS)复制到各种目标,包括 S3 数据湖。例如下图,DMS 用于从 RDS 或 EC2 上的关系数据库中捕获更改的记录,并写入 S3。AWS Lambda 是一种无服务器计算服务,用于根据数据集在 S3 中的到达时间对数据集进行转换和对数据分区,以提供更好的查询性能。

  • 在 VPC 中创建 EC2 或 RDS 上的关系数据库。
  • 创建暂存 S3 位置以存储 DMS.
  • 使用 DMS API 或控制台创建复制实例
  • 为复制实例指定源和目标终结点
  • 为 AWS Lambda 创建 IAM 角色,该角色具有暂存 S3 存储桶上的读取访问权限,并在目标数据湖位置
  • 创建 Lambda 函数,使用 s3:对象创建:* 对暂存 S3 存储桶的请求触发自定义代码执行。函数根据 S3 对象的"最后修改元数据"属性将相同的对象写入 S3 上的目标数据湖位置
  • 创建 DMS 任务,将数据从源系统迁移到目标位置 ,然后,DMS 复制实例将通过弹性网络接口 (ENI) 连接到源端,并写入 S3 暂存位置。AWS Lambda 将收到 PutObject 事件,并使用 S3 Copy API 将数据重新组织到数据湖中。