RHEL6.1,jdk-6u30-linux-i586-rpm.bin, eclipse-jee-indigo-SR1-linux-gtk.tar.gz, Hadoop-0.20.203.0rc1.tar.gz
用户: FDC1(192.168.1.108) 对应 NameNode、SecondNameNode、JobTracker
FDC2(192.168.1.109) 对应 DataNode、TaskTrack
2. 安装JDK与Eclipse
3. 安装SSH
配置Hadoop集群时需要明确指定那个节点作为Master Node(NameNode and JobTracker),那些节点作为DataNode(DataNode and TaskTracker), 而且MasterNode可以远程访问集群中的每一个节点。 Hadoop 采用SSH来解决这个问题,SSH采用标准的公钥加密技术来创建一对密钥来进行用户验证,一个是公钥,一个是私钥。公钥存储于集群中所有节点上,当MasterNode访问一台远程的机器时,发送一个私钥;远程机器将根据公钥和私钥来验证用户的访问权限。
(1) 定义一个公共的账户
针对Hadoop集群, 对集群中所有的节点应该使用相同的用户名(例如: FDC);若为了进一步加强安全,推荐使 用user-level的账户,这个账户只用于管理Hadoop集群。
(2) 验证已经安装的SSH
$ which ssh
$ which sshd
$ which ssh-keygen
如果执行上述命令获取到下面的提示信息:
/usr/bin/which: no ssh in (/usr/bin:/bin:/usr/sbin...
则需要自己动手安装SSH,可安装OpenSSH().
(3) 生成SSH 键值对
A. 生成密钥: $ ssh-keygen -t rsa 或 ssh-genkey -t rsa -P " -f~/.ssh/id_rsa
B. 查看生成的公钥:$ more /home/FDC/.ssh/id_rsa.pub
如果MasterNode和DataNode在同一台机器上时(Local Mode):
C. 加入受信列表: $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
如果MasterNode和DataNode不在同一台机器上时(Distributed Mode), 详细参考:
C.1.将公钥拷贝至每个Slave Node:
$ scp ~/.ssh/id_rsa.pub FDC2@192.168.1.109:~/master_key
如果拷贝到其它目录下,可能会出现permission denied错误,如拷贝到home下,这是因为其它用户没有写权限。
C.2. 在每个TargetNode上将Master Key作为一个Authorized Key,例如进入FDC2账户下:
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ mv ~/master_key ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
C.3 进入/home/FDC2目录执行:$ cat id_rsa.pub >> .ssh/authorized_keys
这样可以在FDC1上不输入密码直接访问FDC2.
说明:
若要实现Datanode无密码访问Namenode,只需按照上面的步骤将Datanode的*.pub文件复制到Namenode上, 并追加到authorized_keys中
(4) 验证SSH
ssh localhost //第一次需输入FDC账目密码
或ssh target