2

Hadoop クラスターで MapReduce ジョブを実行しようとすると、奇妙な例外が発生します。ここで興味深いのは、HDFS にアクセスできるが、ジョブを実行できないことです。

UriBuilder uriBuilder = new UriBuilder("192.168.16.132");
uriBuilder.Port = 8021;//8082;
var hadoop = Hadoop.Connect(uriBuilder.Uri, "username", "password");
hadoop.StorageSystem.MakeDirectory("user/username/test"); //This works
//establish job configuration
HadoopJobConfiguration myConfig = new HadoopJobConfiguration();
myConfig.InputPath = "/user/username/input";
myConfig.OutputFolder = "/user/username/output";
try
{
    //connect to cluster
    MapReduceResult jobResult = hadoop.MapReduceJob.Execute<MySimpleMapper, MySimpleReducer>(myConfig); //This does not work and produces an error: The remote name could not be resolved
    //write job result to console
    int exitCode = jobResult.Info.ExitCode;
    string exitStatus = "Failure";
    if (exitCode == 0) exitStatus = "Success";
        exitStatus = exitCode + " (" + exitStatus + ")";
    Console.WriteLine();
    Console.Write("Exit Code = " + exitStatus);
    Console.Read();
}
catch (Exception exc)
{
    //Error sending request.
}

違いがある場合は、テストに Hortonworks サンドボックスを使用しています。正確なエラーは、「リモート名を解決できませんでした: 'sandbox'」です。

なぜこれが起こっているのか、それを修正するために何ができるのかを誰か説明できますか?

編集:Hadoop クラスターの IP をホスト ファイルに追加することで問題を修正しましたが、次の例外が発生しています:「応答ステータス コードは成功を示していません: 500 (サーバー エラー)」。

4

1 に答える 1

0

サーバーは Windows Azure ではなく、Apache の実装であることが判明しました。プロトコルに互換性がありませんでした。HDFS プロトコルは両方の実装で同じであるため、これでうまくいく可能性があります。ただし、Map/Reduce フレームワークはサポートされていませんでした。

于 2014-05-20T09:59:22.467 に答える