hadoop避坑
根据老师发的“踩坑”指南,遇到了挺多问题,所以把它们总结一下。
我使用的各个软件的版本:
centos 7
zookeeper 3.4.14
hadoop 3.1.2
1、配置静态ip那里,只是需要把那个子网ip记住就行
然后进入虚拟机,设置自己的ip地址,而不是在这个虚拟网络编辑器上设置。
进入虚拟机后,编辑ifcfg-ens33
IPADDR=上面你的子网ip,最后一位任意填,10啊,100啥的
GATEWAY(网关) = 默认是你的子网ip并最后一位的0变为2
2、防火墙关闭后,在root权限下,可以使用命令firewall-cmd --state
查看防火墙是否关闭
3、java包按照pdf上解压、环境也在profile写入,source /etc/profile 之后,输入java -version
却不是我们的这个java版本时,需要把原本的java删掉。
1 | #管理权限下 |
然后再source /etc/profile
,在查看java版本
4、在克隆出另外两个系统后,需要建立ssh连接,pdf上不是特别明确,这里推荐ssh配置
5、之后是在 /opt/modules/softwars 里面解压两个文件,并且配置变量环境。vim /etc/profile
这里注意第一个export,可能hadoop版本不一样,所以后缀不一样,例如我的hadoop版本是3.1.2,故这句话,我的是export HADOOP_HOME=/opt/modules/softwares/hadoop-3.1.2
。注意编辑完之后,需要source /etc/profile(好像每次vim了profile之后都需要source,不然java环境就没了。仅代表我的环境)之后可以使用命令hadoop version
查看是否配置上
6、修改配置zoo.cfg这一步,我的conf文件里面是没有zoo_sample.cfg 这个文件的,而是直接vim zoo.cfg
7、记得每个系统的myid是不同的,记得修改
8、启动zookeeper时可能遇见显示下面这段了,但其实没有启动。你可以再输入一遍这个命令看是否有线程。如果没有,请检查一下你的java环境,java -version
,并且检查一下java 的环境变量啥的。
9、如果在上面,有线程了,但是之后的status命名输出后报告没running,看一下你的zoo.cfg文件是否正确。一般都是这个出了问题。修改之后,如果还是不行,三个虚拟机都重启,然后再重新source /etc/profile
,再启动zookeeper。也可以看看zookeeper.out 里面的报告,看看什么出错了。
10、配置hadoop时,注意,3版本的hadoop没有salves,而是workers。所以需要vim workers
11、我的hadoop文件里没有 mapred-site.xml.template,直接修改里面的mapred-site.xml 文件
12、在sbin/start.dfs.sh时报错
1 | ERROR: Attempting to operate on hdfs namenode as root |
我的是在start.dfs.sh,stop.dfs.sh这个两个文件里加入
1 | 注意是在文件的最开始那里 |
在start.yarn.sh,stop.yarn.sh里加入
1 | !/usr/bin/env bash |
当然这个也许会有一点不一样,要是这样设置之后还是warning,请参考这个error
13、注意格式化的namenode 后有一个空格,然后才是-format
14、启动程序后,输入jps查看,自己是否缺少某个程序没启动
15、3版本的hadoop的localhost是9870,而不是50070
16、要是8088端口,连接不上,就是resourcemanager没有启动上。建议stop-all.sh
,然后查看自己的start-yarn.sh和stop-yarn.sh文件,看一下配置。然后再重新启动。