流处理

流处理是对接收到的新数据事件的连续处理。

什么是流处理?

流是从生产者到消费者的一系列无限事件。大量数据生成为金融交易、传感器测量或 Web 服务器日志等事件流。

从生产者到消费者的数据流

Streamz 等流处理库有助于构建用于管理连续数据流的流程,允许应用程序在事件发生时对其作出响应。

Streamz 流处理库流程

流处理流程通常涉及多个操作,例如过滤、聚合、计数、分析、转换、充实、分支、连接、流量控制、早期阶段反馈、回压和存储。

为何选择流处理?

数据流的持续处理在许多应用程序中都非常有帮助,例如:

  • 医疗健康:持续监控仪器数据
  • 智慧城市:交通模式和拥塞管理
  • 制造:优化和预测性维护
  • 运输:优化路线和燃料消耗
  • 汽车:智能汽车
  • 网络安全和异常检测:Web 或网络日志处理
  • 金融:股票上市时间序列
  • 机器学习:实时预测
  • 广告:基于位置或动作的广告

由于各企业高度依赖实时分析、推理、监控等功能,因此流处理市场正经历指数级发展。现在,基于流构建的服务是日常业务的核心组成部分,结构化遥测事件和非结构化日志正以每年超过 5 倍的速度增长。在现代商业环境中,这种规模的大数据流愈加复杂并且难以有效地运行,因此,经济高效的可靠流对其至关重要。

GPU 加速流处理

NVIDIA RAPIDS cuStreamz 是首款 GPU 加速流数据处理库,旨在加速流处理吞吐量并降低总拥有成本 (TCO)。NVIDIA 的 cuStreamz 制作流程每年可节省数十万美元。cuStreamz 使用 Python 编写,基于 RAPIDS(用于数据科学库的 GPU 加速器)而构建。通过添加 GPU 支持的 Flink 可以看出,端到端 GPU 加速正迅速成为行业标准,NVIDIA 很高兴能成为此趋势的一个组成部分。

cuStreamz 基于以下内容构建:

  1. Streamz,一个能够帮助构建管理连续数据流流程的开源 Python 库;
  2. Dask,一个能够并行处理流工作负载的稳健可靠的调度程序;
  3. RAPIDS,一种用于流计算的 GPU 加速库套件。

cuStreamz 通过在后台利用 RAPIDS cuDF 来加速 Streamz,从而使用 GPU 加速流数据计算。cuStreamz 还受益于 cuDF 的加速 JSON、Parquet 和 CSV 读取器和写入器。cuStreamz 团队构建了一个加速 Kafka 数据源连接器,能够非常快速地将 Kafka 的数据直接读取到 cuDF 数据帧中,从而显著提升端到端性能。然后,可以使用 Dask 在分布式模式下并行运行流流程,从而大规模提高性能。

Dask 集群

在下图中对 cuStreamz 架构进行了概括总结。cuStreamz 是连接 Python 流与 GPU 的桥梁,应用了检查点和状态管理等复杂可靠的流功能。cuStreamz 还提供了必要的基础模块来编写流作业,这些作业在 GPU 上安全运行,并且性能更好,成本更低。

cuStreamz 架构

GPU 加速的端到端数据科学

基于 NVIDIA® CUDA-X AI 构建的 RAPIDS 开源软件库,使您完全能够在 GPU 上执行端到端数据科学和分析流程。此套件依靠 NVIDIA CUDA® 基元进行低级别计算优化,但通过用户友好型 Python 接口能够实现 GPU 并行化和高带宽显存速度。

完全在 GPU 上执行端到端数据科学和分析流程

借助 RAPIDS GPU DataFrame,数据可以通过一个类似 Pandas 的接口加载到 GPU 上,然后用于各种连接的机器学习和图形分析算法,而无需离开 GPU。这种级别的互操作性是通过 Apache Arrow 这样的库实现的。允许加速数据准备、机器学习和深度学习等端到端流程。

RAPIDS cuML 的机器学习算法和数学基元遵循熟悉的类似于 scikit-learn 的 API。单块 GPU 和大型数据中心部署均支持 XGBoost 等主流算法。针对大型数据集,相较于同等功效的 CPU,这些基于 GPU 的实施方案能够以 10 到 50 倍的速度更快地完成任务。

RAPIDS 支持在许多热门数据科学库之间共享设备内存。这样可将数据保留在 GPU 上,并省去了来回复制主机内存的高昂成本。 

热门数据科学库。

后续步骤

了解: