java - 如何设置 Hadoop DistributedCache?

标签 java hadoop mapreduce distributed-cache

当我运行 hadoop 代码添加第三个 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/的任何有效本地目录。暂存/job_201405281453_0053/libjars/mahout-core-0.8-job.jar
在 org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathForWrite(LocalDirAllocator.java:381)
在 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.mapred.TaskTracker$4.run(TaskTracker.java:1320)
在 java.security.AccessController.doPrivileged( native 方法)
在 javax.security.auth.Subject.doAs(Subject.java:415)
在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190)
在 org.apache.hadoop.mapred.TaskTracker.initializeJob(TaskTracker.java:1311)
在 org.apache.hadoop.mapred.TaskTracker.localizeJob(TaskTracker.java:1226)
在 org.apache.hadoop.mapred.TaskTracker$5.run(TaskTracker.java:2603)
在 java.lang.Thread.run(Thread.java:744)

哪位大神知道怎么解决这个问题,谢谢!

最佳答案

在命令行中,您可以使用 -libjars 将 jar 添加到分布式缓存中。 ,唯一的先决条件是您的 MR 程序实现了使用 GenericOptionsParser 的 Tool,后者负责将 jar 添加到缓存中。

This page explains the above in more detail

关于java - 如何设置 Hadoop DistributedCache?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23908191/

相关文章:

java - webdriver 和浏览器之间通信使用的机制是什么

java - 读取文件页眉和页脚的程序

hadoop - 如何将reduce分区放入hadoop集群中设计的机器中?

windows - 什么是kerberos?

hadoop - HBase MILLIS_BETWEEN_NEXTS 计数器代表什么?

java - 从 JFrame 访问方法

java - 如何恢复 Activity 而不重新加载和处理其数据?

hadoop - 无法使用 YARN 运行 MapReduce 作业

Hadoop Mapper 运行缓慢

java - 使用 hadoop mapreduce 进行矩阵计算