此博文不是为了阐述如何在eclipse环境下导入hadoop进行开发,
而是eclipse如何运行hadoop
此前将hadoop jar导入到eclipse下,以为完成了开发环境搭建,而实际上这样完全是一个误导,
按照网上很多教程导入hadoop环境到eclipse下,
创建MapReduce project ,WorldCount程序测试。。。貌似正常,实为假象。
运行出来的结果根本不是在自己搭建的hadoop环境下,而是在eclipse自己根据jar包中的类
虚拟(大概这个意思)出来的一个hadoop运行环境,
而且在这个环境下
由于jar包中包含core-default.xml,hdfs-default.xml,mapred-default.xml三个配置文件,
这是eclipse虚拟hadoop环境所参照的配置文件,优先于core-site.xml,hdfs-site.xml,
mapred-site.xml配置文件。
而在运行Mapreduce程序是主要影响的就是:
mapred-default.xml 配置文件中的 mapred.job.tracker , 默认的值是local,也就是本地模型,
即在本地下运行一个map和一个reduce,
所以运行过mapreduce程序就能体会到不论如何在程序中设置运行的reduce数目也不起作用!
至于解决方案:
简单方法,
在程序当中加上 conf.setString("mapred.job.tracker", 自己mapred-site.xml中的相应配置)
(还有貌似能够设置mapred-site.xml覆盖掉mapred-default.xml , 之前我是这么解决的,
但忘了怎么弄得来着, 谁要会的话,麻烦评论里边指教下,谢过啊)
根本方法:
重新修改编译hadoop的jar包,方法网上一大堆。