数据虚拟化:为 AI 与机器学习实现数据解锁

阅读数:800 2017 年 9 月 6 日 23:21

出于可靠性、准确性以及性能表现等方面的考量,AI 与机器学习技术在很大程度上皆须依赖于大型设备。这是因为数据池越大,训练模型的质量也就越高。正因为如此,大数据平台才必须能够高效处理各类不同数据流与系统,且不对具体数据结构(或者缺少清晰结构)、数据速度或者数据量作出限定。

然而,这项任务实在是说来容易做来难。

如今,每一套大数据平台都面临着以下系统性挑战:

  1. 计算 / 存储重叠: 从传统角度讲,计算与存储两类资源从未被硬性拆分。然而随着数据量的不断增长,您必须同时为计算与存储规划投资。
  2. 数据的非统一式访问: 多年以来,对于业务运营及应用程序的高度依赖致使众多企业需要立足不同物理系统(包括文件系统、数据库与数据仓库(例如 SQL Server 或 Oracle)乃至大数据系统(例如 Hadoop)进行数据的获取、提取与存储。而种类繁多的系统各自拥有自己的数据访问方式。
  3. 硬件绑定计算: 您的数据已经拥有良好的存储模式(例如 SQL Server),但您的硬件仍需要数小时时间才能完成查询操作。
  4. 远程数据: 数据可能分散在不同地理位置之间,或者采用不同的底层技术堆栈(例如 SQL Server、Oracle、Hadoop 等等),且被存储在内部设施或者云环境当中。这就要求原始数据需要以物理方式进行移动方可得到处理,这将极大提升网络 I/O 成本。

随着 AI 与机器学习技术的出现,解决这些挑战已经成为企业必须完成的重要任务。而数据虚拟化正是由此衍生而成的处理思路。

数据虚拟化是什么?

数据虚拟化提供抽象方法以处理并访问数据。其允许大家跨越不同流与系统结构实现数据管理与处理,且无需对数据的物理位置或者具体格式作出限定。数据虚拟化可被定义为一组工具、技术与方法集,其将帮助您在无需为数据物理位置以及计算处理资源分神的前提下,顺利实现与数据相关的访问与交互工作。

举例来说,假设您的大量数据分散在不同系统当,并希望能够在无需移动数据的情况下以统一方式对其进行查询,那么数据虚拟化技术绝对能够帮上大忙。

在今天的文章中,我们将介绍部分数据虚拟化技术,并阐述其如何改善大数据处理工作的效率与易行性。

数据虚拟化架构

我们可以利用 Azure 云上高级分析堆栈的 lambda 架构对数据虚拟化作出说明:

(点击放大图像)

数据虚拟化:为AI与机器学习实现数据解锁

图一:利用 Azure 平台服务的 Lambda 架构方案

在大数据处理平台当中,每秒数据提取量极大,而且其中必然同时包含静态数据与传输中数据。另外,这部分大数据会被收集至规范数据存储(例如 Azure 存储 blob)体系内并随后进行清理、分区、聚合与准备,以待下游处理加以利用。常见的下游处理方法则包括机器学习、可视化、仪表板报告生成等等。

其下游处理则由 SQL Server 负责支持,而根据用户数量的不同,当各争用服务并发执行多项查询时可能引发过载。为了解决过载问题,数据虚拟化机制提供查询向外扩展能力,即将其中一部分计算任务迁移至其它更为强大的系统——例如 Hadoop 集群。

图一所示的另一种场景为在 HDInsight(Hadoop)集群当中运行 ETL 进程。ETL 转换可能需要访问存储在 SQL Server 当中的引用数据。

数据虚拟化亦提供混合执行能力,其允许您从远程存储(例如 SQL Server)处查询引用数据。

查询向外扩展是什么?

假设您在一套硬件配置有限的环境当中运行多租户 SQL Server,且希望将部分计算任务迁移出去以加快查询速度。另外,您可能还需要访问并不适合由 SQL Server 承载的大数据。在这类场景之下,查询向外扩展能够带来理想的效果。

查询向外扩展中使用 PolyBase 技术——这项技术由 SQL Server 2016 提供。PolyBase 允许您立足一套速度更快且容量更高的大数据系统——例如 Hadoop 集群——以远程方式执行一部分查询任务。

查询向外扩展的具体实现架构如下图所示。

(点击放大图像)

数据虚拟化:为AI与机器学习实现数据解锁

图二:查询向外扩展的系统级图示

能够解决哪些问题?

  • 计算 / 存储重叠: 您可以通过在外部集群中运行查询以将计算任务从存储当中分离出来。您可以在 HDFS 当中执行数据访问,从而扩展 SQL Server 存储。
  • 硬件绑定计算: 您可以利用速度更快的系统运行并发计算任务。
  • 远程数据: 您可以保证数据始终处于其原始位置,而仅返回处理后的结果集合。

您可以点击此处通过解决方案库中的一键式自动化演示对查询向外扩展机制进行深入探索与部署。

混合执行是什么?

假设您希望立足非结构化数据运行 ETL 进程,而后将数据存储在 blob 当中。这时您需要将此 blob 数据同存储在关系数据库内的引用数据加以合并。那么,我们该如何以统一化方式访问这些不同数据源?在这种情况下,混合执行将成为理想的解决方案。

混合执行允许您将查询“推送”至远程系统——例如 SQL Server,并访问引用数据。

混合执行的架构如下图所示。

(点击放大图像)

数据虚拟化:为AI与机器学习实现数据解锁

图三:混合执行的系统级图标

能够解决哪些问题?

  • 数据的非统一式访问: 您不再需要受到数据存储位置及方式的限制。
  • 远程数据: 您可以访问来自外部系统的引用数据以供下游应用使用。

您可以点击此处通过解决方案库中的一键式自动化演示对混合执行机制进行深入探索与部署。

性能基准:能够实现怎样的优化效果?

接下来的问题是,我们到底是否有必要使用这些技术?

查询向外扩展适用于数据已经存在于 Hadoop 当中的场景。参见图一,您可能并不打算将全部数据推送至 HDInsight 以了解具体性能提升。

(点击放大图像)

数据虚拟化:为AI与机器学习实现数据解锁

不过我们可以设想在 HDInsight 集群当中出现大量 ETL 进程,并将结构化结果发布至 SQL Server 以供下游消费(例如由报告工具使用)的情况。为了帮助大家了解使用这些技术所能带来的性能提升效果,以下为我们在解决方案演示当中所使用数据集的部分基准测试数据。这些数据来自多种不同数据集大小与 HDInsight 集群规模配伍方案。

图四:有扩展与无扩展条件下的查询执行时间变化情况

其中的 x 轴所示为基准测试所使用表内的行数。y 轴则代表查询执行所经过的秒数。需要注意的是,纯 SQL Server 执行时间(蓝线)与 HDInsight 配合 SQL Server 查询向外扩展执行时间(橙线与灰线)皆呈现出线性递增趋势。而有趣的结果是,四工作节点 HDInsight 集群与双工作节点集群(灰线对橙线)之间的执行时间存在巨大差异。

当然,这些结果仅适用于我们在解决方案演示当中所使用的简化数据集与具体模式。在 SQL Server 当中通常承载着更为庞大的真实数据集,其通常会运行多项查询并导致资源争用,因此实际性能提升效果应该会更为显著。

接下来 的问题在于,我们该在怎样的情况下切换至查询向外扩展机制以获得成本效益?以下图表显示了本实验中所使用的具体资源定价。大家也可以点击此处查看更多具体定价计算方式。

(点击放大图像)

数据虚拟化:为AI与机器学习实现数据解锁

图五:有扩展与无扩展条件下的查询执行时间(与定价)

可以看到,在 4000 万行执行规模条件下,纯 SQL Server 式查询执行方法在成本上最为低廉。但当查询规模提升至 1.6 亿行时,向外扩展方法的成本开始占据优势。这意味着随着行数的增加,您将能够通过利用向外扩展选项降低查询成本。您可以利用此类基准测试与计算方法确保自身资源部署方案始终在性能与成本之间拥有最佳平衡点。

亲自动手——一键式部署

如果您有意体验本文中讨论的数据虚拟化技术,请您点击此处利用一键式自动部署方案在您的Azure 订阅帐户中部署这套解决方案演示。

欲了解更多与数据虚拟化技术相关的深层实现信息,则可点击此处参阅我们的技术指南。

查看原文链接

收藏

评论

微博

用户头像
发表评论

注册/登录 InfoQ 发表评论