如何将大数据上传到云端
FME云已经活了18个多月了,客户面临的最大障碍之一是将数据集移入云端,尤其是当数据集很大时。
我们看到的大多数场景都涉及将数据加载到AmazonWeb服务(AWS)中,由于FME云在AWS上运行,但这些技术也适用于将数据加载到其他云平台(如Microsoft Azure)中。
小数据集频繁
为了频繁地上传小数据集,您可以利用AWS和第三方提供的许多工具。以下解决方案均使用HTTP,除非您的互联网连接确实不可靠,否则这就足够了。
- 代码使用AWS软件开发工具包并直接集成到应用程序中。
- 网络驱动器:将S3存储桶公开为本地磁盘,并允许用户通过将文件放入本地文件夹(例如Cloudberry大道,TNT驱动器,远程服务器连接工具)
- Web应用程序:Amazon在AWS控制台中有自己的Web应用程序。它不是最有用的,但它确实有效。
- 客户端应用程序:连接到S3存储桶,就像通过简单的拖放文件上传(例如赛博鸭,云莓探险家)
- FME:在FME您可以使用S3变压器上传和下载数据。如果您有FME服务器,您可以通过观看本地文件磁盘自动将文件上载到S3,ftp目录,和网址。
大型数据集很少
在这里你可以使用AWS导入/导出服务还是Azure提供的类似服务.
工作原理:将数据加载到SSD磁盘并将其发布到Amazon,然后他们将您的数据加载到指定的S3 bucket或EBS mount中。如果您计划进行仅更改的更新,这是进行批量上载的极好方法。
如果通过网络加载数据需要7天或更长时间,一定要考虑使用AWS导入/导出。首先,它是成本效益,因为您不必支付带宽成本,装卸费和每小时2.49美元。第二,它的保护:您可以使用密码和软件加密来确保数据在传输过程中的安全性。最后,您的数据保证在收到后1个工作日内加载,所以这是一个相对快速的加载大型数据集的方法。
经常使用大型数据集
这种相对常见的情况是这三种情况中最棘手的。人们通常利用云的可扩展性和成本来处理大量数据,如果数据来自云外,他们需要以一种自动化的方式把它推上去。我们遇到的例子包括激光雷达和光栅数据。一个客户端必须每12小时上传12GB的卫星数据,它对时间敏感,所以需要尽快上传。
为了上传大量数据,AWS提供的标准工具通常速度太慢。,即使你有快速的互联网连接,因为它们都依赖HTTP。HTTP有开销,因为它依赖于TCP协议,它并不是专为跨广域网移动大型数据集而设计的。
加速文件传输解决方案已经进入利用UDP的市场,它可以通过使用更多的可用带宽来促进更大的吞吐量,并且受网络开销的影响更小。存在几种加速文件传输解决方案。这份清单决不是详尽的,但以下是一些:
- 海啸UDP是一个开源解决方案。AWS覆盖了它他们博客.
- 阿斯佩拉是,我会说,最成熟的商业发行。他们创建了自己的FASP协议,基于UDP。您可以在AWS上配置一个服务器,其软件连接到S3或EBS卷。您可以使用其中一个客户机应用程序(或与您的应用程序集成的SDK)向服务器发送数据,它使用FASP协议。一旦出现Aspera服务器将数据直接传输到您要上载到的AWS服务。对于我试用的版本,我必须启动自己的AWS实例并在其上配置软件。多读在这里.
- 薄膜催化剂以类似的方式工作。他们使用UDP加速上传到您配置的AWS实例,并在其上运行软件。再一次,没有任何内容存储在本地,文件通过服务器直接流到S3。对于我试用的版本,我必须启动自己的AWS实例并在其上配置软件。
- 符号的是一种SaaS产品,允许您将文件上传到AWS S3,而无需在云中托管或配置您自己的服务器。你只需下载一个命令行工具并开始上传。他们还拥有将其技术与您自己的应用程序集成的SDK。
数据上传工具比较
我运行了各种测试,使用商业和开源工具将数据上传到S3。上载了两个数据集:一个是10GB的单个文件,另一个是一系列文件夹,其中包含21000个图像。上传在两个互联网连接上进行测试:一个是光纤连接,平均上传速度约为170Mbps。另一个是宽带连接,平均上传速率为2.67 Mbps。这是结果。
FME (HTTP) |
赛博鸭 (HTTP) |
阿斯佩拉 (FASP) |
|
---|---|---|---|
上传速度170Mbps | |||
总计10GB–单个文件 | 9M 24S | 失败443 响应错误失败。 |
9M 5S 159.1 Mbps |
总共5GB–21000个Web地图块 | 12m 31秒 | 1H 24m | 57米36秒 14.3 Mbps |
上传速度2.76 Mbps | |||
总计10GB–单个文件 | 失败超时问题 | 9H 57米 | 9H 36m 2.5兆比特/秒 |
总共6GB–21000个Web地图块 | 失败超时问题 | 7H 6m | 5H 41M 2.44 Mbps |
速度
阿斯佩拉在大多数速度测试中名列榜首,尽管速度增益没有我预期的那么大。FME在上传单个文件时,离Aspera不远,上传21000个地图块的速度更快。这可能是因为我们刚切换到新的SDK,现在利用文件夹上传API调用。(注:我还收到了来自Aspera支持部门的一份说明,其中强调了一些可以改进上传速度的调整,但是还没有机会尝试它。)当我上传到缓慢的互联网连接时,FME也有超时问题……我们会解决这个问题。
我认为FME和Aspera非常接近(和赛博鸭在一些测试中)因为我是在最佳网络条件下测试的。数据是从温哥华复制到弗吉尼亚的,所以数据留在北美大陆,可能导致低延迟和减少数据包丢失。的确,Aspera将网络延迟记录为仅67毫秒。如果您尝试在更边缘的网络条件下上载数据,或另一个大陆上的服务器我认为使用HTTP和UDP的解决方案之间的速度差异将更加明显。
易用性
阿斯佩拉设置有点费劲(虽然他们有很好的支持)。但它是一个全面的解决方案,具有许多非常有用的特性。要设置,您必须运行自己的AWS实例并在其上安装它们的软件。因此从这个意义上说,它是您需要监视和维护的另一个基础结构。我发现最有用的功能包括一个提供当前和最近完成上传的概述的仪表板,详细控制分配给上传的带宽,以及在上传完成后查看上传的能力,统计上传速度和上传时间。
我也看了一下薄膜催化剂设置和配置起来很简单,但是可用的支持工具并没有Aspera那么丰富。Web用户界面也不太可用。它使用相同的设计模式,其软件运行在您管理的AWS EC2实例上。
FME也易于与拖放界面一起使用。我为上传亚搏在线到S3而构建的工作流花费了不到5分钟的时间。我们还有上传工具,删除,从S3下载和提取元数据。
赛博鸭就像一个ftp客户机,您可以在其中拖放要上载的文件。一旦连接到bucket,您还可以删除和移动文件。
必须提供哪些加速文件传输解决方案?
我开始这篇评论认为加速文件传输解决方案提供的性能提高将是主要好处。结果证明最大的好处是可靠性,并将文件上传转化为容错组件。我们经常在云中设计复杂的容错架构,利用所有的AWS来确保我们有一个稳定的可靠的应用。然而,这样的设计只不过是最薄弱环节。如果您依赖上传到云端的数据来触发工作流,亚搏在线我敢打赌,它可能是最薄弱的环节。如果上载文件是工作流程的一个组成部分,亚搏在线我建议看看商业加速文件传输解决方案。
对于大多数用户来说,从FME中获得的性能足以将文件上传到云端。如果您在连接不良的情况下上载非常大的文件,可能会遇到问题,但我会在这里开始我的基准测试。试一试FME告诉我们你的想法。你最大的数据上传挑战是什么?