我的所有hadoop节点上都有一个jar文件 /home/ubuntu/libs/javacv-0.9.jar
,以及其他一些jar文件。
当我的mapreduce应用程序在hadoop节点上执行时,我遇到了这个异常
java.io.FileNotFoundException: File does not exist hdfs://192.168.0.18:50000/home/ubuntu/libs/javacv-0.9.jar
如何解决此异常?在hadoop中运行的jar如何从hadoop节点的本地文件系统访问第三方库?
2条答案
按热度按时间dtcbnfnu1#
您需要将文件复制到hdfs,而不是本地文件系统。
要将文件复制到hdfs,您需要使用:
其他选项是将文件路径更改为:
要将jar文件添加到类路径,请查看distributedcache:
您可能需要遍历该目录中的所有jar文件。
t9aqgxwy2#
另一种选择是使用分布式缓存
addFileToClassPath(new Path("/myapp/mylib.jar"), job);
提交应该添加到Map器和reducer任务的类路径的jar文件。注意:确保首先将jar文件复制到hdfs。
您甚至可以使用hadoop命令行参数将jar文件添加到类路径
-libjars <jar_file>
.注意:确保mapreduce应用程序实现toolrunner以允许
-libjars
命令行中的选项。