了解 Spark 监控 UI
Understanding Spark monitoring UI
对于 运行 Spark 作业,此处是 URL 的 UI 详细信息的一部分:http://localhost:4040/stages/stage/?id=1&attempt=0
http://spark.apache.org/docs/1.2.0/monitoring.html 的文档没有详细说明这些参数中的每一个。 "Input" 、 "Write Time" 和 "Shuffle Write" 列表示什么?
从这个屏幕截图可以看出,这 4 个任务已经 运行 了 1.3 分钟,我正试图发现是否存在瓶颈,然后确定瓶颈发生的位置。
Spark 配置为使用 4 个核心,我想这就是为什么 UI 中显示了 4 个任务,每个任务 运行 在一个核心上?
"Shuffle Write" 尺寸由什么决定?
在我的控制台输出有很多日志消息:
15/02/11 20:55:33 信息 rdd.HadoopRDD:输入拆分:文件:/c:/data/example.txt:103306+103306
11 年 2 月 15 日 20:55:33 信息 rdd.HadoopRDD:输入拆分:文件:/c:/data/example.txt:0+103306
11 年 2 月 15 日 20:55:33 信息 rdd.HadoopRDD:输入拆分:文件:/c:/data/example.txt:0+103306
11 年 2 月 15 日 20:55:33 信息 rdd.HadoopRDD:输入拆分:文件:/c:/data/example.txt:103306+103306
11 年 2 月 15 日 20:55:33 信息 rdd.HadoopRDD:输入拆分:文件:/c:/data/example.txt:103306+103306
11 年 2 月 15 日 20:55:33 信息 rdd.HadoopRDD:输入拆分:文件:/c:/data/example.txt:0+103306
11 年 2 月 15 日 20:55:33 信息 rdd.HadoopRDD:输入拆分:文件:/c:/data/example.txt:0+103306
11 年 2 月 15 日 20:55:34 信息 rdd.HadoopRDD:输入拆分:文件:/c:/data/example.txt:103306+103306
11 年 2 月 15 日 20:55:34 信息 rdd.HadoopRDD:输入拆分:文件:/c:/data/example.txt:103306+103306
.....................
这些文件是否被拆分为多个较小的大小,每个 "Input" 大小为 100.9KB(在 Spark UI 屏幕截图中指定)映射到这些片段之一?
并非所有内容都打印在日志中,尤其是任何自定义代码(除非您自己打印)。当某些东西 运行 的时间太长时,您可能需要在其中一个执行程序上进行线程转储并查看堆栈以查看计算进度。
输入是您的 Spark 作业正在摄取的数据大小。例如,它可以是您定义的每个地图任务正在使用的数据。
Shuffle 写入定义为写入磁盘的字节,以便将来执行任务。因此,spark 将数据写入磁盘以启用地图输出的传输。例如,如果您正在尝试连接并且需要将数据洗牌到其他节点,那么这就是将传输到其他节点的数据。
任务不 运行 在核心上,任务 运行 在执行器上。这个执行者反过来使用核心。
也请阅读 link 以便更好地理解。
对于 运行 Spark 作业,此处是 URL 的 UI 详细信息的一部分:http://localhost:4040/stages/stage/?id=1&attempt=0
http://spark.apache.org/docs/1.2.0/monitoring.html 的文档没有详细说明这些参数中的每一个。 "Input" 、 "Write Time" 和 "Shuffle Write" 列表示什么?
从这个屏幕截图可以看出,这 4 个任务已经 运行 了 1.3 分钟,我正试图发现是否存在瓶颈,然后确定瓶颈发生的位置。
Spark 配置为使用 4 个核心,我想这就是为什么 UI 中显示了 4 个任务,每个任务 运行 在一个核心上?
"Shuffle Write" 尺寸由什么决定?
在我的控制台输出有很多日志消息:
15/02/11 20:55:33 信息 rdd.HadoopRDD:输入拆分:文件:/c:/data/example.txt:103306+103306 11 年 2 月 15 日 20:55:33 信息 rdd.HadoopRDD:输入拆分:文件:/c:/data/example.txt:0+103306 11 年 2 月 15 日 20:55:33 信息 rdd.HadoopRDD:输入拆分:文件:/c:/data/example.txt:0+103306 11 年 2 月 15 日 20:55:33 信息 rdd.HadoopRDD:输入拆分:文件:/c:/data/example.txt:103306+103306 11 年 2 月 15 日 20:55:33 信息 rdd.HadoopRDD:输入拆分:文件:/c:/data/example.txt:103306+103306 11 年 2 月 15 日 20:55:33 信息 rdd.HadoopRDD:输入拆分:文件:/c:/data/example.txt:0+103306 11 年 2 月 15 日 20:55:33 信息 rdd.HadoopRDD:输入拆分:文件:/c:/data/example.txt:0+103306 11 年 2 月 15 日 20:55:34 信息 rdd.HadoopRDD:输入拆分:文件:/c:/data/example.txt:103306+103306 11 年 2 月 15 日 20:55:34 信息 rdd.HadoopRDD:输入拆分:文件:/c:/data/example.txt:103306+103306 .....................
这些文件是否被拆分为多个较小的大小,每个 "Input" 大小为 100.9KB(在 Spark UI 屏幕截图中指定)映射到这些片段之一?
并非所有内容都打印在日志中,尤其是任何自定义代码(除非您自己打印)。当某些东西 运行 的时间太长时,您可能需要在其中一个执行程序上进行线程转储并查看堆栈以查看计算进度。
输入是您的 Spark 作业正在摄取的数据大小。例如,它可以是您定义的每个地图任务正在使用的数据。
Shuffle 写入定义为写入磁盘的字节,以便将来执行任务。因此,spark 将数据写入磁盘以启用地图输出的传输。例如,如果您正在尝试连接并且需要将数据洗牌到其他节点,那么这就是将传输到其他节点的数据。
任务不 运行 在核心上,任务 运行 在执行器上。这个执行者反过来使用核心。
也请阅读 link 以便更好地理解。