我们在本地运行hadoop的时候,发现了报错:
两种情况:
1、没有配置winutils
这种情况只能从本地上传文件到hdfs,但是不能从hdfs下载文件到windows本地,也无法在本地运行MapReduce的过程。如果连上传的时候都报这种错误,请检查是否在Linux中运行了hadoop集群。
2、下载了winutils,但没有在Path中配置winutils变量
下载了winutils,也配置了winutils的环境变量,但是没有将环境变量加到Path中,所以报错,没有配置到Path中,就无法在本地运行hadoop的mapreduce等一些逻辑处理的代码
分析报错原因:
没有下载winutils,或者已经下载并且配置了HADOOP_HOME变量,那么就是因为没有在Windows系统变量中的Path里面加上hadoop的环境,如果只是从hdfs上下载文件到本地windows上,就只需要配置HADOOP_HOME这个变量,如果要在本地Windows上运行hadoop,还要将这个变量的bin目录加到Path中。 <注意:配置好环境变量,要重启idea,让其生效>
解决如下:
附:MapReduce实现代码:
一、学会args的用法
编写MapReduce的代码,处理一个hdfs上的一个文本内容,统计hadoop的数量和java的数量
文本内容是:
hadoop,java,hadoop,hadoop
java,java,hadoop
hadoop,hadoop,java
这里只演示在本地windows上运行,因为我们已经配置了winutils的环境,可以运行hadoop,代码中的main方法里有String [ ] args这个数组,可以被用来接收输入输出的路径,但是启动Run,是无法进行一个输入路径的操作,所以我们要找到args输入的入口,好把地址传入进去
1、填写输入和输出的路径
因为本地运行(Run),用args接收变量,是无法直接填写输入/出路径,所以要在运行前,去工作目录填写路径,这样就能指定路径输出了