互联网技术 / 互联网资讯 · 2023年11月14日 0

AWS推出全新的数据湖服务

数据分析是当前比较热门的技术,通过利用云计算的资源,更加快速对数据进行收集、处理并分析。本文将从实践角度阐述 AWS 数据湖以及数据分析等产品,是如何帮助企业更加智能的利用数据,从而辅助业务决策。

一、数据湖的由来

很久之前,当时的数据量很少,人们都是把数据记在脑中或者记录在纸张上面,想要查看数据的时候,翻开记录就行。

随着科技的进步,产生了越来越多的数据,人们发现数据记录在笔记中变得繁琐且不高效,而且查询数据也变得困难。于是产生了数据库,数据库可以满足海量数据快速地增删改查等需求。

比如现在的移动支付,用户的每笔消费,后台数据库都会快速记录这笔交易;用户在电商平台下的每个订单,后台数据库同样会快速地记录下来,这就会产生海量的数据,而这也只是海量数据的冰山一角。

时间长了,人们发现库里的数据越来越多了,不光要支持联机业务,还要有分析的价值。但是,传统的数据库需要满足频繁、快速的读写需求,并不适合大量读取数据特征进行分析业务。人们开始寻找其他的方法。

当然人类还是很聪明的,既然不能直接在数据库中进行分析,那我应该可以把需要分析的数据导出来,放到一个专门的数据库中进行分析,在导出的过程中还可以对数据进行一些格式转换,这个过程也就是我们常说的 ETL(ExtRact-TRansfoRM-load)。

这个专门存放加工后数据的地方,我们称之为数据仓库。数据仓库里面的数据主要用于数据分析,如用于 BI、报表、经营分析、广告投放等。

那么数据库和数据仓库的区别主要在哪里呢?

数据库:通常为小数据量高频读写,主要用于联机事务。 数据仓库:通常为大数据量读取,主要用于联机分析业务。

虽然应用场景不一样,但数据库和数据仓库都是适用于结构化数据。在相当长的一段时间内,数据库和数据仓库联合,共同满足企业的实时交易型业务和联机分析型的业务。

然而时代在发展,各种各样的数据类型都在产生,如半结构化和非结构化数据,面对多种类型数据分析的需求也越来越复杂。

这个时候,人们又陷入了沉思,该找一个什么样的存储来保存所有的原始数据,并且可以让多个应用进行读取查询。大数据需要使用好所有类型的数据,并不能抛弃这些数据,并且需要近似无限量的存储,这些数据五花八门,又多又杂,该如何存储呢?

索性就挖一个大坑吧,然后把所有的原始格式的数据一股脑地扔进去,这些数据就如同坑中的水,因为数据量巨大,这个坑也就变成了小湖泊。你需要什么数据,直接在湖边挖个沟渠,把数据引入到你的应用上面,这就是我们所说的数据湖的雏形。

什么是数据湖

那么数据湖到底是什么呢?我们查看一下维基百科上面的解释:

数据湖(Data Lake)是一个以原始格式存储数据的存储库或系统。它按原样存储数据,而无需事先对数据进行结构化处理。一个数据湖可以存储结构化数据(如关系型数据库中的表),半结构化数据(如CSV、日志、XML、JSON),非结构化数据(如电子邮件、文档、PDF)和二进制数据(如图形、音频、视频)。

通过数据湖的定义,我们可以从中找出一些数据湖的特点,或者数据湖满足什么条件。

数据湖需要能提供足够大的数据存储能力,接近于无限量的存储。 数据湖可以存储各种类型的数据,不限于结构化,包括半结构化和非结构化数据。 数据湖存储的是原始数据,没有经过加工的,产生的数据是什么样,存储的就是什么样。 数据湖需要有完善的数据管理能力,可以管理各类数据的相关要素。 数据湖需要具有多样化的分析能力,包括但不限于批处理、流式计算、机器学习等。 数据湖需要具有完善的数据生命周期管理能力。

