1、由于CDH3默认没法用root启动,会报错“May not run daemons as root. Please specify HADOOP_NAMENODE_USER “,所以需要创建新用户。
2、Hadoop要求所有机器上hadoop的部署目录结构要相同,并且都有一个相同的用户名的帐户,所以需要每台机器建一个同名的用户。
3、新建系统hadoop用户。
4、每台机器的用户名和密码都为hadoop。
5、命令:#adduser hadoop;#passwd hadoop,回车输入hadoop。
6、三台机器都拷贝一份hadoop-0.20.2-CDH3B4.tar.gz到hadoop用户下。
7、解压hadoop-0.20.2-CDH3B4.tar.gz。 tar –zxvf hadoop-0.20.2-CDH3B4.tar.gz –C /home/hadoop/cdh3。
8、在master上用户hadoop配置无密码登录本机和每个slave。
9、首先用hadoop用户登录每台机器(包括namenode),在/home/hadoop/目录下建立.ssh目录。
10、将目录.ssh权限设为:drwxr-xr-x,设置命令: chmod 755 .ssh。
11、用hadoop用户登录每台机器,修改/home/hadoop/.ssh/authorized_keys文件的权限为:-rw-r–r–,设置命令:$ cd /home/hadoop/.ssh,$ chmod 644 authorized_keys。
12、ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa,直接回车,完成后会在~/.ssh/生成两个文件:id_dsa 和id_dsa.pub。这两个是成对出现,类似钥匙和锁。
13、$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys。
14、拷贝id_dsa.pub到其他的每个slave上,追加在authorized_keys文件中。
15、设置完成后,测试一下namenode到各个datanode节点的ssh链接,包括到本机,如果不需要输入密码就可以ssh登录,说明设置成功了。
16、启动hadoop,start-all.sh。
17、若datanode没启动,看logs,报错:
java.net.NoRouteToHostException: No route to host
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567)
at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:408)
at org.apache.hadoop.hdfs.server.datanode.DataXceiver.writeBlock(DataXceiver.java:338)
at org.apache.hadoop.hdfs.server.datanode.DataXceiver.run(DataXceiver.java:122)是防火墙的原因,运行如下命令:
临时关闭防火墙服务,重启后失效:
su -
#/etc/init.d/iptables stop
永久性关闭防火墙:
在根用户下输入setup,进入图形界面,选择Firewall configuration,进入下一界面,选择Security Level为Disabled,保存。重启机器即可。
18、接下来的步骤可以参考http://www.linuxidc.com/Linux/2011-04/35162.htm。