华为拥抱开源 Alluxio:内存将成重要战略平台

by admin on 2020年4月25日

华为公司近日宣布将利用自家FusionStorage产品与Alluxio开源软件实现大数据分析加速;此举相信能够为令人昏昏欲睡的缓慢数据分析流程带来一股新风。

作者:史少锋 (shaofeng@kyligence.io),Kyligence 高级架构师

简介

图片 1

编辑:Sammi

随着企业收集和分析的数据量不断增长,人们越来越关注会影响到性能的数据存储成本的管理。Hadoop提供了一种可扩展且快速的方式来存储和分析数据,但在Hadoop中存储数据通常比对象存储等替代方案的成本更高。

Alluxio此前曾名为Tachyon Nexus,是一家由Andreessen
Horowitz资助的初创企业。

自上世纪以来,联机分析处理 (OLAP) 技术已被企业广泛采用;企业运用 OLAP
分析其业务数据,生成报表,从而帮助业务人员制定商务决策。在当今的大数据时代,OLAP
越来越重要,且面临诸多挑战;而云计算使这种情况更加复杂化。本文介绍了大数据智能科技公司
Kyligence 如何在云上利用 Alluxio 提升其OLAP引擎的性能。

对于寻求可扩展、经济高效存储的企业而言,内部部署和云部署采用对象存储的方案更普遍。然而,对象存储相较于Hadoop性能更低,因此程序开发者可能不愿意在两者间进行权衡选择。企业注重成本优势,云服务提供商的定价透明,但没有很好地解决成本与性能的权衡。

FusionStorage
则属于华为公司旗下的分布式软件定义存储系统。其最新FusionStorage
6.0支持分布式块、文件与对象存储,同时可对数据进行分类、加密与重复数据删除。

背景

Alluxio是一个虚拟分布式文件系统,它创建了一个统一化各种不同存储系统的数据层,并且可以达到内存级别的访问速度。数据无论存储在Hadoop
HDFS中,还是对象存储中,都可以通过全局命名空间中的单个源进行访问。这使得企业可以设计两全其美的数据存储方案,即在利用低成本存储的同时不降低性能。Alluxio概述

Alluxio公司的软件产品是一套以内存为中心的虚拟分布式存储系统。其功能相当于为HDFS节点集合等远程存储系统提供一套本地缓存。其基于本地节点集群运行,而各本地节点则供运行有大数据分析与查询任务的计算节点进行访问。

Kyligence 公司 [1] 成立于 2016
年,是一家专注于大数据分析领域的科技公司。 Kyligence 的产品基于 Apache
Kylin 的开源技术。

Alluxio是世界上第一个内存级别速度的虚拟分布式文件系统。它统一化数据访问并桥接了计算框架和存储。应用程序只需要与Alluxio连接即可访问存储在底层任何持久化存储系统中的对象或文件数据。此外,Alluxio架构支持以内存级别速度访问数据,以提供最快的I/O操作。

该软件提供:

Apache Kylin [2] 是一个开源 OLAP 引擎,可为 Hadoop 上的 PB
级数据场景提供交互式分析(Apache Hadoop
是对大型数据集进行分布式存储和处理的开源软件框架)。Apache Kylin 使用
Hadoop 的并行计算技术,将超大数据集构建到 OLAP Cube 中,通过 ANSI-SQL
查询接口提供亚秒级低延迟响应。

在大数据生态环境中,Alluxio是一个位于计算和存储之间的数据层。它可以带来明显的性能提升,尤其在跨越多个数据中心的云可用区。Alluxio抽象了底层持久化存储系统中的对象或文件,为应用提供共享数据访问。Alluxio兼容Hadoop和对象存储,支持对持久化存储的读写操作。现有的数据分析应用(如Hive,HBase和Spark
SQL)可以直接在Alluxio上运行而无需更改任何代码。当前的大数据存储架构

  • 配合自动数据放置的分层式存储机制(包括内存、闪存与磁盘)。

  • 配合透明化命名机制的单一命名空间。

  • 可集成原生S3、谷歌Cloud
    Storage、OpenStack Swift、阿里巴巴OSS、微软Azure
    Blob等存储方案。

  • Fuse Connector,采用键-值接口。

  • 一条命令即可完成集群部署。

  • 具备指标报告功能。

