教程:https://blog.csdn.net/china1987427/article/details/82057250
此教程中趟过的问题:
1 版本:hadoop用的是3.0.3版本,winutils用的是3.0.0版本,截止目前hadoop虽然有更高版本,但winutils只有3.0.0版本,所以放弃高版本吧。winutils干吗用?hadoop是linux环境上运行的,要在winutils上运行,这不就要辅助工具了么!
2 set JAVA_HOME=%JAVA_HOME% 替换成 set JAVA_HOME="D:\Program Files"\Java\jdk1.8.0_25,中间是有冒号的!
3 你以为这样按照教程就好了么?然而!启用报错啦!
第一个错:异常java.io.IOException: Incompatible clusterIDs in...
这个问题在于第一次部署操作不熟练,清空新建的datanode和namenode下的东西,保证data下面只有新建的两个文件夹,然后再执行: hdfs namenode -format
第二个错:java.lang.NoClassDefFoundError:/org/apache/hadoop/yarn/server/timelineCollectorManager
原因是缺少jar包:下载hadoop-yarn-server-timelineservice-3.0.3.jar包,放到D:\download\softwire\hadoop\hadoop-3.0.3\share\hadoop\yarn\lib安装包的share/hadoop/yarn/lib下面
pom.xml配置:
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-yarn-server-timelineservice</artifactId>
<version>3.0.3</version>
</dependency>
找到仓库把包拿出来放过去就好了~
4 昨天安装成功,心情倍儿棒,今儿一早起来,嘿,又起不来啦!是的,它又给我报错了!报错信息是: Windows 找不到文件 'Hadoop'。请确定文件名是否正确后,再试一次。
参考文档:https://www.cnblogs.com/zlslch/p/8580446.html
原因是jdk的安装目录,原本是安装在D:\Program Files\Java..下面,所以写着 "D:\Program Files"\Java,这样是不行滴。重新安装jdk,放在C盘下面C:\Program Files\Java..,然后改下hadoop-env.cmd这个就可以了。
5 很好,hadoop完美启动,程序可以跑了吧?网上找的WordCount能执行了吧?
然鹅!现实很骨干,错误无处不在,又报错:
Exception in thread "main" java.io.IOException: Failed to set permissions of path: \tmp\hadoop-Administrator\mapred\staging\Administrator-519341271\.staging to 0700
惊不惊喜?意不意外?好嘛,你就可劲儿折腾吧你,我,我……我都原谅你。
解决的参考文档:https://blog.csdn.net/yaoxiaochuang/article/details/49519841
这个问题,需要把hadoop-core-1.2.1.jar这个包里的FileUtil.java文件的一个方法注释掉,悲剧的是小姐姐稍微有点手残,各种打包不好,按照教程下来还是报错。
IOUtils.closeStream(contents);
这句话报错兼容,折腾死我了,最后找了个人家修改好的包,然后把里面的文件拿出来替换!是不是很机智!鼓掌!
最后贴几个安装链接:
hadoop版本下载:http://mirrors.hust.edu.cn/apache/hadoop/common/
winutils3.0.0版本下载:http://7dx.pc6.com/wwb5/winutilsmaster.zip
hadoop-core-1.1.2.jar,这个里面的FileUtil已经修改好了的:https://download.csdn.net/download/mr_wangcx/10693627