【发布时间】:2013-04-01 01:28:03
【问题描述】:
我有一个 Hadoop 0.20.2 集群。
我正在考虑使用DistributedCache 将作业代码分发到所有节点。我无法理解addFileToClassPath() 和addArchiveToClassPath() 之间的区别。从逻辑上讲,似乎前者用于单个类文件,后者用于 jars。但是在 javadocs 中,他们有这个示例代码:
DistributedCache.addFileToClassPath(new Path("/myapp/mylib.jar"), job);
【问题讨论】:
-
你为什么要这样做?当您使用
hadoop jar ...提交作业时,它会自动将.jar文件发送到任何地方。 -
@orangeoctopus - 在我们的例子中,这将是非常低效的。我依赖很多库,所以这个 jar 会很大。我不想在每次开始工作时通过网络将整个内容发送到每个从节点。
-
分布式缓存也将这样做。它不会永久地将该文件推出,它是一个缓存,因此它会随着时间的推移而被刷新。通常,人们通过在所有节点上安装库并将它们添加到类路径中来做到这一点,而无需 Hadoop API 的帮助。在生产中,人们为此目的使用 Puppet 之类的东西。
-
似乎仍然是与此相关的活动错误。 issues.apache.org/jira/browse/MAPREDUCE-752