Hadoop Mapreduce控制台输出的说明

时间:2014-08-25 09:07:11

标签: hadoop mapreduce console output

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

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. 所有地图在占用时段(ms)中花费的总时间
  2. 所有占用时隙减少的总时间(毫秒)
  3. 花费的CPU时间(毫秒)
  4. 物理内存(字节)
  5. 虚拟内存(字节)快照
  6. 提交的总堆使用量(字节)

1 个答案:

答案 0 :(得分:4)

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

要解释您要求的项目,

1)所有地图花费的总时间 - 以毫秒为单位运行地图任务所花费的总时间。包括任务 那些是以推测性方式开始的(推测意味着在等待指定的时间后运行失败或缓慢的工作,用哀叹的话来说,推测工作意味着重新运行任何特定的地图任务)。

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

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

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

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

6)提交的总堆使用量 - JVM中可用的内存总量(以字节为单位)

希望这会有所帮助。计数器的类别及其详细信息在权威指南中得到了很好的说明,如果您需要任何其他信息,请告知我们。

谢谢。

评论后的额外细节 -

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

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

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

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