目录
  1. 1. hadoop避坑
hadoop避坑

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
2
3
#管理权限下
yum -y remove java-1.8.0-openjdk*
yum -y remove tzdata-java*

然后再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
2
3
4
5
6
7
8
9
10
11
12
13
14
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
Starting secondary namenodes [iZbp13pwlxqwiu1xxb6szsZ]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
Starting resourcemanager
ERROR: Attempting to operate on yarn resourcemanager as root
ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation.
Starting nodemanagers
ERROR: Attempting to operate on yarn nodemanager as root
ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting operation.

我的是在start.dfs.sh,stop.dfs.sh这个两个文件里加入

1
2
3
4
5
6
#注意是在文件的最开始那里
#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

start.yarn.sh,stop.yarn.sh里加入

1
2
3
4
#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

当然这个也许会有一点不一样,要是这样设置之后还是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文件,看一下配置。然后再重新启动。

文章作者: Dr-xinyu
文章链接: https://dr-xinyu.github.io/2020/11/06/hadoop%E9%81%BF%E5%9D%91/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 心雨
打赏
  • 微信
  • 支付寶