图 1. Apache Kylin 架构

最常见的大数据存储架构包含了并置(co-located)的计算和存储,具体地使用HDFS存储系统作为MapReduce,Spark,Hive,Presto等计算框架的存储,如图1所示。数据和计算位于同一节点,计算和存储紧耦合能够带来高性能但可扩展性和成本却不容乐观。扩展存储的同时会迫使无需扩展的计算也进行了扩展。随着时间的推移,Hadoop集群可能会变得庞大,并积累了大量较旧的,不太活跃的冷数据。

图片 2

Kyligence 的旗舰产品是 Kyligence Analytics Platform (KAP)。该产品基于
Apache Kylin,并提供了多种高级企业级功能。采用 KAP
后,用户可使用行业标准的数据仓库和商务智能 (BI) 运维方法,访问 Hadoop
上的商业智能功能。在此过程中,KAP 可以简化分析,提供自助式服务,与常用
BI 工具无缝交互。所有这一切无需编程即可实现。

图片 3

图片 4

图 2. Kyligence Analytics Platform

图 1:使用Hadoop HDFS的传统大数据体系结构新的大数据存储架构

Alluxio支持多种不同底层(远程)存储系统,具体包括HDFS、Gluster、S3、OpenStack、GCS、NFS、OrangeFS、IBm
Spectrum Scake、Ceph、Isilon等等。

云端面临的挑战

部署Alluxio会创建一个带有虚拟数据层的系统架构,从而统一存储在HDFS和对象存储中的数据,如图2所示。集群中的性能与仅有HDFS的配置情况相当,因为Alluxio会缓存来自对象存储的数据。同时可以将不常使用的数据转移到性价比最高的对象存储,并且存储和计算可以独立扩展。

图片 5

KAP 利用 Hadoop MapReduce 和 Spark 将源数据构建到 OLAP Cube 中;OLAP
Cube 存储在 KyStorage 中。KyStorage
是基于分布式文件系统的并针对OLAP场景进行优化的列式存储引擎。在收到 SQL
查询时,KAP 将查询转换成对 KyStorage 的执行计划,并通过 Spark executor
来执行。

图片 6

百度公司在Alluxio的帮助下将Spark查询速度提升了30倍。原本需要15分钟才能完成的批量查询如今不到30秒即可搞定,而且一套1000用户Alluxio集群能够提供超过50
TB内存空间。

在本地部署的集群中,HDFS 是 Hadoop 和 Spark
最广泛采用的文件系统。由于数据存储在本地磁盘,且操作系统会对文件块做缓存,因此
HDFS 的访问性能很出色;另外,HDFS的文件副本默认为
3,提供了相当高的可靠性。

图 2:使用Alluxio作为虚拟数据访问层的大数据架构

巴克莱银行亦在运行查询的计算节点与Teradata数据存储库之间采用Alluxio软件,从而将原本需要数小时的Spark任务加速至仅需要数秒。

然而在云端,HDFS
并不是最佳选择。云上的Hadoop集群按需创建,根据工作量指标等动态增加或减小节点数。当节点停止时,虚拟机的本地磁盘将被擦除,这样可能导致数据丢失。在这种情况下,AWS
S3 和 Azure Blob Store 等云存储服务,因其近乎无限的容量和大于 99.999% 的
SLA,成为最佳替代品。AWS EMR 和 Azure HDInsight 等 Hadoop
产品为这些存储服务提供原生支持。用户可通过 MapReduce、Spark
或定制应用进行透明访问,就像在常用分布式文件系统上一样。

在此存储架构中,Alluxio提供以下功能:

听起来确实很有搞头。我们认为华为公司及其物联网/云战略确实能够与Alluxio实现良好配合。感兴趣的朋友亦可点击此处与此处分别查看Alluxio项目及其演示材料。

图 3. 云端 KAP


现代的计算存储分离的弹性架构:资源可以独立管理和扩展,标准API和插件架构支持未来新技术的对接。

华为Alluxio

