【问题标题】:Explanation for Hadoop Mapreduce Console OutputHadoop Mapreduce 控制台输出说明
【发布时间】:2014-10-18 09:33:00
【问题描述】:

我是hadoop环境的新手。我已经设置了 2 节点集群 hadoop。然后我运行示例 mapreduce 应用程序。 (实际上是字数)。然后我得到这样的输出

File System Counters
    FILE: Number of bytes read=492
    FILE: Number of bytes written=6463014
    FILE: Number of read operations=0
    FILE: Number of large read operations=0
    FILE: Number of write operations=0
    HDFS: Number of bytes read=71012
    HDFS: Number of bytes written=195
    HDFS: Number of read operations=404
    HDFS: Number of large read operations=0
    HDFS: Number of write operations=2
Job Counters 
    Launched map tasks=80
    Launched reduce tasks=1
    Data-local map tasks=80
    Total time spent by all maps in occupied slots (ms)=429151
    Total time spent by all reduces in occupied slots (ms)=72374
Map-Reduce Framework
    Map input records=80
    Map output records=8
    Map output bytes=470
    Map output materialized bytes=966
    Input split bytes=11040
    Combine input records=0
    Combine output records=0
    Reduce input groups=1
    Reduce shuffle bytes=966
    Reduce input records=8
    Reduce output records=5
    Spilled Records=16
    Shuffled Maps =80
    Failed Shuffles=0
    Merged Map outputs=80
    GC time elapsed (ms)=5033
    CPU time spent (ms)=59310
    Physical memory (bytes) snapshot=18515763200
    Virtual memory (bytes) snapshot=169808543744
    Total committed heap usage (bytes)=14363394048
Shuffle Errors
    BAD_ID=0
    CONNECTION=0
    IO_ERROR=0
    WRONG_LENGTH=0
    WRONG_MAP=0
    WRONG_REDUCE=0
File Input Format Counters 
    Bytes Read=29603
File Output Format Counters 
    Bytes Written=195

对我得到的每一个数据有什么解释吗?特别是,

  1. 所有地图在占用槽中花费的总时间(毫秒)
  2. 所有减少在占用槽中花费的总时间(毫秒)
  3. 花费的 CPU 时间(毫秒)
  4. 物理内存(字节)
  5. 虚拟内存(字节)快照
  6. 提交的堆使用总量(字节)

【问题讨论】:

    标签: hadoop mapreduce console output


    【解决方案1】:

    Mapreduce 框架在作业已提交执行时维护计数器。这些计数器显示给用户以了解作业统计信息并查看基准和性能分析。您的工作输出向您展示了一些计数器。关于计数器的权威指南第 8 章中有一个很好的解释,我建议你检查一次。

    为了解释你要求的项目,

    1) 所有地图花费的总时间 - 运行地图任务所花费的总时间,以毫秒为单位。包括任务 投机启动(投机意味着在等待指定时间后运行失败或缓慢的作业,遗憾的是,投机作业意味着重新运行任何特定的地图任务)。

    2) 所有 reduce 花费的总时间 - 运行 reduce 任务所花费的总时间,以毫秒为单位。

    3) CPU Time - 以毫秒为单位的任务的累积 CPU 时间

    4) 物理内存 - 任务使用的物理内存(以字节为单位),这里的内存也计算用于溢出的总内存。

    5) 总虚拟内存 - 任务使用的虚拟内存,以字节为单位

    6) Total commit heap usage - JVM 中可用的内存总量(以字节为单位)

    希望这会有所帮助。计数器的类别及其详细信息在权威指南中整齐地给出,如果您需要任何其他信息,请告诉我。

    谢谢。

    评论后的额外细节--

    RAM 是处理作业时使用的主要内存。数据将被带到 RAM 并处理作业并将其保存在 RAM 中。但是,数据可能大于分配的 RAM 大小。在这种情况下,操作系统将数据保存在磁盘中并将其与 RAM 交换,以允许更少的 RAM 足以用于内存中较高的文件。例如:RAM 为 64MB,假设文件大小为 128MB,则先将 64MB 保存在 RAM 中,然后将其他 64MB 保存在 DISK 中,然后交换。虽然它不会将其保持为 64MB 和 64MB,但在内部它分为段/页。

    我只是举了一个例子来理解。虚拟内存是通过使用页面并与磁盘和 RAM 交换来处理大于 RAM 的文件的概念。因此,对于上述情况,它实际上使用磁盘中的 64 MB 作为 RAM,因此称为虚拟内存。

    希望你能理解。如果您对答案感到满意,请接受它作为答案。如果您有任何问题,请告诉我。

    堆用于对象存储的JVM内存,在命令行中使用JVM_OPTS设置。通常所有的java程序都需要有这些设置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-01
      • 2016-01-21
      • 1970-01-01
      相关资源
      最近更新 更多