이 아니라, 제목에 설명 된 다음과 같은 일이 : 내 테스트 데이터Hadoop - 감속기가 Mapper 입력을 기다리고 있습니까? 내가 (로컬 모드에서 디버깅이) 내 하둡 프로그램을 실행할 때
1. 모든 10 CSV 라인이 매퍼에 올바르게 처리, Map-step 후에 호출 된 Partitioner와 RawComperator (OutputKeyComparatorClass). 그러나 OutputValueGroupingComparatorClass와 ReduceClass의 함수는 나중에 실행되지 않습니다.
2. 내 응용 프로그램은 다음과 같습니다. (때문에 공간 제약에 나는 누군가가 아이디어를 가지고 때까지, 그 그들을 포함, 내가 구성 매개 변수로 사용되는 클래스의 구현을 생략) :
public class RetweetApplication {
public static int DEBUG = 1;
static String INPUT = "/home/ema/INPUT-H";
static String OUTPUT = "/home/ema/OUTPUT-H "+ (new Date()).toString();
public static void main(String[] args) {
JobClient client = new JobClient();
JobConf conf = new JobConf(RetweetApplication.class);
if(DEBUG > 0){
conf.set("mapred.job.tracker", "local");
conf.set("fs.default.name", "file:///");
conf.set("dfs.replication", "1");
}
FileInputFormat.setInputPaths(conf, new Path(INPUT));
FileOutputFormat.setOutputPath(conf, new Path(OUTPUT));
//conf.setOutputKeyClass(Text.class);
//conf.setOutputValueClass(Text.class);
conf.setMapOutputKeyClass(Text.class);
conf.setMapOutputValueClass(Text.class);
conf.setMapperClass(RetweetMapper.class);
conf.setPartitionerClass(TweetPartitioner.class);
conf.setOutputKeyComparatorClass(TwitterValueGroupingComparator.class);
conf.setOutputValueGroupingComparator(TwitterKeyGroupingComparator.class);
conf.setReducerClass(RetweetReducer.class);
conf.setOutputFormat(TextOutputFormat.class);
client.setConf(conf);
try {
JobClient.runJob(conf);
} catch (Exception e) {
e.printStackTrace();
}
}
}
3. 나는 다음과 같은 콘솔 출력을 얻을 (죄송합니다 형식에 대해서는, 어떻게 든이 로그는) 올바른 형식 얻을 나던 :
12/05/22 3시 51분 5초 정보 mapred.MapTask : io.sort.mb = 100 12/05/22 03:51:05 INFO mapred.MapTask : 데이터 버퍼 = 79691776/99614720,992,967,
12/05/22 3시 51분 5초 INFO mapred.MapTask : 기록 버퍼 = 327,680분의 262,144
12/05/22 3시 51분 6초 INFO mapred.JobClient :지도 0 % 0 % 감소
12/05/22 3시 51분 11초 정보의 mapred.LocalJobRunner : 파일 :/홈/EMA/INPUT-H/트위터 : mapred 0 + 967 12/05/22 3시 51분 12초 정보 . JobClient :지도 39 %가 감소 0 %
12/05/22 3시 51분 14초 정보 mapred.LocalJobRunner : 파일 :/홈/EMA/INPUT-H/트위터 : 0 + 967 12/05/22 03 : 51 : 15 정보 mapred.MapTask : 시작 지도 출력 보내고 플러시
12/05/22 3시 51분 15초 정보 mapred.MapTask : 완료 유출 0
12/05/22 3시 51분 15초 정보 mapred.Task : 작업 : attempt_local_0001_m_000000_0 수행. 그리고
12/05/22 3시 51분 15초 정보 mapred.JobClient을 커밋하는 과정에있다 :지도 79 % 0 %
12/05/22 3시 51분 17초 정보 mapred.LocalJobRunner을 감소 : 파일 :/홈/EMA/INPUT-H/트위터 : 0 + 967
12/05/22 3시 51분 17초 정보 mapred.LocalJobRunner : 파일 :/홈/EMA/INPUT-H/짹짹 : 0 + 967
12/05/22 03:51:17 정보 mapred.Task : 작업 '시도 _local_0001_m_000000_0'완료.
는 12/05/22 3시 51분 17초는 정보 mapred.Task : 사용 ResourceCalculatorPlugin : [email protected]는
12/05/22 3시 51분 17초 정보 mapred .ReduceTask : ShuffleRamManager : 을 memoryLimit = 709551680, MaxSingleShuffleLimit = 177,387,920
12/05/22 3시 51분 17초 정보 mapred.ReduceTask : attempt_local_0001_r_000000_0 스레드 시작 : 을 병합 스레드를 디스크에있는 파일
12/5월 22일 3시 51분 17초 정보 mapred.ReduceTask : attempt_local_0001_r_000000_0 스레드 대기가 : 을 병합 스레드에서 디스크 파일
12/05/22 3시 51분 17초 정보 mapred.ReduceTask : attempt_local_0001_r_000000_0 스레드 시작 : 병합을위한 스레드 개 메모리 파일
12/05/22 3시 51분 17초 정보 mapred.ReduceTask : attempt_local_0001_r_000000_0 다른 1지도 출력 (들)을 필요로 진행 12/05/22 3시 51분 17초 정보에 이미 0 mapred.ReduceTask : attempt_local_0001_r_000000_0 예약 0 출력 (0 느린 호스트 DUP 호스트를 and0)
12/05/22 3시 51분 17초 정보 mapred.ReduceTask : attempt_local_0001_r_000000_0 스레드 시작 : 폴링지도 완료 이벤트에 대한 스레드
,403,210 12/05/22 3시 51분 18초 정보 mapred.JobClient :지도 100 %가 0 %로 감소 12/05/22 3시 51분 23초 정보 mapred.LocalJobRunner : 감소> 복사>
굵게 표시된 선은이 지점에서 끝없이 반복됩니다.
RetweetApplication (1) [Remote Java Application]
OpenJDK Client VM[localhost:5002]
Thread [main] (Running)
Thread [Thread-2] (Running)
Daemon Thread [communication thread] (Running)
Thread [MapOutputCopier attempt_local_0001_r_000000_0.0] (Running)
Thread [MapOutputCopier attempt_local_0001_r_000000_0.1] (Running)
Thread [MapOutputCopier attempt_local_0001_r_000000_0.2] (Running)
Thread [MapOutputCopier attempt_local_0001_r_000000_0.4] (Running)
Thread [MapOutputCopier attempt_local_0001_r_000000_0.3] (Running)
Daemon Thread [Thread for merging on-disk files] (Running)
Daemon Thread [Thread for merging in memory files] (Running)
Daemon Thread [Thread for polling Map Completion Events] (Running)
하둡 (에서 굵게 표시된 선을 참조 매퍼 이상의 출력을 기대 어떤 이유가있을 경우 : 매퍼 모든 터플을 본 후에 오픈 프로세스
제를 많이는 활성 로그) 내가 입력 디렉토리에 넣어보다? 이미 언급했듯이, 모든 입력이 매퍼/파티션/etc에서 제대로 처리되었다는 것을 디버깅했습니다.
UPDATE 크리스 (주석 참조) 나는 그것을 예상대로 내 프로그램 localMode에서 시작되지 않았 음을, 발견의 도움으로 다음 ReduceTask
클래스의 isLocal
변수가 false
로 설정되어, 그것이 있어야하지만 true
.
독립형 모드를 활성화하기 위해 설정해야하는 3 가지 옵션이 올바르게 설정 되었기 때문에 필자에게 이것이 왜 발생하는지는 분명하지 않습니다. 놀랍게도 : local
설정은 무시되었고, "정상적인 디스크에서 읽음"설정은 매우 이상한 것이 었습니다. 왜냐하면 local
모드와 file:///
프로토콜이 결합 되었기 때문입니다.
디버그 중 ReduceTask
디버그 뷰에서 isLocal=true
을 평가하여 isLocal
변수를 true로 설정 한 다음 나머지 프로그램을 실행하려고 시도했습니다.그것은 작동하지 않았고,이 스택 트레이스입니다 :이 스택 트레이스는 이제 포트 9001이 실행 중에 사용되는, 저를 보여주고 있기 때문에
12/05/22 14:28:28 INFO mapred.LocalJobRunner:
12/05/22 14:28:28 INFO mapred.Merger: Merging 1 sorted segments
12/05/22 14:28:28 INFO mapred.Merger: Down to the last merge-pass, with 1 segments left of total size: 1956 bytes
12/05/22 14:28:28 INFO mapred.LocalJobRunner:
12/05/22 14:28:29 WARN conf.Configuration: file:/tmp/hadoop-ema/mapred/local/localRunner/job_local_0001.xml:a attempt to override final parameter: fs.default.name; Ignoring.
12/05/22 14:28:29 WARN conf.Configuration: file:/tmp/hadoop-ema/mapred/local/localRunner/job_local_0001.xml:a attempt to override final parameter: mapred.job.tracker; Ignoring.
12/05/22 14:28:30 INFO ipc.Client: Retrying connect to server: master/127.0.0.1:9001. Already tried 0 time(s).
12/05/22 14:28:31 INFO ipc.Client: Retrying connect to server: master/127.0.0.1:9001. Already tried 1 time(s).
12/05/22 14:28:32 INFO ipc.Client: Retrying connect to server: master/127.0.0.1:9001. Already tried 2 time(s).
12/05/22 14:28:33 INFO ipc.Client: Retrying connect to server: master/127.0.0.1:9001. Already tried 3 time(s).
12/05/22 14:28:34 INFO ipc.Client: Retrying connect to server: master/127.0.0.1:9001. Already tried 4 time(s).
12/05/22 14:28:35 INFO ipc.Client: Retrying connect to server: master/127.0.0.1:9001. Already tried 5 time(s).
12/05/22 14:28:36 INFO ipc.Client: Retrying connect to server: master/127.0.0.1:9001. Already tried 6 time(s).
12/05/22 14:28:37 INFO ipc.Client: Retrying connect to server: master/127.0.0.1:9001. Already tried 7 time(s).
12/05/22 14:28:38 INFO ipc.Client: Retrying connect to server: master/127.0.0.1:9001. Already tried 8 time(s).
12/05/22 14:28:39 INFO ipc.Client: Retrying connect to server: master/127.0.0.1:9001. Already tried 9 time(s).
12/05/22 14:28:39 WARN conf.Configuration: file:/tmp/hadoop-ema/mapred/local/localRunner/job_local_0001.xml:a attempt to override final parameter: fs.default.name; Ignoring.
12/05/22 14:28:39 WARN conf.Configuration: file:/tmp/hadoop-ema/mapred/local/localRunner/job_local_0001.xml:a attempt to override final parameter: mapred.job.tracker; Ignoring.
12/05/22 14:28:39 WARN mapred.LocalJobRunner: job_local_0001
java.net.ConnectException: Call to master/127.0.0.1:9001 failed on connection exception: java.net.ConnectException: Connection refused
at org.apache.hadoop.ipc.Client.wrapException(Client.java:1095)
at org.apache.hadoop.ipc.Client.call(Client.java:1071)
at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:225)
at $Proxy1.getProtocolVersion(Unknown Source)
at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:396)
at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:379)
at org.apache.hadoop.hdfs.DFSClient.createRPCNamenode(DFSClient.java:119)
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:238)
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:203)
at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:89)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:1386)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:66)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1404)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:254)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:123)
at org.apache.hadoop.mapred.ReduceTask$OldTrackingRecordWriter.<init>(ReduceTask.java:446)
at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:490)
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:420)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:260)
Caused by: java.net.ConnectException: Connection refused
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:592)
at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:489)
at org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:434)
at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:560)
at org.apache.hadoop.ipc.Client$Connection.access$2000(Client.java:184)
at org.apache.hadoop.ipc.Client.getConnection(Client.java:1202)
at org.apache.hadoop.ipc.Client.call(Client.java:1046)
... 17 more
12/05/22 14:28:39 WARN conf.Configuration: file:/tmp/hadoop-ema/mapred/local/localRunner/job_local_0001.xml:a attempt to override final parameter: fs.default.name; Ignoring.
12/05/22 14:28:39 WARN conf.Configuration: file:/tmp/hadoop-ema/mapred/local/localRunner/job_local_0001.xml:a attempt to override final parameter: mapred.job.tracker; Ignoring.
12/05/22 14:28:39 INFO mapred.JobClient: Job complete: job_local_0001
12/05/22 14:28:39 INFO mapred.JobClient: Counters: 20
12/05/22 14:28:39 INFO mapred.JobClient: File Input Format Counters
12/05/22 14:28:39 INFO mapred.JobClient: Bytes Read=967
12/05/22 14:28:39 INFO mapred.JobClient: FileSystemCounters
12/05/22 14:28:39 INFO mapred.JobClient: FILE_BYTES_READ=14093
12/05/22 14:28:39 INFO mapred.JobClient: FILE_BYTES_WRITTEN=47859
12/05/22 14:28:39 INFO mapred.JobClient: Map-Reduce Framework
12/05/22 14:28:39 INFO mapred.JobClient: Map output materialized bytes=1960
12/05/22 14:28:39 INFO mapred.JobClient: Map input records=10
12/05/22 14:28:39 INFO mapred.JobClient: Reduce shuffle bytes=0
12/05/22 14:28:39 INFO mapred.JobClient: Spilled Records=10
12/05/22 14:28:39 INFO mapred.JobClient: Map output bytes=1934
12/05/22 14:28:39 INFO mapred.JobClient: Total committed heap usage (bytes)=115937280
12/05/22 14:28:39 INFO mapred.JobClient: CPU time spent (ms)=0
12/05/22 14:28:39 INFO mapred.JobClient: Map input bytes=967
12/05/22 14:28:39 INFO mapred.JobClient: SPLIT_RAW_BYTES=82
12/05/22 14:28:39 INFO mapred.JobClient: Combine input records=0
12/05/22 14:28:39 INFO mapred.JobClient: Reduce input records=0
12/05/22 14:28:39 INFO mapred.JobClient: Reduce input groups=0
12/05/22 14:28:39 INFO mapred.JobClient: Combine output records=0
12/05/22 14:28:39 INFO mapred.JobClient: Physical memory (bytes) snapshot=0
12/05/22 14:28:39 INFO mapred.JobClient: Reduce output records=0
12/05/22 14:28:39 INFO mapred.JobClient: Virtual memory (bytes) snapshot=0
12/05/22 14:28:39 INFO mapred.JobClient: Map output records=10
12/05/22 14:28:39 INFO mapred.JobClient: Job Failed: NA
java.io.IOException: Job failed!
at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1265)
at uni.kassel.macek.rtprep.RetweetApplication.main(RetweetApplication.java:50)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.apache.hadoop.util.RunJar.main(RunJar.java:156)
, 나는 어떻게 든 XML 구성 파일이 local-자바 만든 덮어 추측 테스트 (내가 테스트 용으로 사용하는)는 인터넷에서 반복적으로 읽은 후 이상하게 보입니다. 자바가 XML 구성을 덮어 씁니다. 아무도이 문제를 해결하는 방법을 모르는 경우 단순히 모든 configuration-xml을 지우도록하십시오. 아마도 이러한 문제가 해결 ...
NEW UPDATE
바꾸기 Hadoops conf
폴더 대기 복사기의 문제를 해결하고, 프로그램은 최종 전까지 실행한다. 슬프게도 HADOOP_OPTS
이 올바르게 설정되었지만 디버거를 위해 실행이 더 이상 대기하지 않습니다.
RESUME : 설정 문제 만 : 일부 구성 매개 변수의 경우 XML이 JAVA를 덮어 쓸 수 있습니다. 누군가가 어떻게 다시 디버깅을 할 수 있는지 알았다면 완벽 할 것입니다. 그러나 지금은이 스택 트레이스를 더 이상 보지 못했습니다. ;)
시간과 열정에 감사드립니다.
로컬 모드에서 실행해서는 안됩니다. 어떤 버전의 hadoop을 사용하고 있습니까? –
안녕하세요, Chris, 답장을 보내 주셔서 감사합니다! 나는 V1.0.2를 사용하고 있으며 나는 악마를 시작하지 않았다. jps를 실행하면 jps를 실행하는 것 외에 다른 악마 만 볼 수 없습니다. –
전체 드라이버 코드를 붙여 넣을 수 있습니까? –