0

我想用性能计数器(perf)来衡量 flinks 的性能。我的代码:

var text = env.readTextFile("<filename>")
var counts = text.flatMap { _.toLowerCase.split("\\W+") }.map { (_, 1) }.groupBy(0).sum(1)
counts.writeAsText("<filename_result>", WriteMode.OVERWRITE)
env.execute()

我知道jobmanager的PID。我还可以看到在执行期间运行 execute() 命令的线程(链数据源)的 TID。但是对于每次执行,TID 都会发生变化,因此它不会与 TID 一起使用。有没有办法找出运行execute()命令的jobmanagers子进程的PID?rdd 的每个转换(例如 flatMap)是否有不同的子进程?如果是这样,是否有可能找出它们不同的 PID?

4

1 回答 1

4

各个运算符不在不同的进程中执行。JobManagerTaskManagers是作为 Java 进程启动的。然后TaskManager运行一组并行任务(对应于算子)。每个并行任务都在自己的线程中执行。/tmp/your-name-taskmanager.pid当你启动 Flink 时,系统会创建/tmp/your-name-jobmanager.pid包含进程 PID 的文件。

于 2015-10-30T16:25:20.680 回答