hadoop - 从同一节点统计信息读取Hadoop映射任务

标签 hadoop mapreduce microsoft-distributed-file-system

我目前正在使用Hadoop。我想知道是否可以获取有关给定作业的 map task 是从其自己的节点还是从其他节点读取数据的信息。我知道HDFS分布在所有节点之间,但是对于给定的作业和给定的映射任务,是否有任何计数器/度量标准可以说明,从同一个节点读取了多少数据,而amp任务正在运行?数据是通过网络读取的。

最佳答案

Hadoop没有计数器来告诉您本地读取了多少数据以及通过网络读取了多少数据。

您唯一可以做的就是组合不同的标准计数器,然后基于该计数器获得本地和网络读取数据的近似值。

  • DATA_LOCAL_MAPS:使用本地数据(对于计算机本地)的作业中的 map task 数。
  • RACK_LOCAL_MAPS:在与输入数据相同的机架中的节点上运行的 map task 的数量。
  • OTHER_LOCAL_MAPS:在与输入数据所在的机架不同的机架上的节点上运行的任务数。
  • MAP_INPUT_BYTES:告诉您所有 map task (整个作业)总共消耗了多少数据

  • *(您应在分发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/

    相关文章:

    hadoop - 如何从复杂的 pig 数据类型中提取简单的 pig 数据类型

    python - 减少对 - python

    java - Hadoop - 文本到浮点转换的问题

    hadoop - 在没有HDFS的情况下是否可以在伪分布式运行中运行Hadoop?

    hadoop - Datanode不断死亡

    哈多普 |架构Linux | DFS : cannot launch start-dfs. sh

    amazon-s3 - 将目录作为压缩文件从 Elastic MapReduce 上传到 S3

    hadoop - Pig 版本不匹配 (Hadoop)

    azure - AzCopy 是否可以直接从 HDFS 而不是从本地存储将文件传输到 Azure?

    java - 如何通过 Java 中的递归深度优先搜索确定图中两个节点是否相连?