우선, 나는 Hadoop의 초보자입니다.Hadoop 파이프 프로그램에 의해 throw 된 EOFException
나는 java.io.EOFException을 던지는 작은 Hadoop 파이프 프로그램을 가지고있다. 이 프로그램은 을 작은 텍스트 파일로 입력하고 hadoop.pipes.java.recordreader 및 hadoop.pipes.java.recordwriter를 사용합니다. 입력과 같은 매우 간단합니다 :
1 262144 42.8084 15.9157 4.1324 0.06 0.1
그러나, 하둡가 나는 이유를 볼 수는 EOFException을 발생합니다. BTW, 나는 완전 분산 모드 (3 일 개 노드 클러스터)에서이 작업을 실행
10/12/08 23:04:04 INFO mapred.JobClient: Running job: job_201012081252_0016
10/12/08 23:04:05 INFO mapred.JobClient: map 0% reduce 0%
10/12/08 23:04:16 INFO mapred.JobClient: Task Id : attempt_201012081252_0016_m_000000_0, Status : FAILED
java.io.IOException: pipe child exception
at org.apache.hadoop.mapred.pipes.Application.abort(Application.java:151)
at org.apache.hadoop.mapred.pipes.PipesMapRunner.run(PipesMapRunner.java:101)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307)
at org.apache.hadoop.mapred.Child.main(Child.java:170)
Caused by: java.io.EOFException
at java.io.DataInputStream.readByte(DataInputStream.java:267)
at org.apache.hadoop.io.WritableUtils.readVLong(WritableUtils.java:298)
at org.apache.hadoop.io.WritableUtils.readVInt(WritableUtils.java:319)
at org.apache.hadoop.mapred.pipes.BinaryProtocol$UplinkReaderThread.run(BinaryProtocol.java:114)
: 아래 스택 추적입니다.
도움을 주시면 감사하겠습니다. 감사합니다
감사합니다. 불행히도 한계를 높이는 것은 저에게 효과가 없었습니다. 더 이상 아이디어가 없습니까? 한편, 나는이 질문을 hadoop 메일 링리스트에 올리려고한다고 생각한다. – peng
나는 응답에 흥미가있다. 이 전략이 가짜 인 이유의 일부는 Hadoop 프레임 워크가 파일 설명자를 사용하는 가정을 WRT에서 호출하지 않는다는 것입니다. 시스템이 제한을 초과하는 경우 임의로 높은 수를 지정하면 분명히 작동하지 않습니다. 또한 Hadoop이 존중하는 것처럼 시스템의 소프트 파일 설명자 한도를 확인하는 것이 좋습니다. – MrGomez
문제가 해결되었습니다. 완전히 나쁜 것이 었습니다. 내 파이프 프로그램에 세분화 오류가있어 예외를 발생 시켰습니다. 그러나, 나는 예외는 나 같은 초보자에게 불가사의하게 보인다라고 생각한다. 어쩌면 하둡 (Hadoop) 사람들이 조금보고하는 오류를 해결할 수 있을까요? – peng