1

mapreduce アプリケーションを (スタンドアロンの Hadoop で) 起動しようとするたびに、tmp ディレクトリに何かを入れようとしますが、できません:

Exception in thread "main" java.io.IOException: Failed to set permissions of path: \tmp\hadoop-username\mapred\staging\username-1524148556\.staging to 0700

無効なパスを使用するために結び付けられます (cygwin の場合、スラッシュは逆にする必要があります)。

core-site.xml (Hadoop の conf フォルダー内) に hadoop.tmp.dir を設定しましたが、設定ファイルが読み込まれないようです (ファイルに構文エラーを入れても問題ありません)。追加した:

--config /home/username/hadoop-1.0.1/conf

コマンドに、違いはありません。私も試しました:

export HADOOP_CONF_DIR=/home/username/hadoop-1.0.1/conf

しかし、それも効果がないようです....

構成が読み取られない理由、またはここで他に何が見られないのかについての指針はありますか?

ありがとう!

4

2 に答える 2

0

スラッシュが逆になっているわけではありません。/tmpは実際には/cygwin/ tmpまたはc:\ cygwin\tmpにマップされるcygwinパスです。hadoopはjavaであり、cygwinマッピングを認識しないため、c:\tmpを意味するのに/tmpが必要です。

cygwinで1.0.1を実行したい場合は、パッチを適用するものが非常にたくさんあります。

参照: http: //en.wikisource.org/wiki/User :Fkorning / Code / Hadoop-on-Cygwin

于 2012-05-07T16:18:31.573 に答える
0

次のリンクが役立つことがわかりました。問題は新しいバージョンの Hadoop にあるようです。バージョン 1.0.4 を使用していますが、まだこの問題に直面しています。

http://comments.gmane.org/gmane.comp.jakarta.lucene.hadoop.user/25837

更新: Mahout 0.7 では、「Mahoot in Action」の本の例を使用する場合は、例のコードを次のように変更する必要があります。

    File outFile = new File("output");
    if (!outFile.exists()) {
        outFile.mkdir();
    }
    Path output = new Path("output");
    HadoopUtil.delete(conf, output);

    KMeansDriver.run(conf, new Path("testdata/points"), new Path("testdata/clusters"),
            output, new EuclideanDistanceMeasure(), 0.001, 10,
            true, 0.1, true);
于 2013-05-01T05:52:22.100 に答える