1.本地运行wordcount时,出现java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.错误
2.原因是本地hadoop安装目录中缺少winutils文件及本地lib文件,普通安装hadoop目录中的bin和lib->native目录如下:
3.这时候,需要下载如下的bin和lib文件夹,替换掉安装目录中的问价,替换后的目录如下:
4.文件的下载地址:
http://download.csdn.net/detail/wzcwmhp/9688665
5.覆盖完后,需要配置HADOOP_HOME,path系统环境变量。
6.运行程序:
出现以下错误:Exception in thread “main” java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
7.解决办法:
找到报错的这句话,点击进去:
其实是文件访问权限问题,只需将return true就可以了,但是这是二进制class文件,不能修改,需要下载hadoop_src源代码文件:
源代码下载地址如下:
http://download.csdn.net/detail/wzcwmhp/9688682
找到hadoop-2.4.1-src\hadoop-common-project\hadoop-common\src\main\java\org\apache\hadoop\io\nativeio文件夹下,将nativeio.java文件打开,修改代码改为return true.
8.将该文件拷贝到项目中,建立一个和系统一样的包下:
9.导入后,有可能会报错,我的已经修改了,所以没报错,报错的话只需将jre_system包删除,从新导入即可
10.这时候,在运行程序
Caused by: java.lang.OutOfMemoryError: Java heap space
at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.init(MapTask.java:963)
at org.apache.hadoop.mapred.MapTask.createSortingCollector(MapTask.java:391)错误,
11.这是默认的虚拟机运行内存不够,这时候需要设定运行参数
-Xmx1000M
12.这时候,提示目录已经存在,这是因为上一次运行的结果,生成了输出目录,只需将输出目录删除
删除output目录
13.重新运行程序,运行成功