2012-01-03 18 views
0

私はこの問題を非常に長い間抱えています。 私はdistibutedノードで何かを実行しようとします。 私は2つのデータノードとnamenodeとjobtrackerを持つマスターを持っています。 私はノードはhadoop分散モードの実行に失敗し続けます

< 
2012-01-03 08:48:30,910 WARN mortbay.log - /mapOutput: org.apache.hadoop.util.DiskChecker$DiskErrorException: Could not find taskTracker/jobcache/job_201201031846_0001/attempt_201201031846_0001_m_000000_1/output/file.out.index in any of the configured local directories 
2012-01-03 08:48:40,927 WARN mapred.TaskTracker - getMapOutput(attempt_201201031846_0001_m_000000_2,0) failed : 
org.apache.hadoop.util.DiskChecker$DiskErrorException: Could not find taskTracker/jobcache/job_201201031846_0001/attempt_201201031846_0001_m_000000_2/output/file.out.index in any of the configured local directories 
    at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathToRead(LocalDirAllocator.java:389) 
    at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathToRead(LocalDirAllocator.java:138) 
    at org.apache.hadoop.mapred.TaskTracker$MapOutputServlet.doGet(TaskTracker.java:2887) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:502) 
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:363) 
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) 
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766) 
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:417) 
    at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at org.mortbay.jetty.Server.handle(Server.java:324) 
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:534) 
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:864) 
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:533) 
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:207) 
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:403) 
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:522) 
> 

とスレーブのhadoop.logでこのエラーのそれぞれのtasktracker.logに、次のエラーを取得しておいてください。

2012-01-03 10:20:36,732 WARN mapred.ReduceTask - attempt_201201031954_0006_r_000001_0 adding host localhost to penalty box, next contact in 4 seconds 
2012-01-03 10:20:41,738 WARN mapred.ReduceTask - attempt_201201031954_0006_r_000001_0 copy failed: attempt_201201031954_0006_m_000001_2 from localhost 
2012-01-03 10:20:41,738 WARN mapred.ReduceTask - java.io.FileNotFoundException: http://localhost:50060/mapOutput?job=job_201201031954_0006&map=attempt_201201031954_0006_m_000001_2&reduce=1 
    at sun.reflect.GeneratedConstructorAccessor6.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1491) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1485) 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1139) 
    at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.getInputStream(ReduceTask.java:1447) 
    at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.getMapOutput(ReduceTask.java:1349) 
    at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.copyOutput(ReduceTask.java:1261) 
    at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.run(ReduceTask.java:1195) 
Caused by: java.io.FileNotFoundException: http://localhost:50060/mapOutput?job=job_201201031954_0006&map=attempt_201201031954_0006_m_000001_2&reduce=1 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1434) 
    ... 4 more 

2012-01-03 10:20:41,739 WARN mapred.ReduceTask - attempt_201201031954_0006_r_000001_0 adding host localhost to penalty box, next contact in 4 seconds 
2012-01-03 10:20:46,761 WARN mapred.ReduceTask - attempt_201201031954_0006_r_000001_0 copy failed: attempt_201201031954_0006_m_000000_3 from localhost 
2012-01-03 10:20:46,762 WARN mapred.ReduceTask - java.io.FileNotFoundException: http://localhost:50060/mapOutput?job=job_201201031954_0006&map=attempt_201201031954_0006_m_000000_3&reduce=1 
    at sun.reflect.GeneratedConstructorAccessor6.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    at sun.net.www.protocol.http.HttpURLConnection$6.run(HttpURLConnection.java:1491) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.net.www.protocol.http.HttpURLConnection.getChainedException(HttpURLConnection.java:1485) 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1139) 
    at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.getInputStream(ReduceTask.java:1447) 
    at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.getMapOutput(ReduceTask.java:1349) 
    at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.copyOutput(ReduceTask.java:1261) 
    at org.apache.hadoop.mapred.ReduceTask$ReduceCopier$MapOutputCopier.run(ReduceTask.java:1195) 
Caused by: java.io.FileNotFoundException: http://localhost:50060/mapOutput?job=job_201201031954_0006&map=attempt_201201031954_0006_m_000000_3&reduce=1 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1434) 
    ... 4 more 

これは私の設定です:

マップドサイト:

<property> 
<name>mapred.job.tracker</name> 
<value>10.20.1.112:9001</value> 
<description>The host and port that the MapReduce job tracker runs 
at.</description> 
</property> 

<property> 
    <name>mapred.map.tasks</name> 
    <value>2</value> 
    <description> 
    define mapred.map tasks to be number of slave hosts 
    </description> 
</property> 

<property> 
    <name>mapred.reduce.tasks</name> 
    <value>2</value> 
    <description> 
    define mapred.reduce tasks to be number of slave hosts 
    </description> 
</property> 

<property> 
    <name>mapred.system.dir</name> 
    <value>filesystem/mapreduce/system</value> 
</property> 

<property> 
    <name>mapred.local.dir</name> 
    <value>filesystem/mapreduce/local</value> 
</property> 

<property> 
    <name>mapred.submit.replication</name> 
    <value>2</value> 
</property> 
<property> 
    <name>hadoop.tmp.dir</name> 
    <value>tmp</value> 
</property> 

