我们在上一篇">博客文章中对更新的 Windows Azure HDInsight 服务进行了演练。今天这篇文章,作为介绍 HDInsight 的 5 篇博客系列中的第 3 篇,将重点介绍 HDInsight 和 Azure Storage。
Windows Azure HDInsight 服务一个值得注意且与众不同的方面在于能够选择用于存储数据的位置。您可以将数据存储在计算节点本地的本机 HDFS 文件系统中,或使用 Azure Blob Store Container作为 HDFS 文件系统来存储数据。实际上,在配置 HDInsight 群集时,它默认情况下将在您的存储帐户中创建 Azure Blob Store Container作为默认 HDFS 文件系统。
或者,您可以通过自定义创建选项创建群集,以此来选择现有的 Azure Blob Store Container 作为默认 HDFS 文件系统。例如,在该屏幕截图中,您可以看到如何将名称为“netflix”的 Blob Store Container 指定为默认文件系统。
该Container 之前可能已配置为 HDInsight HDFS 文件系统,或者它可能是恰巧包含您要分析的数据的任意 Azure Blob Store Container!
在我们的案例中,netflix Container包含三个使用文件夹命名方案的 Blob:
使用 Azure Storage Container 的益处
尽管存储Container不在计算节点的本地,因此似乎有悖于将计算与存储归置在一起的 Hadoop 范例,但在 Azure Blob Store 容器中存储数据还是有多种益处:
- 数据重复使用和共享:计算节点内部的数据被“锁定”在 HDFS API 之后。这意味着只有能检测到 HDFS 并且有权访问计算群集的应用程序可以使用这些数据。Azure Storage Container中的数据既可通过 HDFS API,也可通过 Azure Blob Store REST API 进行访问。因此,可使用更大的一组应用程序和工具来生成和使用数据,并且不同应用程序生成数据的同时,其他应用程序可以使用这些数据。
- 数据归档:由于计算节点内部的数据的存续期限与您配置的HDInsight 群集的存续期限相同,因此您必须使群集的存续期限超出计算时间,或者在每次配置群集来执行计算时都必须将数据重新加载到群集中。在 Azure Storage Container中,您可以将数据存储任意长的时间。
- 数据存储成本:将数据长期存储在活动的 HDInsight 群集中的成本高于将数据存储在 Azure Storage Container中的成本,因为计算群集的成本高于 Azure Blob Store Container的成本。此外,由于生成每个计算群集时不必重新加载数据,从而可节省数据加载成本。
- 灵活伸缩:尽管 HDInsight 群集提供有伸缩功能的文件系统,但可伸缩的容量由您为群集配置的节点数决定。更改可伸缩的容量可能会成为一个比较复杂的过程,而通过使用 Azure Storage Container自动获得 Azure Blob Store 灵活伸缩功能则会简单得多。
- 地理区域复制:通过 Azure 门户可对 Azure Blob Store Container进行地理区域复制!尽管这可实现地理区域恢复和数据冗余,但为了恢复故障将数据复制到其他地理区域将大大影响您的系统性能并可能产生额外的成本。因此我们建议仅在数据的价值值得花费额外成本时才明智地选择地理区域复制。
此外,不将计算和存储归置在一起所暗含的性能成本实际上可通过将计算群集配置在靠近 Azure 数据中心内的存储帐户资源的方式来减少,Azure 数据中心中的高速网络使计算节点可以非常高效地访问 ASV 中的数据。在常规加载、计算和访问模式下,我们仅观察到轻微的性能降级,并且通常具有更快的访问速度!
还请注意,由于不必在每次配置HDInsight 群集时都将数据重新加载到文件系统,因此可以节省数据加载时间和数据移动费用!