尽管云存储服务的扩展性和持续性好于
HDFS,但其性能受到所租用的虚拟机网络带宽的限制。此外,S3
等云存储服务不是一个真正意义上的文件系统;其元数据操作如 ‘list’
会比较耗时,’rename’ 操作实际上是
‘copy’,对于大数据场景来说难以接受。所有这些都使其整体性能差于 HDFS。


统一化的数据层创建“虚拟数据湖”:在Alluxio全局命名空间中访问对象和文件,就好像它们位于一个单个系统中。

转载自:ZD至顶网 作者:孙斌

KAP 作为一个低延迟的 OLAP
引擎,其性能在很大程度上依赖于分布式文件系统的性能。在引入 Alluxio
之前,移至云端时,用户不得不忍受性能降级,或者切换至HDFS并在 S3 与 HDFS
之间进行备份和恢复,以在性能与持久性之间获得平衡,这使得部署和维护变得复杂,且容易出错。


快速本地访问重要且经常使用的数据,无需维护永久副本:Alluxio智能地只缓存所需的数据块,而不是整个文件。

来源:ZDNet存储频道(编译)

KAP 如何利用 Alluxio

• 通过将数据迁移到成本较低的商品存储来优化存储成本,而不会降低性能。

为了克服云端的存储限制问题,我们决定在存储服务上为 KyStorage
添加一个缓存层,而Alluxio很好地满足了这个需求。


灵活性:Alluxio中的数据可以在不同的工作负载和计算框架(如查询,批处理分析和机器学习)之间共享。支持行业标准接口,包括HDFS和S3A。如何使用Alluxio部署和共享HDFS和对象存储

Alluxio [3] 原名
Tachyon,是世界上第一个以内存为中心的虚拟分布式存储系统。它统一了数据访问方式,为上层计算框架和底层存储系统构建了桥梁。应用程序只需连接
Alluxio 即可访问存储在任意底层存储系统中的数据。此外,Alluxio
以内存为中心的架构使得数据访问速度比现有方案快几个数量级。

为了说明对性能的影响,我们运行了一个简单的测试,你可以在自己的环境中轻松复现。在实验中,我们使用MapReduce,HDFS,Alluxio和AWS
S3存储桶创建了一个示例配置。实验表明,云的对象存储与内部HDFS部署相比可以达到近似的性能表现。

在大数据生态系统中,Alluxio 介于计算框架或任务(如 Apache Spark、Apache
MapReduce、Apache HBase、Apache Hive 或 Apache
Flink)与各种存储系统(如Amazon S3、Google Cloud Storage、OpenStack
Swift、GlusterFS、HDFS、MaprFS、Ceph、NFS 和 Alibaba OSS)之间。Alluxio
显著提升了大数据生态系统的性能。Alluxio 与 Hadoop
兼容。现有数据分析应用程序,如 Spark 和 MapReduce
程序,可以不修改任何代码,直接在 Alluxio 上运行。

集群包含6个Amazon
EC2实例(类型为M4.4XL)。该集群配置了五个Alluxio工作节点分别与各自的HDFS
DataNodes位于相同位置,每个工作节点都预留了30GB的内存。NameNode和Alluxio
Master位于同一主机,此HDFS部署作为Alluxio根文件系统。

图 4. Alluxio

实验运行如下:Teragen生成存储在HDFS中的数据,通过MapReduce对数据运行Terasort。然后,HDFS和S3存储桶挂载到Alluxio命名空间下,利用Alluxio统一文件系统特性将现有数据从HDFS迁移到S3。最后,通过MapReduce对S3中的数据运行Terasort。

此外,Alluxio 提供分层存储,不仅可以管理内存,还可管理 SSD 和
HDD,让更大的数据集存储在 Alluxio
上。数据在不同层之间自动进行管理,确保热数据在更快的存储层上。

• 生成数据集

借助 Alluxio,KAP不需要进行代码或架构更改。将 Alluxio 安装在 Spark
运行的每个节点上,将 S3 存储桶或 Azure Blob Store
映射为Alluxio的底层文件系统。然后,配置 KAP 通过 Alluxio 来读取S3 或
Blob Store 中的 KyStorage 文件。首次加载时会有点慢,因为 Alluxio
需要将数据读取到内存中。但此后的访问速度会快很多,因为 Alluxio
会智能地从 Spark executor 运行的本地工作机中返回数据块。

