Hadoop2.x.x用IDEA直接调用

来源:互联网 发布:日式风衣知乎 编辑:程序博客网 时间:2024/06/06 17:17

不知道描述清楚没有,就是在IEDA中直接运行main方法然后本地调用服务器上的mapreduce!!!

你需要做以下的工作:

1.在windows下解压一个hadoop2.x.x包然后把winutils.exe文件放到bin目录下

2.添加环境变量:

HADOOP_HOME=E:\hadoop-2.7.4
把%HADOOP_HOME%\bin;加到Path里边

3.把你服务器上的hadoop的4个配置文件加入到你的java项目的src下:

hdfs-site.xmlcore-site.xmlyarn-site.xmlmapred-site.xml
需要注意的是:你可能会报如下的错误:

Error Occurs:Exception message: /bin/bash: line 0: fg: no job controlStack trace: ExitCodeException exitCode=1: /bin/bash: line 0: fg: no job control at org.apache.hadoop.util.Shell.runCommand(Shell.java:538) at org.apache.hadoop.util.Shell.run(Shell.java:455) at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:715) at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:211) at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:302) at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:82) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745)Container exited with a non-zero exit code 1
这个问题的解决办法是,在你的java项目下的mapred-site.xml文件中加入如下的配置:

<property>          <name>mapred.remote.os</name>        <value>Linux</value>        <description>Remote MapReduce framework's OS, can be either Linux or Windows</description>     </property>    <property>        <name>mapreduce.app-submission.cross-platform</name>        <value>true</value>    </property>
然后就发现,能成功运行mapreduce了!





原创粉丝点击