请教高手,Hadoop 运行时物理结构是怎样的?

我知道生产环境下,hadoop的datanode是分布在各个机器上的而且split可能包含多个block里的东西,那么:

1:一个task处理的到底是一个block还是一个split呢?

2:在执行mapreduce任务的时候,各个map 和 reduce 的task是在各个机器节点上执行的吗?如果我的程序在执行map的时候报了溢出,那是什么原因呢?

真心请教,谢谢!