2012-05-23 2 views
3

이 아니라, 제목에 설명 된 다음과 같은 일이 : 내 테스트 데이터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를 덮어 쓸 수 있습니다. 누군가가 어떻게 다시 디버깅을 할 수 있는지 알았다면 완벽 할 것입니다. 그러나 지금은이 스택 트레이스를 더 이상 보지 못했습니다. ;)

시간과 열정에 감사드립니다.

+0

로컬 모드에서 실행해서는 안됩니다. 어떤 버전의 hadoop을 사용하고 있습니까? –

+0

안녕하세요, Chris, 답장을 보내 주셔서 감사합니다! 나는 V1.0.2를 사용하고 있으며 나는 악마를 시작하지 않았다. jps를 실행하면 jps를 실행하는 것 외에 다른 악마 만 볼 수 없습니다. –

+0

전체 드라이버 코드를 붙여 넣을 수 있습니까? –

답변

2

미안 내가 전에이 표시되지 못했지만, 다음 로그 문에 의해 표시로 당신이 당신의 conf의 XML 파일에 마지막으로 설정 두 가지 중요한 구성 속성을 가지고있는 것 같습니다 :

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. 

즉, 작업이 로컬 모드에서 실제로 실행될 수 없으며 로컬 모드에서 시작되지만 감속기는 직렬화 된 작업 구성을 읽고 로컬 모드가 아닌 것으로 판단하고 작업 추적기 포트를 통해 맵 출력을 가져 오려고했습니다.

당신은 당신의 수정은 conf 폴더의 이름을 변경했다 -이이 두 가지 속성이 '마지막'으로 표시되지 않은 기본 구성, 다시 하둡을 기본값으로를

당신은 확실히 이상한 뭔가 MapOutputCopier 스레드로 진행이
관련 문제