2

私は Hadoop が初めてで、wordcount の例を実行しようとしています。コンピューター上の仮想マシンによって作成された 4 つのノードのクラスターがあります。ジョブが map タスクを完了するたびに、reduce タスクは約 16% で次のエラーを示します。

シャッフル エラー: MAX_FAILED_UNIQUE_FETCHES を超えました。救済。

12/05/24 04:43:12 WARN mapred.JobClient: タスク outputmachine3-VirtualBox の読み取りエラー

スレーブが他のスレーブからデータを取得できないようです。いくつかのリンクで、/etc/hosts ファイルの不一致が原因で発生する可能性があることがわかりました。しかし、私はそれらをクロスチェックしましたが、それらはすべて一貫しています。誰でも私を助けてくれますか

4

2 に答える 2

3

共通のHadoopポート(この場合はタスクトラッカーの場合は50060)上のクラスターノード間の通信を妨げるファイアウォールはありますか?ポート50060で1つのノードから別のノードにカールを実行してテストし、http応答コードを取得することを確認します。

curl -I http://node1:50060/

$HADOOP_HOME/conf/slaves上記の「node1」をファイル内の各値に必ず置き換えてください

編集したがって、これはおそらくDNSの問題であることがわかります。これが、試してみるべきことです。

  • ファイルを調べ${HADOOP_HOME}/conf/slavesます-ここの各エントリは、クラスタ内の各ノードの/ etc / hostsファイルにある必要があります。または、ネットワークDNSサーバーにある必要があります。
  • クラスタ内のすべてのノードでhostsファイルをアサートしたらまたはDNSサーバーを構成したら)、各ノードにログインし、スレーブファイル内の名前で他のクラスタノードにpingできることを確認します。最後に、タスクトラッカー(ポート50060)を各ノードから他のノードにカールできることを表明します(ここでもスレーブファイルのマシン名を使用します)
  • 安全のために、mapreduceサービスを再起動してください
于 2012-05-24T00:35:18.833 に答える
1

ターミナルで $hostname と入力して、各ノードのホスト名を確認します。マシンの名前が同じであることを確認してください (マスター ノードではマスター、スレーブ ノードではスレーブ)。そうでない場合は、/etc/hostname をノード名 (マスター/スレーブ) に変更します。次に、システムを再起動します。それは動作します。

シンプルなグループ

于 2013-07-02T10:02:49.953 に答える