1 个任务跟踪器可以运行多个 JVM 吗?



1 个任务跟踪器可以运行多个 JVM 吗?

场景如下:

假设有 2 个文件(A 和 B)和 2 个数据节点(D1 和 D2)。

当你加载 A 时,假设它在 D1 和 D2 上被拆分为 A1 和 A2当你加载B时,假设它在D1和D2上被拆分为B1和B2。

出于某种原因,我们假设 D1 正忙于其他一些任务D2 可用,并且提交了几个工作,一个使用文件 A,另一个使用 usign 文件 B。

所以现在D2可用,并且有块A2和B2。作业跟踪器是将代码提交到 D2 上的任务跟踪器,并一次运行 A2 和 B2 的任务,还是它会先运行 A2,完成后它将运行 B2?

如果是这样,是否可以并行运行这两个任务,这意味着 1 个任务跟踪器和 2 个 jvm,或者它会在 D2 上创建/生成 2 个任务跟踪器?

默认情况下,任务跟踪器为每个任务生成一个 JVM。您可以通过设置以下配置参数来重用 jvm:mapred.job.reuse.jvm.num.tasks

任务跟踪器 (TT) 可以在一台机器上并行启动多个映射或减少任务。默认情况下,TT 会启动 2 个地图 (mapreduce.tasktracker.map.tasks.maximum) 和 2 个 reduce (mapreduce.tasktracker.reduce.tasks.maximum) 任务。必须在映射默认.xml中配置属性。

最新更新