복붙노트

[HADOOP] 하둡 성능

HADOOP

하둡 성능

hadoop 1.0.0을 설치하고 단어 계산 예제 (단일 노드 클러스터)를 사용해 보았습니다. 완료까지 2 분 48 초가 걸렸습니다. 그런 다음 동일한 세트 (180kB 데이터)에서 10 밀리 초 단위로 실행되는 표준 Linux 워드 카운트 프로그램을 시도했습니다. 내가 잘못한 일을하고 있거나 하둡이 매우 느린가?

time hadoop jar /usr/share/hadoop/hadoop*examples*.jar wordcount someinput someoutput
12/01/29 23:04:41 INFO input.FileInputFormat: Total input paths to process : 30
12/01/29 23:04:41 INFO mapred.JobClient: Running job: job_201201292302_0001
12/01/29 23:04:42 INFO mapred.JobClient:  map 0% reduce 0%
12/01/29 23:05:05 INFO mapred.JobClient:  map 6% reduce 0%
12/01/29 23:05:15 INFO mapred.JobClient:  map 13% reduce 0%
12/01/29 23:05:25 INFO mapred.JobClient:  map 16% reduce 0%
12/01/29 23:05:27 INFO mapred.JobClient:  map 20% reduce 0%
12/01/29 23:05:28 INFO mapred.JobClient:  map 20% reduce 4%
12/01/29 23:05:34 INFO mapred.JobClient:  map 20% reduce 5%
12/01/29 23:05:35 INFO mapred.JobClient:  map 23% reduce 5%
12/01/29 23:05:36 INFO mapred.JobClient:  map 26% reduce 5%
12/01/29 23:05:41 INFO mapred.JobClient:  map 26% reduce 8%
12/01/29 23:05:44 INFO mapred.JobClient:  map 33% reduce 8%
12/01/29 23:05:53 INFO mapred.JobClient:  map 36% reduce 11%
12/01/29 23:05:54 INFO mapred.JobClient:  map 40% reduce 11%
12/01/29 23:05:56 INFO mapred.JobClient:  map 40% reduce 12%
12/01/29 23:06:01 INFO mapred.JobClient:  map 43% reduce 12%
12/01/29 23:06:02 INFO mapred.JobClient:  map 46% reduce 12%
12/01/29 23:06:06 INFO mapred.JobClient:  map 46% reduce 14%
12/01/29 23:06:09 INFO mapred.JobClient:  map 46% reduce 15%
12/01/29 23:06:11 INFO mapred.JobClient:  map 50% reduce 15%
12/01/29 23:06:12 INFO mapred.JobClient:  map 53% reduce 15%
12/01/29 23:06:20 INFO mapred.JobClient:  map 56% reduce 15%
12/01/29 23:06:21 INFO mapred.JobClient:  map 60% reduce 17%
12/01/29 23:06:28 INFO mapred.JobClient:  map 63% reduce 17%
12/01/29 23:06:29 INFO mapred.JobClient:  map 66% reduce 17%
12/01/29 23:06:30 INFO mapred.JobClient:  map 66% reduce 20%
12/01/29 23:06:36 INFO mapred.JobClient:  map 70% reduce 22%
12/01/29 23:06:37 INFO mapred.JobClient:  map 73% reduce 22%
12/01/29 23:06:45 INFO mapred.JobClient:  map 80% reduce 24%
12/01/29 23:06:51 INFO mapred.JobClient:  map 80% reduce 25%
12/01/29 23:06:54 INFO mapred.JobClient:  map 86% reduce 25%
12/01/29 23:06:55 INFO mapred.JobClient:  map 86% reduce 26%
12/01/29 23:07:02 INFO mapred.JobClient:  map 90% reduce 26%
12/01/29 23:07:03 INFO mapred.JobClient:  map 93% reduce 26%
12/01/29 23:07:07 INFO mapred.JobClient:  map 93% reduce 30%
12/01/29 23:07:09 INFO mapred.JobClient:  map 96% reduce 30%
12/01/29 23:07:10 INFO mapred.JobClient:  map 96% reduce 31%
12/01/29 23:07:12 INFO mapred.JobClient:  map 100% reduce 31%
12/01/29 23:07:22 INFO mapred.JobClient:  map 100% reduce 100%
12/01/29 23:07:28 INFO mapred.JobClient: Job complete: job_201201292302_0001
12/01/29 23:07:28 INFO mapred.JobClient: Counters: 29
12/01/29 23:07:28 INFO mapred.JobClient:   Job Counters 
12/01/29 23:07:28 INFO mapred.JobClient:     Launched reduce tasks=1
12/01/29 23:07:28 INFO mapred.JobClient:     SLOTS_MILLIS_MAPS=275346
12/01/29 23:07:28 INFO mapred.JobClient:     Total time spent by all reduces waiting after reserving slots (ms)=0
12/01/29 23:07:28 INFO mapred.JobClient:     Total time spent by all maps waiting after reserving slots (ms)=0
12/01/29 23:07:28 INFO mapred.JobClient:     Launched map tasks=30
12/01/29 23:07:28 INFO mapred.JobClient:     Data-local map tasks=30
12/01/29 23:07:28 INFO mapred.JobClient:     SLOTS_MILLIS_REDUCES=137186
12/01/29 23:07:28 INFO mapred.JobClient:   File Output Format Counters 
12/01/29 23:07:28 INFO mapred.JobClient:     Bytes Written=26287
12/01/29 23:07:28 INFO mapred.JobClient:   FileSystemCounters
12/01/29 23:07:28 INFO mapred.JobClient:     FILE_BYTES_READ=71510
12/01/29 23:07:28 INFO mapred.JobClient:     HDFS_BYTES_READ=89916
12/01/29 23:07:28 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=956282
12/01/29 23:07:28 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=26287
12/01/29 23:07:28 INFO mapred.JobClient:   File Input Format Counters 
12/01/29 23:07:28 INFO mapred.JobClient:     Bytes Read=85860
12/01/29 23:07:28 INFO mapred.JobClient:   Map-Reduce Framework
12/01/29 23:07:28 INFO mapred.JobClient:     Map output materialized bytes=71684
12/01/29 23:07:28 INFO mapred.JobClient:     Map input records=2574
12/01/29 23:07:28 INFO mapred.JobClient:     Reduce shuffle bytes=71684
12/01/29 23:07:28 INFO mapred.JobClient:     Spilled Records=6696
12/01/29 23:07:28 INFO mapred.JobClient:     Map output bytes=118288
12/01/29 23:07:28 INFO mapred.JobClient:     CPU time spent (ms)=39330
12/01/29 23:07:28 INFO mapred.JobClient:     Total committed heap usage (bytes)=5029167104
12/01/29 23:07:28 INFO mapred.JobClient:     Combine input records=8233
12/01/29 23:07:28 INFO mapred.JobClient:     SPLIT_RAW_BYTES=4056
12/01/29 23:07:28 INFO mapred.JobClient:     Reduce input records=3348
12/01/29 23:07:28 INFO mapred.JobClient:     Reduce input groups=1265
12/01/29 23:07:28 INFO mapred.JobClient:     Combine output records=3348
12/01/29 23:07:28 INFO mapred.JobClient:     Physical memory (bytes) snapshot=4936278016
12/01/29 23:07:28 INFO mapred.JobClient:     Reduce output records=1265
12/01/29 23:07:28 INFO mapred.JobClient:     Virtual memory (bytes) snapshot=26102546432
12/01/29 23:07:28 INFO mapred.JobClient:     Map output records=8233