<property> 
    <name>mapred.child.java.opts</name> 
    <value>-Xmx2048m</value> 
</property> 

コアサイト:

<property> 
<name>fs.default.name</name> 
<value>hdfs://10.20.1.112:9000</value> 
<description>The name of the default file system. A URI whose 
scheme and authority determine the FileSystem implementation. 
</description> 
</property> 

私はtmpディレクトリヘルプで試してみました。 mapred.local.dirで試してみました。役に立たなかった。

実行時にファイルシステムディレクトリに何が入っているのか疲れました。 パス:taskTracker/jobcache/job_20120103186_0001/attempt_201201031816_0001_m_000000_1/ が存在しますが、その中に出力フォルダはありません。

ありがとうございました。

+0

java.io.FileNotFoundException:http:// localhost:50060/mapOutput?job = job_201201031954_0006&map = attempt_201201031954_0006_m_000001_2&reduce = 1 はこの有効なURLですか?指定された場所にファイルがありますか?私が試みる別のアプローチは、localhostをmachinename(または)に変更することです127.0.0.1 – kosa

+0

スレーブ127.0.1.1のhostsファイルをslave1/slave2に変更しました。それは同じ例外ではなく、あなたの返信のためにURL – AAaa

答えて

1

hadoop.tmp.dir,mapred.system.dirおよびmapred.local.dirは、相対パスではなく絶対パスである必要があります。ディレクトリの場所は/で始まります。これらのプロパティもデフォルトに設定されているため、これらのプロパティを指定する必要はありません。提案の

カップルは、あなたはHadoopのを設定する上でのHadoopのチュートリアル12

  • スタートのHadoopを初めて使用する場合。

  • 上記のチュートリアルで指定した最小構成パラメータから始めます。成功すると、追加のチューニング/機能を実行できます。 mapred.reduce.tasksのようないくつかのパラメータをデフォルトで2に設定する必要はありません。

  • Linuxを使い慣れていない場合は、CDHのようなHadoop VMを使い始めます。ここにはinstructionsがあります。

  • SOまたはフォーラムのすべてのクエリについては、Hadoopのバージョンを指定してください。

+0

にスレーブ1 /スレーブ2であります。私が付いているこの問題のために追加したパラメータのいくつか。私はそれらを追加すると問題が解決するかもしれないと思った。私は最終的にあなたが言及したHadoop VMに行きますが、すでに3つのVMがインストールされているので、私はこれらの問題を解決しようとします。あなたがhadoopを使っているならあなたのhostsファイルの例を投稿できますか? パラメータを絶対パスに変更すると、次のような不具合が発生します。java.io.IOException:未定義のジョブ出力パス – AAaa

+0

完了例外の通知 –

2

ここで私は疑問があると思う:あなたのtasktrackerはマスターからマップ出力を依頼したいので、それは次のようになります。

http://10.20.1.112:50060/mapOutput?job=job_201201031954_0006&map=attempt_201201031954_0006_m_000001_2&reduce=1 

が、あなたのtasknodeで、それは

からそれを取得しようとしました
http://localhost:50060/mapOutput?job=job_201201031954_0006&map=attempt_201201031954_0006_m_000001_2&reduce=1 

問題が発生し、主な問題はhadoop.tmp.dir、mapred.system.dir、mapred.localではありません。dir、私もこの問題に直面していますが、masterの/ etc/hostsにある "127.0.0.1 localhost"を削除して解決しました。

EDIT

要約すると、エラーを引き起こしているノードのファイル構造にetc/hostsファイルに移動し、ライン127.0.0.1 localhost

+0

**エラーの原因となっているノードのローカルホストを置き換えてください。私のために働くことができますが、hostsファイルに設定されるべき実際の 'マスター' namenodeではなくlocalhostへの呼び出しを引き起こしていたものを知ることは素晴らしいことです.... – planty182

+0

また、私は100%これを解決することができますか?**これを実行した後、データノードのログを見た後** ** 2013-09-04 21:34:35,748 INFO org.apache.hadoop.mapred.TaskTracker: 'KillJobAction' job_201309042109_0002 2013-09-04 21:34:35,748 WARN org.apache.hadoop.mapred.TaskTracker:未知のジョブjob_201309042109_0002が削除されていますが、このノードでタスクが実行されたことは何もありません。これにより**データノードは何も処理していない**と考えられ、**ジョブは別のノードに割り当てられています**そのノードは処理を完了しました – planty182

0

2は、警告がを削除するだけでなく、運転効率に影響を与え、彼らはまだエラーの原因を解決しようとすると、出力ファイルの途中でジョブを見つけることができません。以下のチェックを行う必要があります。

、設定mapred.local.dirプロパティ B、DF-Hいることを確実にするために、キャッシュパスの妥当性 C、メモリ空間の妥当性 dにおける自由な外観にスペースを参照してくださいキャッシュパス書き込み可能なアクセス許可 e、ディスクの破損をチェック

0

私は同じ問題に直面しました。私はあなたが所有者であるsudoコマンドでHadoopを実行することで解決しました。

すなわち、1)須藤秀Owner_Of_Hadoop

2) sudo .start-all.sh 

また、すべてのファイルが適切な権限を持っていることを確認してください。

関連する問題