0

次のコードのように、hadoop コードを実行して 3 番目の jar を追加すると、次のようになります。

public static void addTmpJar(String jarPath, JobConf conf) throws IOException {
    System.setProperty("path.separator", ":");
    FileSystem fs = FileSystem.getLocal(conf);
    String newJarPath = new Path(jarPath).makeQualified(fs).toString();
    String tmpjars = conf.get("tmpjars");
    if (tmpjars == null || tmpjars.length() == 0) {
        conf.set("tmpjars", newJarPath);
    } else {
        conf.set("tmpjars", tmpjars + "," + newJarPath);
    }
}

次の例外が発生します。

Error initializing attempt_201405281453_0053_m_000002_0:

org.apache.hadoop.util.DiskChecker$DiskErrorException: taskTracker/hadoop/distcache/-7315515059647727905_-860888033_1107570546/nn.hadoop.dev/tmp/hadoop-hadoop/mapred/staging/hadoop/ の有効なローカル ディレクトリが見つかりませんでした。 staging/job_201405281453_0053/libjars/mahout-core-0.8-job.jar at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathForWrite(LocalDirAllocator.java:381) at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator) .java:146) org.apache.hadoop.filecache.TrackerDistributedCacheManager.getLocalCache(TrackerDistributedCacheManager.java:173) org.apache.hadoop.filecache.TaskDistributedCacheManager.setupCache(TaskDistributedCacheManager.java:187) org.apache.hadoop. java.security.AccessController で mapred.TaskTracker$4.run(TaskTracker.java:1320)。doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:415) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190) at org.apache.hadoop.mapred. org.apache.hadoop.mapred.TaskTracker.localizeJob(TaskTracker.java:1226) の TaskTracker.initializeJob(TaskTracker.java:1311) org.apache.hadoop.mapred.TaskTracker$5.run(TaskTracker.java:2603) のjava.lang.Thread.run(Thread.java:744)2603) java.lang.Thread.run(Thread.java:744) で2603) java.lang.Thread.run(Thread.java:744) で

any one who can tell how to solve this problem,thanks!

4

1 に答える 1

0

コマンドラインから、 を使用して分散キャッシュに jar を追加でき-libjarsます。唯一の前提条件は、MR プログラムが GenericOptionsParser を使用するツールを実装していることです。後者は、jar をキャッシュに追加します。

このページでは、上記について詳しく説明しています

于 2014-05-28T10:06:31.217 に答える