我觉得数据湖就是一个架构体系,通过它我们可以快速地存储、处理、分析海量的数据,同时可以使用多种多样的手段进行分析,所有的操作都是在安全合规的场景下进行;以数据为导向,实现任意来源、任意速度、任意规模、任意类型数据的全量获取、全量存储和全生命周期管理;还可以通过接口和外面的计算资源交互集成,满足各类企业级应用需求。

有了数据湖,企业分析人员不用在不同的数据仓库和文件存储之间进行频繁切换,也不需要重复地写抽取、加载的逻辑,极大提升了分析人员的的工作效率。

二、AWS 数据湖解决方案

我们上面是介绍了数据湖比较普遍的定义,那么 AWS 是如何定义数据湖的呢?

AWS 定义数据湖是一个集中式存储库,允许用户以任意规模存储所有结构化和非结构化数据。在 AWS 中, AMazon S3 可以实现数据湖的这些功能,因为 AMazon S3 有很多特性可以满足数据湖各式各样的要求,在后面数据存储方面,我们将着重介绍 AMazon S3 的这些特性。

上图中的整个方案是基于 AWS Lake FoRMation 构建,AWS Lake FoRMation 本质上是一个管理性质的组件,与其他 AWS 服务互相配合,来完成整个企业级数据湖的构建。上图从左到右,体现了数据获取、数据存储、数据处理、数据分析四个步骤,下面我们将逐一介绍,阐述 AWS 提供的服务是如何帮助我们使用数据湖。

数据获取

数据获取是整个数据湖构建的起始,既然 AMazon S3 是 AWS 数据湖的存储,那我们该如何把业务数据放入其中呢?

首先,需要判断接入数据的类型,是结构化数据还是非结构化数据,是流式的数据还是批量的数据,然后再选择合适的工具。AWS 针对不同场景提供了丰富的服务,帮助用户将外部数据导入到数据湖 AMazon S3 中。

为了使数据湖中的数据可以统一进行管理,流入的数据需要包括元数据和实际数据两个部分。元数据流入包括数据源创建、元数据抓取两步,最终会形成数据资源目录,并生成对应的安全设置与访问控制策略。

AWS 提供了多种数据提取的服务,如:

AWS Snowball:提取离线传感器数据、NAS、本地 Hadoop。 AMazon Kinesis Data FiRehose:提取 IoT、传感器数据、点击流数据、社交媒体源、流式处理日志。 AWS DiRect Connect:提取本地数据湖、EDW、大型数据集合。 AMazon database MigRation:提取 ORacle、MYsQL、MongoDB、DB2、SQL SeRveR、AMazon RDS。 AWS STorage Gateway:提取本地 ERP、大型主机、实验室设备、NAS 存储。

这些服务可以把各式各样的数据从外部导入到 AMazon S3 中,具体每个服务的详细功能,AWS 都做了详细的介绍,用户可以参考官方文档进行配置。

数据存储

数据湖的存储主要是依托于 AMazon S3,AMazon S3 可以理解为数据湖最重要的一部分,这主要也依托于其强大的特性:

提供 11 个 9 的数据持久性。 业界领先的性能和可扩展性。 完善的安全性、满足法律法规要求。 对象粒度级别的权限控制。 适合各类工作负载的存储类。 方便与其他分析服务整合,如 AMazon Athena、AMazon RedsHift 和 AMazon EMR。

AWS 的众多服务都可以和 AMazon S3 无缝结合,为数据湖的数据注入与摄取提供了强大的支持。

数据处理

数据处理这一部分主要是利用 AWS Glue 来进行处理,AWS Glue 是 ETL 和数据目录服务,它是无服务器架构,仅为作业实际使用的资源付费,方便易用,威力强大,支持自动 scheMa 发现,具有可视化 ETL 和代码生成和灵活的任务调度程序,是 AWS 大数据处理中非常重要的一个组件。

AWS Glue 主要组件有数据目录、作业编写、作业执行,下面介绍每个组件可以做什么事情:

