2012-04-03 4 views
4

마침내 Hadoop (단일 데비안 시스템에서 실행)에서 map-reduce 작업을 시작할 수 있습니다. 그러나,지도 작업은 항상 다음과 같은 오류와 함께 실패 감소는 :출력을 쓰면 Hadoop map-reduce 작업이 실패합니다.

[email protected]:~$ ./hadoop-1.0.1/bin/hadoop jar hadooptest/main.jar nl.mydomain.hadoop.debian.test.Main /user/hadoopmachine/input /user/hadoopmachine/output 
Warning: $HADOOP_HOME is deprecated. 

12/04/03 07:29:35 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same. 
****hdfs://localhost:9000/user/hadoopmachine/input 
12/04/03 07:29:35 INFO input.FileInputFormat: Total input paths to process : 1 
12/04/03 07:29:35 INFO mapred.JobClient: Running job: job_201204030722_0002 
12/04/03 07:29:36 INFO mapred.JobClient: map 0% reduce 0% 
12/04/03 07:29:41 INFO mapred.JobClient: Task Id : attempt_201204030722_0002_m_000002_0, Status : FAILED 
Error initializing attempt_201204030722_0002_m_000002_0: 
ENOENT: No such file or directory 
at org.apache.hadoop.io.nativeio.NativeIO.chmod(Native Method) 
at org.apache.hadoop.fs.FileUtil.execSetPermission(FileUtil.java:692) 
at org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:647) 
at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:509) 
at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:344) 
at org.apache.hadoop.mapred.JobLocalizer.initializeJobLogDir(JobLocalizer.java:239) 
at org.apache.hadoop.mapred.DefaultTaskController.initializeJob(DefaultTaskController.java:196) 
at org.apache.hadoop.mapred.TaskTracker$4.run(TaskTracker.java:1226) 
at java.security.AccessController.doPrivileged(Native Method) 
at javax.security.auth.Subject.doAs(Subject.java:416) 
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1093) 
at org.apache.hadoop.mapred.TaskTracker.initializeJob(TaskTracker.java:1201) 
at org.apache.hadoop.mapred.TaskTracker.localizeJob(TaskTracker.java:1116) 
at org.apache.hadoop.mapred.TaskTracker$5.run(TaskTracker.java:2404) 
at java.lang.Thread.run(Thread.java:636) 

12/04/03 07:29:41 WARN mapred.JobClient: Error reading task outputhttp://localhost:50060/tasklog?plaintext=true&attemptid=attempt_201204030722_0002_m_000002_0&filter=stdout 
12/04/03 07:29:41 WARN mapred.JobClient: Error reading task outputhttp://localhost:50060/tasklog?plaintext=true&attemptid=attempt_201204030722_0002_m_000002_0&filter=stderr 

불행하게도, 그것은 단지 말한다 : "ENOENT : 그런 파일이나 디렉토리가"그것이 실제로 액세스하려고 어떤 디렉토리 말을하지 않습니다. Ping localhost가 작동하며 입력 디렉토리가 존재합니다. 항아리 위치도 정확합니다.

아무에게도이 오류를 수정하는 방법에 대한 포인터 나 Hadoop이 액세스하려고 시도하는 파일을 찾는 방법을 알려줄 수 있습니까?

나는 하둡 메일 링리스트에 대한 몇 가지 비슷한 문제를 찾았지만 이들에 아무런 응답 ...

감사합니다!

P. mapred.local.dir에 대한 설정은 (mapred-site.xml 파일에서) 다음과 같습니다 요청으로

<property> 
    <name>mapred.local.dir</name> 
    <value>/home/hadoopmachine/hadoop_data/mapred</value> 
    <final>true</final> 
</property> 

, PS의 auxww의 출력 | 그렙 TaskTracker는 다음과 같습니다

작업 추적기에서
1000  4249 2.2 0.8 1181992 30176 ?  Sl 12:09 0:00 
/usr/lib/jvm/java-6-openjdk/bin/java -Dproc_tasktracker -Xmx1000m -Dhadoop.log.dir=/home/hadoopmachine/hadoop-1.0.1/libexec/../logs 
-Dhadoop.log.file=hadoop-hadoopmachine-tasktracker-debian.log -Dhadoop.home.dir=/home/hadoopmachine/hadoop-1.0.1/libexec/.. 
-Dhadoop.id.str=hadoopmachine -Dhadoop.root.logger=INFO,DRFA -Dhadoop.security.logger=INFO,NullAppender 
-Djava.library.path=/home/hadoopmachine/hadoop-1.0.1/libexec/../lib/native/Linux-i386-32 
-Dhadoop.policy.file=hadoop-policy.xml -classpath [ommitted very long list of jars] org.apache.hadoop.mapred.TaskTracker 
+0

나는 당신이 열려있는 jdk 6를 사용하고있는 것을 본다 --- 그것은 proble m? Hadoop은 sun/oracle jvm에서만 지원됩니다. 나는 열려있는 JDK 6 머신에서 실행중인 나의 오래된 hadoop 인스턴스에서 이것과 관련된 많은 종류의 에러를 보았다. – jayunit100

답변

4

,이 작업에 대한 실행하는 하둡 노드를 식별합니다. SSH를 해당 노드에 지정하고 hadoop.log.dir 디렉토리의 위치를 ​​확인하십시오 (이 노드에 대해 mapred-site.xml 확인). 내 생각에 hadoop 사용자는이 폴더에 하위 디렉토리를 만들 수있는 올바른 권한이 없습니다.

실제 폴더는 $ {hadoop.log.dir}/userlogs 폴더에 있습니다.이 폴더가 올바른 권한을 가지고 있는지 확인하십시오.

ps 출력을 보면, 나는 이것이 폴더라고 생각합니다. 당신은의 허가를 검사 할 필요가있다 :

/home/hadoopmachine/hadoop-1.0.1/libexec/../logs 
+0

위치를 확인했는데 사용자에게 권한이 있습니다 (로컬 호스트에서 모든 노드를 실행하므로 동일한 컴퓨터 임). 그래서 그것은 접근 할 수없는 길로 보이지 않습니다. – openbas2

+0

나는 hadoop이 mapred.local.dir에 몇 개의 폴더를 작성한다는 것을 추가해야한다. 그래서 확실히 찾을 수있다. 다른 중요한 경로가 있는가? 나는 모두 기본 튜토리얼에있는 것들을 가지고있다 ... – openbas2

+0

사용자는 hadoop 서비스를 실행한다 - 그 사용자는 권한 (로컬 사용자가 아님)을 가지고있다 - 기본적으로'su - hadoop'을 수행 한 다음 mkdir을 수행 할 수있다. 나열된 각 폴더에 있습니까? 당신은 또한 conf 속성'mapred.local.dir'을 게시 할 수 있습니까 –