2009年9月9日水曜日

Too many fetch-failures

こんばんは、yoshitsuguです。

Map処理は完了しているのに、Reduce処理がなかなか進みません。
で、ログを確認してみると、"Too many fetch-failures"というエラーが出ていました。

そこで、Google検索をかけて、あるページにたどり着きました。


以下、引用(邦訳:yoshitsugu)

ReducerがHDFS内でデータをコピーするのに失敗した。チェックすべきは、LinuxのネットワークとHadoopの設定だ。
(The Reducer was failed to copy data through the HDFS, what we should do is to double check your Linux network and Hadoop configuration :)
1.必要な全パラメータがhadoop-site.xmlに設定されているかどうか確認し、Hadoop内の全ノードが同じ設定であることを確認する。
(1. Make sure that all the needed parameters are configured in hadoop-site.xml, and all the worker nodes should have the same content of this file.)

2.TaskTrackerやHDFSのURIにはIPアドレスではなくホスト名を使用するべきだ。URIにIPアドレスを使用しているHadoopクラスターをいくつかみてきたが、それらはサービスを開始してJobの実行をすることはできても正常に終了したことがない。
(2. URI for TaskTracker and HDFS should use hostname instead of IP address. I saw some instances of Hadoop cluster using IP address for the URI, they can start all the services and execute the jobs, but the task never finished successfully.)

3.全ノードの/etc/hostsファイルを確認し、ホスト名とIPアドレスのバインドがなされていることを確認する(ローカルホストではない)とともに全ホストがお互いにホスト名で通信できることを確認する。
(3. Check the file /etc/hosts on all the nodes and make sure that you’re binding the host name to its network IP, not the local one (127.0.0.1), don’t forget to check that all the nodes are able to communicate to the others using their hostname.)

今回の私の環境は、見事に/etc/hostsの中身が間違っていてこれが原因だとわかりました。

0 件のコメント:

コメントを投稿