为了理解Apache Spark流处理应用程序,增加了新的可视化功能

新しい視覚化手法を用いてApache Spark Streamingアプリケーションを理解するためのブログ記事です。

本篇文章以Spark 1.4.0作为前提,并且与最新版本的Spark UI的构成有所不同。

上一次,我们介绍了为了理解Spark应用程序的操作而引入的新的可视化功能,该功能是在Apache Spark 1.4.0中实现的。在相同的主题下,本文将重点介绍为了更好地理解Spark流处理应用程序而引入的新的可视化功能。我们对Spark UI的流处理选项卡进行了以下更新。

    • イベントの速度、スケジューリングの遅れ、過去のバッチの処理時間のタイムライン、統計情報

 

    それぞれのバッチの全てのSparkジョブの詳細

另外,为了更好地理解在流媒体操作语境中的作业执行,执行DAG的可视化已通过流媒体信息进行了扩展。

让我们使用端到端的样本来分析流媒体应用程序,以便更详细地研究。

处理趋势的时间轴、直方图

根据图2可见,该应用程序存在两个源(SocketReceiver-0和SocketReceiver-1),其中一个源因为短时间内停止了数据的接收,导致整体接收速度降低。

查看本页面底部的图1下方(D部分),可以看到处理时间显示为平均20毫秒的批处理。处理时间比批处理间隔(在此示例中为1秒)更短意味着批处理会立即进行处理(如图1中的E所示),而不必等待上一个批处理完成。这几乎没有任何调度延迟(定义为批处理等待上一个批处理完成的时间)。调度延迟是您的流媒体应用程序稳定性的重要指标,可以通过此用户界面轻松监控。

批次的详细信息 (Batch details)

从图4中可以看出,存在生成3个Spark作业的输出操作。为了进一步进行分析,可以点击作业ID来查看阶段和任务。

执行流式RDD的DAG

黑色的点表示由16:06:50批次的DStream生成的RDD。蓝色的框表示用于转换RDD的DStream操作,并且粉色的框表示这些转换所发生的阶段。这整体上表示以下内容。

    • 16:06:50のバッチにおける単一のsocket text streamからデータを受け取っている。

 

    データからワードカウントを行うために、flatMap, map, reduceByKeyの変換を用いる2つのステージから構成されたジョブ。

图6提供了有关执行Spark作业进行单词计数的数据来自三个批次的大量信息。

    • 最初の3つのステージは、ウィンドウ内の3つのバッチのそぞれでワードカウントを行います。これは、mapとflatMapオペレーションを用いた上述のシンプルなNetworkWordCountの最初のステージと同じようなものです。しかし、以下の相違点には注意してください。

2つのsocket text streamのそれぞれから得られる2つの入力RDDが存在します。これら2つのRDDは単一のRDDにunionされ、さらにバッチごとの中間カウントに変換されます。
これらのステージの2つはグレーになっていますが、これは古い2つのバッチはすでにメモリーにキャッシュされており、再計算を必要としないためです。最新のバッチのみが最初からの計算を必要とします。

右の最後のステージは、バッチごとのワードカウントを「ウィンドウ内の」ワードカウントに結合するためにreduceByKeyAndWindowを使用しています。

通过这些可视化,开发人员可以监控流媒体应用程序的状态和趋势,并了解内部Spark任务与执行计划之间的关系。

未来的发展方向

資料湖無料試用版

Databricks 免费试用

bannerAds