搭建hadoop集群常见问题
hadoop压缩包移动到/usr/local/目录下失败
这应该是/usr/local
属于管理员,用户没有权限,网上有坑人的办法:
1 | sudo chmod -R 777 /usr/local |
甚至有人:
1 | sudo chmod -R 777 /usr |
这完全是坑人的做法,-R
表示递归执行,即/usr
目录下的所有文件夹、文件都改成了777的权限。那么你以后就再也不能用sudo、su命令了。
最好的做法是创建一个文件夹作为中转站:
1 | sudo mkdir /usr/local/hadoop |
这个新建的hadoop文件夹就是中转站。
然后改变该文件夹的拥有者:
1 | sudo chown hadoop103 /usr/local/hadoop |
即可正常传过来了。
然后再移动位置…
开启集群服务时报权限不足的错
产生这个问题的原因可能是ssh登录自己仍然需要密码。请检查一下:
1 | ssh localhost |
如果需要输入密码,则:
1 | cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys |
即给自己一把公钥。如果您还没有公钥,请:
1 | ssh-keygen -t rsa |
生成公钥,然后在执行上一步给自己公钥。
当然也有可能是自己的公钥没有给某台服务器,自行检查,然后递交
1 | ssh-copy-id 目标IP |
集群中有一个或两个节点的服务没有启动
多半是workers文件有问题,请前去修改。
如果三个都没启动,这是集群启动脚本出现问题了(或者是集群配置)。
也有可能是没有配置$HADOOP_HOME
就使用脚本了,脚本里有这个内容,需要先配置hadoop的环境变量。
启动服务时,Yarn的NodeManager服务没有启动
其他的服务全都正常启动了,唯独Yarn的NodeManager一个没有启动。这种情况可能有两种原因:
- 配置文件写得有问题,稳妥起见请检查所有配置文件(配置的那4个),也有可能是两个节点的服务器的文件内容不一致,请利用分发脚本统一。
- 权限问题,请参看上述第一点,克隆公钥给自己
关闭Yarn有WARNING
1 | hadoop105: WARNING: nodemanager did not stop gracefully after 5 seconds: Trying to kill with kill -9 |
这个是服务器安全高产生的,其实不用管。如果输入:jpsall
看到NodeManager服务已经关闭了,就不用管了,如果没有关闭则单独关闭一次Yarn即可:$HADOOP_HOME/sbin/stop-yarn.sh
没有用的话就开启hdfs在关闭yarn(因为一般是要求是先关闭yarn再关闭hdfs)
访问Web网站相关问题
Hadoop集群正常启动(jpsall
该启动的服务全都启动了),但是还是无法浏览器访问。
例如:无法访问hadoop103:9870。
防火墙
检查虚拟机防火墙是否关闭:
1 | systemctl status firewalld |
正常情况,如果是跟着我走的流程的话应该是连这个防火墙服务都没有的。
如果确实是防火墙没关,则:
1 | systemctl stop firewalld |
其实主机能够 ping 通虚拟机,就说明了虚拟机的防火墙是关闭状态。
hosts映射
您有可能没有编写hosts映射(Windows或Mac中),查看:
如果将hadoop103改为192.168.64.103 。即改为IP,访问:192.168.64.103:9870,成功访问,则就是hosts配置错误。
在主机中输入:vim /etc/hosts
查看是否正确映射。如果是Windows,则在C:\Windows\System32\drivers\etc
下。
如果不正确则修改,或者没有配置则添加。
正确格式为:
1 | IP hadoop10x |
主机检查完了,再挨个检查三台虚拟机是否也正确配置了hosts。
检查hdfs配置文件是否配好
正确内容(注意看value内的内容是否正确,是否和你的hosts映射一样):
1 | <?xml version="1.0" encoding="UTF-8"?> |
不确定的情况
这个我其实也没拿捏到位:
我发现/etc/hosts发现第二行是:127.0.1.1 hadoop103,如图:
然后我ping localhost是ping的127.0.0.1。然后ping hadoop103 ping的是127.0.1.1 。然后我把第二行这个删掉了,再启动集群就可以正常访问了。
我有这个想法是看到一片文章将hadoop103:9870改成0.0.0.0:9870就成功了,根据0.0.0.0的特性,我大概就猜到了配置文件最后启动的hadoop103应该是不我配置的静态IP,而是127.0.0.1 。
我目前是把三台虚拟机的第二行都删除了。
我也不太清楚删除这个第二行会不会有什么影响,因为它是默认就有的内容,我总感觉好像不能轻易删除。如果有友友知道删除会出现什么问题,麻烦提醒下我。如果可以用其他办法解决也提醒下我。