运行MrReduce执行环境有两种:本地测试环境,服务器环境
本地测试环境(windows):
在windows的hadoop目录bin目录有一个winutils.exe
1、在windows下配置hadoop的环境变量
2、拷贝debug工具(winutils.exe)到HADOOP_HOME/bin
3、修改hadoop的源码 ,注意:确保项目的lib需要真实安装的jdk的lib
4、MR调用的代码需要改变:
a、src不能有服务器的hadoop配置文件
b、在调用是使用:
Configuration config = new Configuration();
config.set("fs.defaultFS", "hdfs://node7:8020");
config.set("yarn.resourcemanager.hostname", "node7");
服务器环境:
首先需要在src下放置服务器上的hadoop配置文件
1、在本地直接调用,执行过程在服务器上(真正企业运行环境)
a、把MR程序打包(jar),直接放到本地
b、修改hadoop的源码 ,注意:确保项目的lib需要真实安装的jdk的lib
c、增加一个属性:
config.set("mapred.jar", "C:\\Users\\Administrator\\Desktop\\wc.jar");
d、本地执行main方法,servlet调用MR。
2、直接在服务器上,使用命令的方式调用,执行过程也在服务器上
a、把MR程序打包(jar),传送到服务器上
b、通过: hadoop jar jar路径 类的全限定名
------------------------------------------------------------------------------------------
1、如果是本地环境运行mapreduce程序报 class xxxx not found 错误
要注意src不能有服务器的hadoop配置文件
配置文件可以放在根目录conf/下
2、执行MapReduce出现java.net.ConnectException: to 0.0.0.0:10020 failed on connection exception
是因为DataNode 需要访问 MapReduce JobHistory Server,如果没有修改则用默认值: 0.0.0.0:10020 。
需要修改配置文件 mapred-site.xml :
<property>
<name>mapreduce.jobhistory.address</name>
<!-- 配置实际的主机名和端口-->
<value>node01:10020</value>
</property>
在namenode上执行命令:
sbin/mr-jobhistory-daemon.sh start historyserver
3、运行mapreduce报org.apache.Hadoop.yarn.exceptions.InvalidAuxServiceException: The auxService: mapreduce_shuffle does not exist
在yarn-site.xml配置文件里添加
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
重启yarn
4、报null/bin/winutils.exe 错误
在windows下配置hadoop的环境变量
拷贝debug工具(winutils.exe)到HADOOP_HOME/bin
5、再继续报连接ConnectException错误
如果hadoop搭建在虚拟机上,一般由于配置文件中使用的是域名node01,node02的话
要在windows配置hosts
C:\Windows\system32\drivers\etc\hosts
桌面新建hosts配置好 ,覆盖上面的文件不能直接打开编辑。
cmd输入 ipconfig /flushdns #清除DNS缓存内容
使之立即生效
-----------------------------------------------------------------------------------------------------------------