我想用性能计数器(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()
我知道工作经理的pid。我还可以看到线程(chain datasource)的tid,它在执行期间运行execute()—命令。但是对于每个执行,tid都会改变,因此它不会与tid一起工作。有没有一种方法可以计算出运行execute()-命令的jobmanagers子进程的pid?rdd的每个转换(如flatmap)是否都有不同的子进程?如果是这样的话,是否有可能找出它们不同的PID?
1条答案
按热度按时间ma8fv8wu1#
单个运算符不会在不同的进程中执行。这个
JobManager
以及TaskManagers
作为java进程启动。这个TaskManager
然后运行一组并行任务(对应于操作符)。每个并行任务都在自己的线程中执行。启动flink时,系统将创建文件/tmp/your-name-taskmanager.pid
以及/tmp/your-name-jobmanager.pid
包含进程的pid。