为了提供数据给Terasort,使用teragen在本地HDFS上生成100GB数据集:$ hadoop
jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar teragen
1000000000 /teraInput

下面是引入 Alluxio 后的架构:

• 运行Terasort

图 5. 采用 Alluxio 后的 KAP

为了获得基准性能,在本地HDFS运行Terasort。$ hadoop jar
/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar terasort
/teraInput /teraOutput

由于热数据缓存在 Alluxio 中,从而改进了读取 KyStorage
的性能,极大提升了KAP查询引擎的性能和吞吐量。我们在 AWS 和 Azure
上分别进行了基准测试,所获得的结果验证了这一推断。

• 将数据迁移到S3

AWS S3 测试

Alluxio统一文件系统功能提供了一种在支持的文件系统之间迁移数据的简单方法。使用Alluxio
shell命令将数据从本地HDFS迁移到S3。首先,将S3存储桶挂载到Alluxio命名空间。$
bin/alluxio fs mount –option aws.accessKeyId=<S3_KEY_ID>
–option aws.secretKey=<S3_KEY> /s3-mount
s3a://alluxio-terasort/input

测试信息:

• 通过Alluxio将数据集复制到S3$ bin/alluxio fs cp -R /teraInput /s3-mount

Apache JMeter 在 KAP 上运行 SSB
查询,并禁用查询缓存,因此每次需要从文件系统中读取 KyStorage。我们分别在
S3 和 Alluxio上收集查询性能。下面是在 S3 和 Alluxio 上运行 SSB
的统计信息。

根据你为Alluxio配置的写入类型,可能需要手动将数据加载到Alluxio命名空间。$
bin/alluxio fs load /s3-mount

图 6. 在 S3上运行SSB

• 运行Terasort(数据通过Alluxio来自S3 )

图 7. 在 Alluxio 上运行 SSB

Terasort结果输出到本地HDFS,以获得数据读取路径的可靠性能。$ hadoop jar
/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar terasort
alluxio://<MasterHost:Port>/s3-mount/teraInput /teraOutput

在对比所有查询的平均查询延迟后,我们得到以下结果:

结果

图 8. SSB 查询延迟比较

内部部署HDFS配置的总运行时间为39分钟13秒。采用Alluxio从S3访问数据,可使得总时间为37分钟17秒,实际上快了近5%。

从上图可以看出,Alluxio 上的平均查询延迟为 0.4 秒,在 S3 上为 1.8
秒。KAP 在 Alluxio 上的性能比在 S3 上的性能快 4 倍之多。

Alluxio支持任何提供标准接口的商业对象存储平台,包括内部部署和主要云服务提供商给出的解决方案。如果想要自己尝试Alluxio,你可以在几分钟内下载并开始使用,来加速AWS中的示例数据集或运行上述实验。

Azure Blob Store 测试

为了深入了解 Alluxio 在 Windows Azure Storage Blob (WASB)
上的性能,我们进行了另一项测试。这次,我们选择真实场景(用户画像分析)并添加了使用HDFS的场景,从
Web 应用程序中收集查询样例。在运行多次后,取其平均值。

测试信息:

样例查询如下:

以下是三个存储系统的平均查询时间。

图 9. WASB vs HDFS vs Alluxio

从上图可以看出,本地 HDFS 在 5 个场景中,有 4
个场景的性能是最佳的。Azure Blob Store
的执行时间在所有场景中是最长的。Alluxio 的性能介于 HDFS 和 Blob Store
之间,但与 HDFS 非常接近。平均而言,与直接读取 Azure Blob Store
相比,Alluxio 可助力 KAP 提升 3 至 4 倍的性能。

总结

Alluxio 可以通过使用其透明的命名和挂载
API,跨不同存储系统有效管理数据。采用 Alluxio 后,KAP
可以在云端,在性能、成本和管理之间实现良好的平衡。

参考文献:

[1]Kyligence

[2]Apache
Kylin

[3]Alluxio

[4]SSB-Kylin

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图