1. 简介
Google Cloud Dataflow
最后更新时间:2020 年 5 月 26 日
什么是 Dataflow?
Dataflow 是一种用于执行多种数据处理模式的托管式服务。本网站上的文档介绍了如何使用 Dataflow 部署批量数据处理流水线和流式数据处理流水线,包括各项服务功能的使用说明。
Apache Beam SDK 是一个开源编程模型,您可以使用它来开发批处理流水线和流处理流水线。您可以使用 Apache Beam 程序创建流水线,然后在 Dataflow 服务上运行这些流水线。Apache Beam 文档提供了有关 Apache Beam 编程模型、SDK 和其他运行程序的深入概念信息和参考资料。
快速进行流式数据分析
Dataflow 可实现快速、简化的流式数据流水线开发,且数据延迟时间更短。
简化运营和管理
Dataflow 的无服务器方法消除了数据工程工作负载的运营开销,让团队可以专注于编程,而无需管理服务器集群。
降低总拥有成本
资源自动扩缩功能搭配费用优化的批处理功能,使得 Dataflow 可提供几乎无限的容量来管理季节性和峰值工作负载,而不会超支。
主要元素
自动化资源管理和动态工作负载再平衡
Dataflow 可自动预配和管理处理资源,以尽可能缩短延迟时间并提高利用率,因此您无需手动启动或预留实例。工作分区也是自动执行的,并且经过了优化以动态再平衡进度滞后的工作。无需苦苦寻找“热点键”或预处理输入数据。
横向自动扩缩
横向自动扩缩工作器资源规模以实现最佳的吞吐量,从而获得更好的整体性价比。
面向批处理的灵活资源调度价格
对于调度时间较为灵活的处理作业(例如夜间作业),采用灵活资源调度 (FlexRS) 模式进行批处理可以享受更低的价格。系统会将这些灵活作业放入队列中,并保证在六小时内检索并执行这些作业。
本次变更包含的内容
在此 Codelab 中,您将通过 Dataflow SQL 界面提交 SQL 语句,以开始使用 Dataflow SQL。然后,您将使用 Dataflow 监控界面探索正在运行的流水线。
学习内容
- 如何在 Dataflow SQL 界面中将 SQL 语句作为 Dataflow 作业提交。
- 如何导航到 Dataflow 流水线。
- 探索由 SQL 语句创建的 Dataflow 图。
- 探索图表提供的监控信息。
所需条件
- 启用了结算功能的 Google Cloud Platform 项目。
- 已启用 Google Cloud Dataflow 和 Google Cloud PubSub。
2. 准备工作
确保您已启用 Dataflow API 和 Cloud Pub/Sub API。您可以通过查看 API 的 &服务页面。
3. 访问 Dataflow SQL 界面
Dataflow SQL 界面是用于创建 Dataflow SQL 作业的 BigQuery 网页界面设置。您可以通过 BigQuery 网页界面访问 Dataflow SQL 界面。
- 转到 BigQuery 网页界面。
- 切换到 Cloud Dataflow 引擎。
- 点击更多下拉菜单,然后选择查询设置。
- 在查询设置菜单中,选择 Dataflow 引擎。
- 在未启用 Dataflow API 和 Data Catalog API 时显示的提示中,点击启用 API。
- 点击保存。
您也可以通过 Dataflow 监控界面访问 Dataflow SQL 界面。
- 转到 Dataflow 监控界面。
- 点击从 SQL 创建作业。
4. 使用 SQL 查询运行 Dataflow 作业
编写 Dataflow SQL 查询
Dataflow SQL 查询使用 Dataflow SQL 查询语法。Dataflow SQL 查询语法类似于 BigQuery 标准 SQL。您可以使用 Dataflow SQL 流处理扩展程序来汇总来自持续更新的 Dataflow 来源(例如 Pub/Sub)的数据。例如,以下查询会统计每分钟 Pub/Sub 出租车行程流中的乘客人数:
SELECT
TUMBLE_START('INTERVAL 1 MINUTE') as period_start,
SUM(passenger_count) AS pickup_count
FROM pubsub.topic.`pubsub-public-data`.`taxirides-realtime`
WHERE
ride_status = "pickup"
GROUP BY
TUMBLE(event_timestamp, 'INTERVAL 1 MINUTE')
运行 Dataflow SQL 查询
当您运行 Dataflow SQL 查询时,Dataflow 会将查询转换为 Apache Beam 流水线并执行该流水线。
您可以使用 Cloud Console 或 gcloud 命令行工具运行 Dataflow SQL 查询。
如需运行 Dataflow SQL 查询,请使用 Dataflow SQL 界面。
- 转到 Dataflow SQL 界面。
- 在查询编辑器中输入上面的 Dataflow SQL 查询。
- 点击“创建 Cloud Dataflow 作业”以打开作业选项面板。
- (可选)点击“显示可选参数”并浏览列表。
- 在该面板的“目标”部分中,选择 BigQuery 作为输出类型。
- 选择数据集 ID 并创建表名称“passengers_per_min”
- 点击“创建”。
如需详细了解如何查询数据和编写 Dataflow SQL 查询结果,请参阅使用 Dataflow SQL。
5. 在 Dataflow 监控界面上探索作业
使用 Dataflow 托管式服务执行流水线时,您可以使用 Dataflow 的 Web 监控界面来查看该作业和任何其他作业。通过此监控界面,您可以查看 Dataflow 作业并与之交互。
您可以使用 Google Cloud Console 访问 Dataflow 监控界面。此监控界面可以显示以下内容:
- 当前正在运行的所有 Dataflow 作业和过去 30 天内运行的作业的列表。
- 每个流水线的图形表示。
- 有关作业状态、执行情况和 SDK 版本的详情。
- 指向运行流水线的 Google Cloud 服务(如 Compute Engine 和 Cloud Storage)相关信息的链接。
- 作业执行期间出现的任何错误或警告。
您可以在 Dataflow 监控界面中查看作业监控图表。这些图表会显示流水线作业持续时间内的指标,并包含以下信息:
- 步骤级可见性,可帮您确定哪些步骤会导致流水线延迟问题。
- 可揭示出异常行为的统计信息。
- 可帮助确定来源和接收器中的瓶颈问题的 I/O 指标。
访问 Dataflow 监控界面
如需访问 Dataflow 监控界面,请按以下步骤操作:
- 前往 Cloud 控制台:
- 选择您的 Google Cloud 项目。
- 点击左上角的菜单。
- 前往“大数据”部分,然后点击 Dataflow。
此时系统将显示 Dataflow 作业及其状态的列表。
Cloud 控制台中的 Dataflow 作业列表,其中包含处于“正在运行”“失败”和“成功”状态的作业。
作业可能具有以下状态:
- —:监控界面尚未从 Dataflow 服务收到状态。
- 正在运行:作业目前正在运行。
- 未开始:作业已创建,但系统在启动前需要一些时间进行准备。
- 已加入队列:一个 FlexRS 作业已加入队列。
- 正在取消...:正在取消作业。
- 已取消:用户已取消作业。
- 正在排空...:正在排空作业。
- 已排空:用户已排空工作。
- 正在更新...:正在更新作业。
- 已更新:用户已更新作业。
- 成功:作业已成功完成。
- 失败:作业未能完成。
查找带有“dfsql”的作业作为职位的一部分,然后点击该职位的名称。
“作业详情”页面,其中包含以下内容:
- 作业图:流水线的可视化表示
- 作业指标:有关作业执行情况的指标
- 作业信息面板:有关流水线的描述性信息
- 作业日志:Dataflow 服务在作业级层生成的日志
- 工作器日志:Dataflow 服务在工作器级别生成的日志
- 作业错误报告:显示沿所选时间轴发生的错误以及所有已记录错误计数的图表
- 时间选择器:可用于调整指标时间范围的工具
在“作业详情”页面中,您可以使用“作业图”和“作业指标”标签页来切换作业视图。
- 点击“作业指标”标签页并浏览图表
6. 停止 Dataflow SQL 作业
如需停止 Dataflow SQL 作业,请使用取消命令。不支持通过“排空”停止 Dataflow SQL 作业。