44

ジョブを実行しようとすると、次の例外が発生します。

Exception in thread "main" java.io.IOException: Mkdirs failed to create /some/path
    at org.apache.hadoop.util.RunJar.ensureDirectory(RunJar.java:106)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:150)

/some/path は hadoop.tmp.dir です。ただし、/some/path で dfs -ls cmd を発行すると、それが存在し、データセット ファイルが存在することがわかります (ジョブを開始する前にコピーされました)。また、パスは Hadoop 構成で正しく定義されています。任意の提案をいただければ幸いです。Hadoop 0.21 を使用しています。

4

8 に答える 8

94

MacBook Air のスタンドアロン モードで CDH4 から mahout を実行すると、この問題が発生しました。

問題は、/tmp/hadoop-xxx/xxx/LICENSE ファイルと /tmp/hadoop-xxx/xxx/license ディレクトリが、mahout ジョブの unjar 時に大文字と小文字を区別しないファイル システムに作成されることです。

次のようにjarファイルからMETA-INF/LICENSEを削除することで、これを回避できました。

zip -d mahout-examples-0.6-cdh4.0.0-job.jar META-INF/LICENSE

そして、それを検証しました

jar tvf mahout-examples-0.6-cdh4.0.0-job.jar | grep -i license

お役に立てれば!

于 2012-07-08T01:08:54.533 に答える
13

この問題は OSX 固有のもので、Mac ではデフォルトでファイルシステムが 大文字と小文字を区別しないように設定されているためです (大文字と小文字は保持されますが、大文字と小文字が区別されないため、私の意見では非常に悪いと思います)。

これを回避するためのハックは、大文字と小文字を区別するディスク ユーティリティで.dmg ディスク イメージを作成し、このイメージを必要な場所 (つまり、hadoop.tmp.dir または /tmp) に次のコマンドで (スーパーユーザーとして) マウントすることです。

sudo hdiutil attach -mountpoint /tmp <my_image>.dmg

お役に立てば幸いです。

于 2012-11-26T18:14:10.967 に答える
12

これは、HDFS ではなく、(ジョブ jar を解凍するために) 作成されているローカル ディスク上のファイルです。このディレクトリをmkdirする権限があることを確認してください(コマンドラインから試してください)

于 2012-05-09T23:24:08.950 に答える
9

私の場合、Maven プロジェクトの pom.xml の以下のコード行は Mac で動作しました。

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>2.0</version>
    <configuration>
      <shadedArtifactAttached>true</shadedArtifactAttached>
    </configuration>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>shade</goal>
        </goals>
          <configuration>
            <filters>
              <filter>
                <artifact>*:*</artifact>
                <excludes>
                  <exclude>META-INF/*.SF</exclude>
                  <exclude>META-INF/*.DSA</exclude>
                  <exclude>META-INF/*.RSA</exclude>
                  <exclude>META-INF/LICENSE*</exclude>
                  <exclude>license/*</exclude>
                </excludes>
              </filter>
            </filters>
        </configuration>
      </execution>
    </executions>
  </plugin>
于 2015-09-21T15:24:19.647 に答える