在mapreduce作业提交期间为映射器和reducer配置内存

时间:2014-10-08 09:04:21

标签: java hadoop mapreduce

我正在尝试在地图缩减作业提交期间为映射器/缩减器内存配置内存,如下所示:

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)

3 个答案:

答案 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