选择流分析平台:Apache Storm 与 Azure 流分析的比较

Azure 提供了多种用于流数据分析的解决方案:Azure 流分析和 Azure HDInsight 上的 Apache Storm。 这两个分析平台都具备 PaaS 解决方案的优势。 但这些平台的功能以及配置和管理方式却存在一些显著差异。

本文提供对功能的并排比较,帮助选择 Apache Storm 或 Azure 流分析作为云分析平台。

常规功能

Azure 流分析

Apache Storm on HDInsight

是否是开放源?

否。 Azure 流分析是一种 Azure.CN 专有产品/服务。

是的。 Apache Storm 是一种由 Apache 授权的技术。

Azure 支持?

硬件要求

无。 Azure 流分析是一种 Azure 服务。

无。 Apache Storm 是一种 Azure 服务。

顶层单位

用户可部署和监视流式处理作业。

用户可部署和监视整个群集,而群集可以托管多个 Storm 作业和其他工作负荷(包括 Batch)。

定价

按照处理的数据量以及作业每小时运行所需的流式处理单元数来定价。

有关详细信息,请参阅流分析定价

采购单位根据群集计算,收费则根据群集的运行时间来计算,与部署的作业无关。

有关详细信息,请参阅 HDInsight 定价

创作

Azure 流分析

Apache Storm on HDInsight

功能:是否支持 SQL DSL?

是的。 流分析提供类似于 SQL 的语言,以便创建转换。

否。 用户需使用 Java 或 C# 编写代码,或使用 Trident API。

功能:临时运算符?

默认支持开窗聚合和临时联接。

临时运算符必须由用户来实现。

开发体验

用户可通过 Azure 门户使用派生自实时流的示例数据,创建、调试和监视作业。

对于 .NET,用户可通过 Visual Studio 进行开发、调试和监视。 对于 Java 或其他语言,用户可使用自己选择的 IDE。

调试支持

可借助基本作业状态和操作日志进行调试。 流分析目前不允许用户指定日志中包含哪些内容或多少内容(即详细模式)。

提供详细日志。 用户可通过 Visual Studio 访问日志,或通过登录到群集来直接访问日志。

是否支持使用自定义代码的可扩展性?

部分支持 JavaScript UDF。 有关详细信息,请参阅 JavaScript UDF 集成

是的。 用户可使用 C#、Java 或 Storm 上支持的任何其他语言编写自定义代码。

数据源(输入)和输出

Azure 流分析

Apache Storm on HDInsight

输入数据源

Azure 事件中心和 Azure Blob 存储。

连接器适用于 Azure 事件中心、Azure 服务总线、Kafka 等。 用户可使用自定义代码创建其他连接器。

输入数据格式

Avro、JSON、CSV

用户可使用自定义代码来实现任何格式。

输出

流式处理作业可以有多个输出。 支持的输出:Azure 事件中心、Azure Blob 存储 和、Azure SQL DB。

Storm 在拓扑中支持多种输出,每种输出都可以具有用于下游处理的自定义逻辑。 Storm 包括适用于 Power BI、Azure 事件中心、Azure Blob 存储、Azure Cosmos DB、SQL 和 HBase 的连接器。 用户可使用自定义代码创建其他连接器。

数据编码格式

必须使用 UTF-8 对数据进行格式化。

用户可使用自定义代码来实现任何数据编码格式。

管理和操作

Azure 流分析

Apache Storm on HDInsight

作业部署模型

Azure 门户、PowerShell 和 REST API。

Azure 门户、PowerShell、Visual Studio 和 REST API。

监视(统计信息、计数器等)

监视是使用 Azure 门户和 REST API 实现的。 用户还可以配置 Azure 警报。

监视是使用 Storm UI 和 REST API 实现的。

可伸缩性

可伸缩性取决于每个作业的流式处理单位 (SU) 数目。 每个流式处理单位的处理速度高达 1 MB/秒,最大值为 50 个单位。 有关详细信息,请参阅通过扩展增大吞吐量

可伸缩性取决于 HDInsight Storm 群集中的节点数。 节点数的上限由用户的 Azure 配额来定义。

数据处理限制

用户可以提高或降低流式处理单位数来提高数据处理速度(上限为 1 GB/秒)或优化成本。

用户可以增大或缩小群集。

停止/恢复

停止,并从上次停止的位置恢复。

停止,并根据水印从上次停止的位置恢复。

服务和框架更新

自动修补,不停机。

自动修补,不停机。

通过确保服务高度可用并确保 SLA 来保证业务连续性

  • SLA:99.9% 的运行时间
  • 从故障自动恢复
  • 内置有状态临时运算符恢复功能

SLA:99.9% 的 Storm 群集运行时间。

Apache Storm 是一种容错性流式处理平台。 但是,用户必须负责确保流式处理作业不间断运行。

高级功能

Azure 流分析

Apache Storm on HDInsight

延迟到达和无序事件处理

内置可配置策略可以重新排序、删除事件或调整事件时间。

用户必须实现相关逻辑来处理这种情况。

引用数据

Azure Blob 存储提供引用数据,内存中缓存最大大小为 100 MB。 引用数据由服务刷新。

数据大小没有限制。 连接器适用于 HBase、Azure Cosmos DB、SQL Server 和 Azure。 用户可使用自定义代码创建其他连接器。 必须使用自定义代码刷新引用数据。

机器学习集成

可在作业创建过程中将已发布的 Azure 机器学习模型配置为各种函数。

通过 Storm Bolt 提供。