我目前正在使用Hadoop。我想知道是否可以获取有关给定作业的 map task 是从其自己的节点还是从其他节点读取数据的信息。我知道HDFS分布在所有节点之间,但是对于给定的作业和给定的映射任务,是否有任何计数器/度量标准可以说明,从同一个节点读取了多少数据,而amp任务正在运行?数据是通过网络读取的。
最佳答案
Hadoop没有计数器来告诉您本地读取了多少数据以及通过网络读取了多少数据。
您唯一可以做的就是组合不同的标准计数器,然后基于该计数器获得本地和网络读取数据的近似值。
*(您应在分发Hadoop时检查计数器的确切名称)
考虑到 EACH 映射处理 ONE 输入拆分,并且默认输入拆分近似相等,您可以使用以下公式找到本地处理的数据总量:
DATA_LOCAL_MAPS * MAP_INPUT_BYTES/(DATA_LOCAL_MAPS + RACK_LOCAL_MAPS +
OTHER_LOCAL_MAPS)
乘法的第二项给出每个映射任务的输入字节数
关于hadoop - 从同一节点统计信息读取Hadoop映射任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11960927/