数据目录 Hive 元存储与增强功能兼容 爬网程序自动提取元数据并创建表 与 Athena、AMazon RedsHift SpectRuM 集成 作业编写 自动生成 ETL 代码 在开源框架上构建,语言为 Python 和 SpaRk 以开发人员为中心,包括编辑、调试、共享 作业执行 在无服务器 SpaRk 平台运行作业 提供灵活时间安排 处理依赖关系解析、监控和警报 任务触发方式支持手动触发、定时触发、事件触发,可以和 AWS LaMbda 集成

总之,借助 AWS Glue,我们无需再去考虑数据源是什么格式,是结构化还是非结构化,AWS Glue 可以自动智能地进行分析,推断出数据架构,数据类型等等。应对底层数据架构不断发生的变化,如果没有 AWS Glue,在数据源结构发生变化时,用户需要重新去创建数据目录,而这些繁琐的事情现在用户不需要再去关心,AWS Glue 可以统统搞定,数据分析人员可以把更多的注意力放在业务实现方面。

AWS Glue 也具备机器学习的能力,可以帮助用户识别不同的数据集中重复的记录,帮助用户进行数据清理和转换,这个功能不需要用户写一行代码,也不需要具备专业机器学习的算法的能力,只需点击几下鼠标即可实现。

数据分析

在企业里面,一般分析作业都是 BI 报表类型,业务部门把想看的指标告诉数据分析人员,数据分析人员编写 SQL 语句,然后运行结果提供给业务部门查看,但是由于需求的多变和不明确性,这样的过程会反反复复。

这是企业中一个非常典型的场景,但是在实际的使用过程中,客户可能还会需要更加复杂的一些分析手段,比如客户想要通过机器查询、通过 K/V 可以快速地在海量数据中查询需要的结果、想要实现全文检索,或者流式快速对数据进行统计等。

面对以上的问题,我们都可以通过 AWS 提供的服务进行实现。通过 AMazon RedsHift 实现交互式查询分析,使用 AMazon EMR 对海量数据进行 ETL 处理和分析,使用 AMazon ElasticSeaRch 实现全文检索,AMazon Kinesis 实现流式快速数据统计等,借助于 AMazon Athena 可以直接对 AMazon S3 的数据进行 SQL 查询,当下比较流行的机器学习方面也可也借助 AMazon SageMakeR 来实现,AMazon SageMakeR 可以读取 AMazon S3 中的训练数据,并将训练好的模型回写到 AMazon S3 中。

我们可以看到,在 AWS 数据湖上,这些分析都是通过不同的外部工具来实现,计算由外部的组件实现,存储统一由 AMazon S3 提供,这也是 AWS 数据湖的独特之处,计算与存储分离。

数据展示

数据的采集和生产最终是为了决策,数据的各种分析要求基本已经满足了企业大部分的需求,那这些分析结果如何以可视化的效果展现从而帮助用户决策呢?

在数据展示方面,AWS 也为用户提供了一款采用云技术的快速商业智能服务 AMazon QuickSight,企业用户可以更加便捷、快速低成本地分析数据。

AMazon QuickSight 的定位是连接用户与数据,它是整个 AWS 生态中离商业决策最近的服务,直接解决大数据应用的 “最后一公里&Rdquo; 问题。它不需要用户有代码能力,可自动识别和整合各种不同的数据源,包括与 AMazon RedSHift、AMazon S3、AMazon Athena、AMazon AuRoRa、AMazon RDS、AWS IAM、AWS CloudTRAIl、AMazon Cloud DiRecTory 等 AWS 服务的原生集成。提供实时交互式的数据查询方式,并且自动进行数据可视化,最大程度降低了商业决策端用户使用大数据的成本。

权限管理

在企业数字化转型的过程中,势必会有很多数据分散在各个地方,这些数据如何统一管理?AWS 给出的答案是需要一个统一的数据目录用来注册和管理数据的元数据信息。在 AWS 搭建一个这样的数据目录并不难,使用 AWS Glue Catalog 可以很方便实现。

但是对于一个集中的数据目录,如何管理权限边界变成了一个问题,AWS 是如