以下是我对 InputSplits 及其与映射器的交互的理解......如果我在某处错了,请纠正我......
InputFormat 生成 InputSplits,并为每个 inputSplit 生成一个映射任务。对于数据局部性,通常在物理上承载 InputSplit 引用的块的数据节点上选择一个映射槽。想象一下,这里没有数据复制。
如果块所在的数据节点上没有可用的映射槽会怎样?jobtracker 会等待在这个数据节点上获得一个空槽,然后在这个数据节点上调度映射器,还是会在任何其他有空闲映射槽的节点上调度映射,然后从第一个数据节点流式传输数据?