mapreduce的运行方式一般有两种,一是从本地导出一个jar包,在传到虚拟机上运行,这样调试起来非常的不方便,如果出现错误就需要重新导出jar包。
第二种方式是在本地直接运行,但是在运行前需要进行一些准备。我原来一直用的是方式一,由于需要,必须改成方式二,今天进行了相关的操作。
首先,需要准备windwos编译下的hadoop包,实际上只需要将linux中的hadoop中的lib目录替换,(还有的说法,如果还是不行的话,还需要将lib包中也替换)
由于我的Hadoop版本比较老,是2.4.1,bin目录不是很好找,下边是我早github中找到的链接
https://github.com/srccodes/hadoop-common-2.2.0-bin
直接粘到hadoop中的bin目录替换,然后就是书写mapreduce程序,里边的代码和虚拟机中的代码基本一致,但是,需要在主程序中加入一行代码
Configuration conf = new Configuration();
conf.set("fs.defaultFS","hdfs://192.168.252.200:9000");
这两句最好紧挨着,否则会报错。这里边的设置的自己虚拟机上的master节点的ip地址。然后直接运行程序,就可以成功了
网上有人说要配置HADOOP_HOME的系统变量,但是本人在运行程序时尝试修改,但是没有成功,可是但运行mapreduce时不会报错,所以这个步骤因该没有用
在运行时可能会出 pression denied错误,这是因为你的hdfs中的文件的权限太高,你可以直接将其设置成777,使任何用户都具有访问该文件的权限。
亲自尝试,可以成功