[HADOOP] Hadoop2에서 벤치마킹 정렬시 오류 - 파티션이 일치하지 않는
HADOOPHadoop2에서 벤치마킹 정렬시 오류 - 파티션이 일치하지 않는
나는 벤치 마크 Hadoop2 맵리 듀스 프레임 워크에 노력하고 있습니다. 그것은 TeraSort되지 않습니다. 그러나 testmapredsort.
1 단계 임의의 데이터를 생성합니다 :
hadoop jar hadoop/ randomwriter -Dtest.randomwrite.bytes_per_map=100 -Dtest.randomwriter.maps_per_host=10 /data/unsorted-data
스텝 2 정렬 단계 1에서 생성 된 랜덤 데이터 :
hadoop jar hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar sort /data/unsorted-data /data/sorted-data
MR에 의해 정렬 작동하는지 확인 - 3 단계 :
hadoop jar hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.2.0-tests.jar testmapredsort -sortInput /data/unsorted-data -sortOutput /data/sorted-data
나는 스텝 3시에 다음과 같은 오류가 발생합니다. 나는이이 오류를 수정하는 방법을 알고 싶어요.
java.lang.Exception: java.io.IOException: Partitions do not match for record# 0 ! - '0' v/s '5'
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:403)
Caused by: java.io.IOException: Partitions do not match for record# 0 ! - '0' v/s '5'
at org.apache.hadoop.mapred.SortValidator$RecordStatsChecker$Map.map(SortValidator.java:266)
at org.apache.hadoop.mapred.SortValidator$RecordStatsChecker$Map.map(SortValidator.java:191)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:429)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:235)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:695)
14/08/18 11:07:39 INFO mapreduce.Job: Job job_local2061890210_0001 failed with state FAILED due to: NA
14/08/18 11:07:39 INFO mapreduce.Job: Counters: 23
File System Counters
FILE: Number of bytes read=1436271
FILE: Number of bytes written=1645526
FILE: Number of read operations=0
FILE: Number of large read operations=0
FILE: Number of write operations=0
HDFS: Number of bytes read=1077294840
HDFS: Number of bytes written=0
HDFS: Number of read operations=13
HDFS: Number of large read operations=0
HDFS: Number of write operations=1
Map-Reduce Framework
Map input records=102247
Map output records=102247
Map output bytes=1328251
Map output materialized bytes=26
Input split bytes=102
Combine input records=102247
Combine output records=1
Spilled Records=1
Failed Shuffles=0
Merged Map outputs=0
GC time elapsed (ms)=22
Total committed heap usage (bytes)=198766592
File Input Format Counters
Bytes Read=1077294840
java.io.IOException: Job failed!
at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:836)
at org.apache.hadoop.mapred.SortValidator$RecordStatsChecker.checkRecords(SortValidator.java:367)
at org.apache.hadoop.mapred.SortValidator.run(SortValidator.java:579)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.mapred.SortValidator.main(SortValidator.java:594)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:72)
at org.apache.hadoop.util.ProgramDriver.run(ProgramDriver.java:144)
at org.apache.hadoop.test.MapredTestDriver.run(MapredTestDriver.java:115)
at org.apache.hadoop.test.MapredTestDriver.main(MapredTestDriver.java:123)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
편집하다:
hadoop fs -ls /data/unsorted-data
-rw-r--r-- 3 david supergroup 0 2014-08-14 12:45 /data/unsorted-data/_SUCCESS
-rw-r--r-- 3 david supergroup 1077294840 2014-08-14 12:45 /data/unsorted-data/part-m-00000
hadoop fs -ls /data/sorted-data
-rw-r--r-- 3 david supergroup 0 2014-08-14 12:55 /data/sorted-data/_SUCCESS
-rw-r--r-- 3 david supergroup 137763270 2014-08-14 12:55 /data/sorted-data/part-m-00000
-rw-r--r-- 3 david supergroup 134220478 2014-08-14 12:55 /data/sorted-data/part-m-00001
-rw-r--r-- 3 david supergroup 134219656 2014-08-14 12:55 /data/sorted-data/part-m-00002
-rw-r--r-- 3 david supergroup 134218029 2014-08-14 12:55 /data/sorted-data/part-m-00003
-rw-r--r-- 3 david supergroup 134219244 2014-08-14 12:55 /data/sorted-data/part-m-00004
-rw-r--r-- 3 david supergroup 134220252 2014-08-14 12:55 /data/sorted-data/part-m-00005
-rw-r--r-- 3 david supergroup 134224231 2014-08-14 12:55 /data/sorted-data/part-m-00006
-rw-r--r-- 3 david supergroup 134210232 2014-08-14 12:55 /data/sorted-data/part-m-00007
해결법
-
==============================
1.이외에도 test.randomwrite.bytes_per_map 및 test.randomwriter.maps_per_host에서 키의 변화에서 mapreduce.randomwriter.bytespermap 및 randomwriter을 통과하지 않도록 설정을 일으키는 mapreduce.randomwriter.mapsperhost하는 문제의 핵심 파일 이름으로 표시된 바와 같이 당신은 / 데이터 / 정렬 된 데이터 아래에 나열 올바르게 정렬 된 출력은 출력을 감소에서 오는 반면에 당신의 정렬 된 데이터는,지도 출력으로 구성되어 있다는 것입니다; 기본적으로, 당신의 정렬 명령은 종류의지도 부분을 수행하고, 결코 감소 이후의 단계에서 병합을 수행하지 않습니다. 이 때문에, 당신의 testmapredsort 명령은 올바르게 정렬 작동하지 않았다라고보고하고있다.
이외에도 test.randomwrite.bytes_per_map 및 test.randomwriter.maps_per_host에서 키의 변화에서 mapreduce.randomwriter.bytespermap 및 randomwriter을 통과하지 않도록 설정을 일으키는 mapreduce.randomwriter.mapsperhost하는 문제의 핵심 파일 이름으로 표시된 바와 같이 당신은 / 데이터 / 정렬 된 데이터 아래에 나열 올바르게 정렬 된 출력은 출력을 감소에서 오는 반면에 당신의 정렬 된 데이터는,지도 출력으로 구성되어 있다는 것입니다; 기본적으로, 당신의 정렬 명령은 종류의지도 부분을 수행하고, 결코 감소 이후의 단계에서 병합을 수행하지 않습니다. 이 때문에, 당신의 testmapredsort 명령은 올바르게 정렬 작동하지 않았다라고보고하고있다.
어떻게 든 0으로 설정하기 num_reduces에 대한 보호는 사실이 없음을 알 수 Sort.java 당신의 코드를 확인하는 단계; 하둡 MR의 전형적인 동작은지도 출력은 오히려 작업을 줄이기 위해 전달되는 중간 출력보다 HDFS로 직접 이동 위치를 0의이 감소 수를 설정하면,는 "전용 맵"작업을 나타내는 것입니다. 다음은 관련 라인은 다음과 같습니다 :
85 int num_reduces = (int) (cluster.getMaxReduceTasks() * 0.9); 86 String sort_reduces = conf.get(REDUCES_PER_HOST); 87 if (sort_reduces != null) { 88 num_reduces = cluster.getTaskTrackers() * 89 Integer.parseInt(sort_reduces); 90 }
감소의 자, 일반 설정에서 "기본"설정을 사용하여 그 논리의 모든 종류가 작동하도록, 0이 아닌 숫자를 제공해야합니다. 나는 실행하여 문제를 repro 수 할 수 있었다 :
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar sort -r 0 /data/unsorted-data /data/sorted-data
을 -r 0을 사용하여 0으로 강제로 감소. 귀하의 경우에는, 가능성이 cluster.getMaxReduceTasks는 (1) 반환 (또는 어쩌면 0 클러스터가 깨진 경우). 나는 내 머리 방법은 1을 반환 할 수있는 모든 방법의 상단을 모른다; 단순히 1 mapreduce.tasktracker.reduce.tasks.maximum을 설정하는 것은 그 방법이 적용되지 않는 것 같습니다. 작업 능력에 가서 다른 요소는 코어의 수와 사용 가능한 메모리의 양을 포함한다.
TaskTracker 당 작업을 줄일 클러스터를 최소 할 수있는 일입니다 가정하면, 당신은 -r 1을 사용하여 정렬 단계를 다시 시도 할 수 있습니다 :
hadoop fs -rmr /data/sorted-data hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar sort -r 1 /data/unsorted-data /data/sorted-data
from https://stackoverflow.com/questions/25369721/error-during-benchmarking-sort-in-hadoop2-partitions-do-not-match by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] org.apache.hadoop.hive.ql.metadata.Hive.loadDynamicPartitions 예외 스파크 하이브 분할 테이블을 작성 (2.11) dataframe (0) | 2019.10.02 |
---|---|
[HADOOP] 하이브는 성능에 대한 쿼리를 조인 (0) | 2019.10.02 |
[HADOOP] 하이브에서 MR 코드 (0) | 2019.10.02 |
[HADOOP] 하둡 : 구성 파일 (0) | 2019.10.02 |
[HADOOP] 파티션 디렉토리가 존재하지 않는 경우 집계 쿼리는 하이브에 실패 (0) | 2019.10.02 |