2010-12-09 4 views
1

우선, 나는 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) 

: 아래 스택 추적입니다.

도움을 주시면 감사하겠습니다. 감사합니다

답변

0

이 스택 추적은 대개 작업자 컴퓨터에서 사용 가능한 파일 설명자가 부족한 것을 나타냅니다. 이것은 매우 일반적이며 드문 드문 문서화되어 있습니다. 정확하게 피사체에 두 개의 relatedquestions이있는 이유는 정확합니다. 당신은 모든 머신에 루트 액세스 할 수있는 경우

, 당신은 /etc/sysctl.conf을 편집하여 하둡 사용자에 대한 파일 설명자 제한을 올리는 고려해야합니다

(Add) fs.file-max = 4096 

또는 발행 :

ulimit -Sn 4096 
ulimit -Hn 4096 

무한히 . 이 한도를 높이기위한 일반 정보는 available here.

입니다. 그러나 장기 계획의 관점에서 보면이 전략은 다소 가짜입니다. 문제에 대한 더 많은 정보를 발견 한 경우 help me help you help us all? [감사합니다. GLaDOS. -ed]

(편집 : 다음과 해설을 참조하십시오.) 배운

+0

감사합니다. 불행히도 한계를 높이는 것은 저에게 효과가 없었습니다. 더 이상 아이디어가 없습니까? 한편, 나는이 질문을 hadoop 메일 링리스트에 올리려고한다고 생각한다. – peng

+0

나는 응답에 흥미가있다. 이 전략이 가짜 인 이유의 일부는 Hadoop 프레임 워크가 파일 설명자를 사용하는 가정을 WRT에서 호출하지 않는다는 것입니다. 시스템이 제한을 초과하는 경우 임의로 높은 수를 지정하면 분명히 작동하지 않습니다. 또한 Hadoop이 존중하는 것처럼 시스템의 소프트 파일 설명자 한도를 확인하는 것이 좋습니다. – MrGomez

+0

문제가 해결되었습니다. 완전히 나쁜 것이 었습니다. 내 파이프 프로그램에 세분화 오류가있어 예외를 발생 시켰습니다. 그러나, 나는 예외는 나 같은 초보자에게 불가사의하게 보인다라고 생각한다. 어쩌면 하둡 (Hadoop) 사람들이 조금보고하는 오류를 해결할 수 있을까요? – peng

1

수업을 모든 수단에 의해, 자신의 프로그램에는 버그가 없는지 확인하려고합니다.

관련 문제