尽管hadoop和一些培训视频课程上讲分布式部署比较详细,但是在部署时仍遇到了一些小问题,在此mark一下:
1.linux的namenode主机上安装了ssh,也启动了ssh,并且执行了:
/etc/init.d/iptables status
显示:
Firewall is stopped.
但是,执行ssh localhost时仍然报“ssh: connect to host localhost port 22: Connection refused”这个错误;
解决方法:
联系系统管理员,确定该主机开的ssh服务端口是多少,hadoop默认是22端口,如果系统安装时ssh服务修改了服务端口,hadoop启动当然会报错;
假如你知道了你主机ssh启动的服务端口是222,则可以在etc/hadoop-env.sh文件中增加环境变量:
export HADOOP_SSH_OPTS="-p 222"
再次启动后,master和slave相互之间就可以ssh通了;
2.已经按照教材或者课程的方法修改了authorized_keys,并且master和slave主机的authorized_keys都已经包含所有各自的authorized_keys中密钥,但是执行start-all.sh后,仍然提示输入密码;
解决方法:
如果确认密钥生成的没问题,而且authorized_keys中都已正确配置了各自的密钥,则可以尝试修改一下master和各个slave下的.ssh和authorized_keys的权限:
chmod 644 authorized_keys
chmod 700 ../.ssh
如果权限不正确则当启动start-all.sh时,仍需要输入密码,修改权限后,就不需要输入密码了;