real    2m48.886s
user    0m3.300s
sys 0m0.304s


time wc someinput/*
  178  1001  8674 someinput/capacity-scheduler.xml
  178  1001  8674 someinput/capacity-scheduler.xml.bak
    7     7   196 someinput/commons-logging.properties
    7     7   196 someinput/commons-logging.properties.bak
   24    35   535 someinput/configuration.xsl
   80   122  1968 someinput/core-site.xml
   80   122  1972 someinput/core-site.xml.bak
    1     0     1 someinput/dfs.exclude
    1     0     1 someinput/dfs.include
   12    36   327 someinput/fair-scheduler.xml
   45   192  2141 someinput/hadoop-env.sh
   45   192  2139 someinput/hadoop-env.sh.bak
   20   137   910 someinput/hadoop-metrics2.properties
   20   137   910 someinput/hadoop-metrics2.properties.bak
  118   582  4653 someinput/hadoop-policy.xml
  118   582  4653 someinput/hadoop-policy.xml.bak
  241   623  6616 someinput/hdfs-site.xml
  241   623  6630 someinput/hdfs-site.xml.bak
  171   417  6177 someinput/log4j.properties
  171   417  6177 someinput/log4j.properties.bak
    1     0     1 someinput/mapred.exclude
    1     0     1 someinput/mapred.include
   12    15   298 someinput/mapred-queue-acls.xml
   12    15   298 someinput/mapred-queue-acls.xml.bak
  338   897  9616 someinput/mapred-site.xml
  338   897  9630 someinput/mapred-site.xml.bak
    1     1    10 someinput/masters
    1     1    18 someinput/slaves
   57    89  1243 someinput/ssl-client.xml.example
   55    85  1195 someinput/ssl-server.xml.example
 2574  8233 85860 total

real    0m0.009s
user    0m0.004s
sys 0m0.000s

해결법

  1. ==============================

    1.이는 구성, 시스템, 메모리 구성, JVM 설정 등을 포함하여 많은 요인에 따라 달라집니다. 또한 JVM 시작 시간을 뺄 필요가 있습니다.

    이는 구성, 시스템, 메모리 구성, JVM 설정 등을 포함하여 많은 요인에 따라 달라집니다. 또한 JVM 시작 시간을 뺄 필요가 있습니다.

    그것은 나를 위해 훨씬 더 빨리 달립니다. 물론 이것은 전용 C 프로그램보다 작은 데이터 세트에서 느려질 것입니다. "뒤에서"무엇을하는지 고려하십시오.

    수천 개의 파일에 분산 된 테라 바이트의 데이터에서 시도해보고 어떤 일이 발생하는지 확인하십시오.

  2. ==============================

    2.Dave는 Hadoop이 장난감 예제가 아닌 많은 양의 데이터를 처리하도록 최적화되어 있다고 말했기 때문에 "코끼리를 깨우다"라는 세금으로 작은 물건을 가지고 일할 때 필요하지 않은 일들이 진행됩니다. 진행 상황에 대한 자세한 내용은 "Map Reduce Jobs의 성능 정보"를 살펴보십시오

    Dave는 Hadoop이 장난감 예제가 아닌 많은 양의 데이터를 처리하도록 최적화되어 있다고 말했기 때문에 "코끼리를 깨우다"라는 세금으로 작은 물건을 가지고 일할 때 필요하지 않은 일들이 진행됩니다. 진행 상황에 대한 자세한 내용은 "Map Reduce Jobs의 성능 정보"를 살펴보십시오

  3. ==============================

    3.입력 데이터가 작아서 hadoop이 오래 걸리는 것을 관찰했습니다. hadoop에서 일자리 창출 과정은 많은 일들을 포함하기 때문에 무겁습니다. 입력 데이터가 크다면, hadoop이 wc보다 잘 작동하는 것을 볼 수있다.

    입력 데이터가 작아서 hadoop이 오래 걸리는 것을 관찰했습니다. hadoop에서 일자리 창출 과정은 많은 일들을 포함하기 때문에 무겁습니다. 입력 데이터가 크다면, hadoop이 wc보다 잘 작동하는 것을 볼 수있다.

  4. ==============================

    4.다른 대답에 덧붙여 한 가지 더 많은 요소가 있습니다. 30 개의 파일을 처리해야하므로 실행할 30 개의 작업이 있습니다. 1 작업 실행의 Hadoop MR 오버 헤드는 1에서 3 초 사이입니다. 데이터를 하나의 파일로 병합하는 경우 성능은 심각하게 향상되지만 여전히 작업 시작 오버 헤드가 있습니다. 나는 현지 네이티브 프로그램이 항상 MR보다 뛰어나다 고 생각한다. Hadoop은 확장 성 및 내결함성을 염두에두고 설계되었습니다. 대부분의 경우 성능이 저하됩니다.

    다른 대답에 덧붙여 한 가지 더 많은 요소가 있습니다. 30 개의 파일을 처리해야하므로 실행할 30 개의 작업이 있습니다. 1 작업 실행의 Hadoop MR 오버 헤드는 1에서 3 초 사이입니다. 데이터를 하나의 파일로 병합하는 경우 성능은 심각하게 향상되지만 여전히 작업 시작 오버 헤드가 있습니다. 나는 현지 네이티브 프로그램이 항상 MR보다 뛰어나다 고 생각한다. Hadoop은 확장 성 및 내결함성을 염두에두고 설계되었습니다. 대부분의 경우 성능이 저하됩니다.

  5. ==============================

    5.Hadoop 성능 향상을 위해

    Hadoop 성능 향상을 위해

    Hadoop은 다음 큰 것입니다.

  6. ==============================

    6.일반적으로 Hadoop은 터미널을 사용하여 실행할 수있는 기본 응용 프로그램과 비교할 때 오버 헤드가 있습니다. 매퍼 수를 2로 늘리면 할 수있는 시간이 늘 것입니다. 가지고있는 단어 수의 예가 매퍼 설정과 리듀서 설정을 지원하지 않는다면

    일반적으로 Hadoop은 터미널을 사용하여 실행할 수있는 기본 응용 프로그램과 비교할 때 오버 헤드가 있습니다. 매퍼 수를 2로 늘리면 할 수있는 시간이 늘 것입니다. 가지고있는 단어 수의 예가 매퍼 설정과 리듀서 설정을 지원하지 않는다면

    https://github.com/marek5050/Sparkie/tree/master/Java

    ~을 사용하여

    hadoop jar ./target/wordcount.jar -r 1 -m 4 <input> <output>
    

    Hadoop의 힘은 여러 노드간에 작업을 분산하여 GB / TB의 데이터를 처리하는 능력에 달려 있습니다. 일반적으로 컴퓨터가 몇 분 이내에 수행 할 수있는 것보다 더 효율적이지는 않습니다.

  7. ==============================

    7.흠 .. 여기서 혼란스러워하거나 혼란을 일으키게하십시오.

    흠 .. 여기서 혼란스러워하거나 혼란을 일으키게하십시오.

    당신이 말하면서 풀 수있는 문제가 있다고 가정하자. O (n) 복잡하다. 적용 할 때 hadoop이 할 일은 K 기계를 가정하자. 그러면 K 배만큼 복잡성을 줄일 것이다. 그래서 귀하의 경우에는 작업이 더 빨리 수행되어야합니다 (hadoop 작업).

    틀린 무엇이 ??? ?????

    1) 단일 노드에서 프로그램을 실행하므로 표준 프로그램보다 적은 실행 시간을 기대하지 마십시오. (다중 노드 클러스터를 사용하는 경우 케이스가 달라졌을 것입니다)

    이제 질문은 단일 기계가 사용되기 때문에 발생합니다. 실행 시간은 동일해야합니다 ???

    대답은 '아니오'입니다. 데이터가 처음에는 레코드 판독기에서 읽히고 키 값 쌍이 나옵니다.이 값 쌍은 매퍼에 전달되어 키 값 쌍을 처리하고 방출합니다 (결합자를 사용하지 않는 경우). 데이터가 정렬되고 셔플 된 다음 그것은 감속기 단계로 전달되고 hdfs에 대한 쓰기가 완료됩니다. 여기에 더 많은 오버 헤드가 있음을 확인하십시오. 그리고 이러한 이유로 인해 성능 저하가 감지됩니다.

    당신은 hadoop이 할 수있는 것을보고 싶습니다. K 노드 클러스터에서 동일한 작업을 실행하고 페타 바이트의 데이터를 가져 와서 단일 스레드 응용 프로그램을 실행합니다. 나는 네가 깜짝 놀랄 것이라고 약속한다.

  8. ==============================

    8.Hadoop은이 작은 파일을위한 것이 아니지만 어느 정도 조정할 수 있습니다. 파일 크기는 180kb입니다. 그러나 블록 수는 30입니다. hdfs-site.xml에서 "dfs.block.size"를 줄여야합니다. 입력 스플릿이 더 많으므로 매퍼의 수가 더 많아이 경우에는 불필요합니다. Hadoop은 노드 수와 입력 데이터에 따라 조정되어야합니다. 따라서 "dfs.block.size"를 64MB까지 늘려 성능을 향상시킬 수있는 하나의 매퍼로이 단어 수를 수행해야합니다.

    Hadoop은이 작은 파일을위한 것이 아니지만 어느 정도 조정할 수 있습니다. 파일 크기는 180kb입니다. 그러나 블록 수는 30입니다. hdfs-site.xml에서 "dfs.block.size"를 줄여야합니다. 입력 스플릿이 더 많으므로 매퍼의 수가 더 많아이 경우에는 불필요합니다. Hadoop은 노드 수와 입력 데이터에 따라 조정되어야합니다. 따라서 "dfs.block.size"를 64MB까지 늘려 성능을 향상시킬 수있는 하나의 매퍼로이 단어 수를 수행해야합니다.

  9. from https://stackoverflow.com/questions/9057348/hadoop-performance by cc-by-sa and MIT license