3
votes

I started playing with hadoop 2.6.0, and set up a pseudo-distributed single-node system according to the official documentation.

When I run the simple Map Reduce (MR1) example (see "Pseudo-Distributed Operation -> Execution"), then the overall execution time is approx. 7 sec. More precise, bash's time gives:

real 0m6.769s
user 0m7.375s
sys 0m0.400s

When I run the same example via Yarn (MR2) (see "Pseudo-Distributed Operation -> YARN on Single Node"), then the overall execution time is approx. 100 sec , hence extremely slower. bash's time gives:

real 1m38.422s
user 0m4.798s
sys 0m0.319s

Hence, there is (for some reason) a large overhead outside userspace. But why?

Both examples were executed via

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep input output 'dfs[a-z.]+'

Here more details for pure Map Reduce (MR1):

(...)
15/04/10 21:12:17 INFO mapreduce.Job: Counters: 38
    File System Counters
        FILE: Number of bytes read=125642
        FILE: Number of bytes written=1009217
        FILE: Number of read operations=0
        FILE: Number of large read operations=0
        FILE: Number of write operations=0
        HDFS: Number of bytes read=154548
        HDFS: Number of bytes written=1071
        HDFS: Number of read operations=157
        HDFS: Number of large read operations=0
        HDFS: Number of write operations=16
    Map-Reduce Framework
        Map input records=11
        Map output records=11
        Map output bytes=263
        Map output materialized bytes=291
        Input split bytes=129
        Combine input records=0
        Combine output records=0
        Reduce input groups=5
        Reduce shuffle bytes=291
        Reduce input records=11
        Reduce output records=11
        Spilled Records=22
        Shuffled Maps =1
        Failed Shuffles=0
        Merged Map outputs=1
        GC time elapsed (ms)=0
        CPU time spent (ms)=0
        Physical memory (bytes) snapshot=0
        Virtual memory (bytes) snapshot=0
        Total committed heap usage (bytes)=1062207488
    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=437
    File Output Format Counters 
        Bytes Written=197

real    0m6.769s
user    0m7.375s
sys 0m0.400s

Here more details for Yarn (MR2):

(...)
15/04/10 21:20:31 INFO mapreduce.Job: Counters: 49
    File System Counters
        FILE: Number of bytes read=291
        FILE: Number of bytes written=211001
        FILE: Number of read operations=0
        FILE: Number of large read operations=0
        FILE: Number of write operations=0
        HDFS: Number of bytes read=566
        HDFS: Number of bytes written=197
        HDFS: Number of read operations=7
        HDFS: Number of large read operations=0
        HDFS: Number of write operations=2
    Job Counters 
        Launched map tasks=1
        Launched reduce tasks=1
        Data-local map tasks=1
        Total time spent by all maps in occupied slots (ms)=2411
        Total time spent by all reduces in occupied slots (ms)=2717
        Total time spent by all map tasks (ms)=2411
        Total time spent by all reduce tasks (ms)=2717
        Total vcore-seconds taken by all map tasks=2411
        Total vcore-seconds taken by all reduce tasks=2717
        Total megabyte-seconds taken by all map tasks=2468864
        Total megabyte-seconds taken by all reduce tasks=2782208
    Map-Reduce Framework
        Map input records=11
        Map output records=11
        Map output bytes=263
        Map output materialized bytes=291
        Input split bytes=129
        Combine input records=0
        Combine output records=0
        Reduce input groups=5
        Reduce shuffle bytes=291
        Reduce input records=11
        Reduce output records=11
        Spilled Records=22
        Shuffled Maps =1
        Failed Shuffles=0
        Merged Map outputs=1
        GC time elapsed (ms)=68
        CPU time spent (ms)=1160
        Physical memory (bytes) snapshot=432250880
        Virtual memory (bytes) snapshot=1719066624
        Total committed heap usage (bytes)=353370112
    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=437
    File Output Format Counters 
        Bytes Written=197

real    1m38.422s
user    0m4.798s
sys 0m0.319s

Can anybody explain this performance gap and how to fix it?

1

1 Answers

1
votes

YARN comes handy if you have a very huge cluster and you want to use the same cluster for different applications like hadoop, Spark, Kafka e.t.c. It is designed to support many platforms . I think you are able to see that time difference because of dafault configuration, tuning the cluster would give better performance i guess.