我目前正在使用Hadoop。我想知道是否可以获得有关给定作业的map任务是从自己的节点还是从其他节点阅读数据的信息。我知道HDFS分布在所有节点中,但是否有任何计数器/指标可以说明,对于给定作业和给定map任务,从运行amp任务的同一节点读取了多少数据。以及通过网络读取了多少数据。
pbpqsu0x1#
Hadoop没有计数器来告诉您本地读取了多少数据,以及通过网络读取了多少数据。您唯一能做的就是合并不同的标准计数器,并在此基础上获得本地和网络读取数据的近似值。
考虑到EACHMap处理ONE个输入拆分,并且默认输入拆分大致相等,您可以使用以下公式计算本地处理的数据总量:
DATA_LOCAL_MAPS * MAP_INPUT_BYTES/(DATA_LOCAL_MAPS + RACK_LOCAL_MAPS + OTHER_LOCAL_MAPS)
乘法的第二项给出了每个Map任务的输入字节数
1条答案
按热度按时间pbpqsu0x1#
Hadoop没有计数器来告诉您本地读取了多少数据,以及通过网络读取了多少数据。
您唯一能做的就是合并不同的标准计数器,并在此基础上获得本地和网络读取数据的近似值。
考虑到EACHMap处理ONE个输入拆分,并且默认输入拆分大致相等,您可以使用以下公式计算本地处理的数据总量:
乘法的第二项给出了每个Map任务的输入字节数