我正在尝试在地图缩减作业提交期间为映射器/缩减器内存配置内存,如下所示:
hadoop jar Word-0.0.1-SNAPSHOT.jar -Dmapreduce.map.memory.mb=5120 com.test.Word.App /tmp/ilango/input /tmp/ilango/output/
上面的命令有什么问题吗?我收到以下异常。看起来我们需要放置JAR文件或者需要在Hadoop中配置使用-D选项的内容。提前谢谢。
Exception in thread "main" java.lang.ClassNotFoundException: -Dmapreduce.map.memory.mb=5120
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:270)
at org.apache.hadoop.util.RunJar.main(RunJar.java:205)
答案 0 :(得分:1)
运行MR作业的命令是
hadoop jar jarname classname输入输出
根据你的命令
hadoop jar jarname -D mapreduce.map.memory.mb = 5120 classname input output
hadoop检查名称为" -Dmapreduce.map.memory.mb = 5120 "的驱动程序类。 这就是为什么它显示 java.lang.ClassNotFound 异常。
应在驱动程序类之后提供-D 选项。
尝试使用以下命令。
hadoop jar Word-0.0.1-SNAPSHOT.jar com.test.Word.App -D mapreduce.map.memory.mb=5120 /tmp/ilango/input /tmp/ilango/output/
希望这可以解决您的问题。
答案 1 :(得分:0)
-D
后,您似乎错过了一个空格
尝试 -D mapreduce.map.memory.mb=5120
-Dproperty = value 与 -D property = value 之间存在差异。第一个设置JVM系统属性,第二个设置Hadoop配置属性。
引用Hadoop the Definitive指南一书,
-D property = value将给定的Hadoop配置属性设置为给定值。覆盖中的任何默认或站点属性 配置以及通过-conf选项设置的任何属性。
答案 2 :(得分:0)
如果您正在使用MVN并将Main类添加到清单中,在这种情况下为com.test.Word.App
,您的命令-D mapreduce.map.memory.mb=5120
将作为输入。
因此,只需删除com.test.Word.App
行