如何找出Flinks执行进程的PID?

How to find out the PID of the Flinks execution process?

我想用性能计数器 (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() 命令的线程(CHAIN DataSource)的 TID。但是对于每次执行,TID 都会发生变化,因此它不会与 TID 一起工作。有没有办法找出运行 execute() 命令的 jobmanagers 子进程的 PID? rdd 的每个转换(例如 flatMap)是否有不同的子进程?如果是这样,是否可以找出它们不同的 PID?

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