今天在eclipse下调用hadoop执行java任务,这是的hadoop是2.7.3版本 电脑的系统为win7
首先将linux下hadoop的我们需要配置文件放在src/main/resources下
这里的配置文件都是从linux下下载下来的,写好程序开始运行,会报一个关于权限的错误,有两种解决方法:
1、在window下配置一个HADOOP_USER_NAME环境变量,我这里的用户名是hadoop 则值为hadoop,这时候权限问题就解决了;
2、在linux下给出777的权限 输入命令:
$HADOOP_HOME/bin/hadoop fs -chmod -R 777 /tmp。
这时关于权限的问题就解决了。之后在运行会报一个
Stack trace: ExitCodeException exitCode=1: /bin/bash: line 0: fg: no job con错误如下图
这个时候我们就要修改我们的配置文件 让它能访问到linux
在mapred-site.xml下添加
<property>
<name>mapred.remote.os</name>
<value>Linux</value>
</property>
<property>
<name>mapreduce.app-submission.cross-platform</name>
<value>true</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>/mysoftware/hadoop-2.7.3/etc/hadoop,/mysoftware/hadoop-2.7.3/share/hadoop/common/*,/mysoftware/hadoop-2.7.3/share/hadoop/common/lib/*,/mysoftware/hadoop-2.7.3/share/hadoop/hdfs/*,/mysoftware/hadoop-2.7.3/share/hadoop/hdfs/lib/*,/mysoftware/hadoop-2.7.3/share/hadoop/mapreduce/*,/mysoftware/hadoop-2.7.3/share/hadoop/mapreduce/lib/*,/mysoftware/hadoop-2.7.3/share/hadoop/yarn/*,/mysoftware/hadoop-2.7.3/share/hadoop/yarn/lib/*
</value>
</property>
这里的mapreduce.application.classpath 要和自己的配置一样 自己可以查看
同样的在yarn-site.xml也添加
<property>
<name>yarn.application.classpath</name>
<value>/mysoftware/hadoop-2.7.3/etc/hadoop,/mysoftware/hadoop-2.7.3/share/hadoop/common/*,/mysoftware/hadoop-2.7.3/share/hadoop/common/lib/*,/mysoftware/hadoop-2.7.3/share/hadoop/hdfs/*,/mysoftware/hadoop-2.7.3/share/hadoop/hdfs/lib/*,/mysoftware/hadoop-2.7.3/share/hadoop/mapreduce/*,/mysoftware/hadoop-2.7.3/share/hadoop/mapreduce/lib/*,/mysoftware/hadoop-2.7.3/share/hadoop/yarn/*,/mysoftware/hadoop-2.7.3/share/hadoop/yarn/lib/*</value>
</property>
注意name不要写错。之前配置的那些xml文件在以前的文章中有写到
我们再运行的时候注意必须要将该工程打的包提交到集群中去
我这里采用的是maven打包 clean package 注意运行环境要是jdk 不能是jre否则打包不成功,凡是修改了代码再运行都要重新clean packgae一下 个人觉得有点麻烦
//设置提交到集群执行的jar包
job.setJar("target/hadoop42-003-mapreduce-format-0.0.1-SNAPSHOT.jar");
之后就是在集群中运行 我们可以去http://master:8088/cluster/下查看任务情况
以上是关于今天遇到的问题的总结。。。继续fighting