MR执行环境有两种:本地测试环境,服务器环境
服务器环境的缺点在于不适合做调试 而本地测试环境非常适合做调试 可以在开发时选择本地测试环境 在正式运行时选择服务器环境
1. 本地测试环境(windows):
在windows下hadoop的安装目录的bin目录下放置winutils.exe文件(windows下的调试工具 兼容hadoop)
(1)在windows下配置hadoop的环境变量
配置完环境变量后重启电脑是其生效
(2)拷贝debug工具(winutils.exe)到HADOOP_HOME/bin
(3)修改hadoop的源码,并将修改后的源码放到项目的src目录下 这样就会优先加载src下的类 而覆盖导入的jar包中的类 注意:确保项目的lib需要真实安装的jdk的lib
(4)MR调用的代码需要改变:
a、src下不能有服务器的hadoop配置文件
b、在调用时使用:
Configuration config = new Configuration();
config.set("fs.defaultFS", "hdfs://master:8020");
config.set("yarn.resourcemanager.hostname", "master");
(5)直接在windows下的Eclipse中Run As Java Application
运行日志和结果如下
可以通过浏览器(master:8088)查看任务执行结果
也可以通过hdfs shell命令查看输出的内容
与源数据进行对比可以发现统计的单词个数没有问题
这种方式是在windows本地通过工具进行多线程模拟执行 因此不能通过web监控页面(master:8088或者slave3:8088)查看task的执行过程信息
2. 服务器环境:
首先需要在src下放置服务器上的hadoop配置文件
(1)在本地直接调用,执行过程在服务器上(真正企业运行环境)
a、把MR程序打包(jar),直接放到本地
b、修改hadoop的源码 ,注意:确保项目的lib需要真实安装的jdk的lib
c、增加一个属性:config.set("mapred.jar", "C:\\Users\\Administrator\\Desktop\\wc.jar");
这种方式就是在程序中设定windows下生成的jar包的位置 不需要人工手动提交 运行过程中会自动将本地的jar包提交到服务器下进行执行 这种方式可以通过web监控页面(master:8088或者slave3:8088)查看task的执行过程信息
(2)直接在服务器上,使用命令的方式调用,执行过程也在服务器上
a、把MR程序打包(jar),传送到服务器上
b、通过: hadoop jar jar路径 类的全限定名