1.在每台Linux节点上安装好jdk,最好把ant一并装了,装的目录最好一致,然后统一配好java所需要的环境变量,例如:
a) $export JAVA_HOME=/usr/java/jdk1.6.0_16
b) $export ANT_HOME=/usr/ant/ant-1.7.0
c) $export JRE_HOME=/usr/java/jdk1.6.0_16/jre
d) $export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib:$ANT_HOME/lib
e) $export PATH=/usr/java/jdk1.6.0_16/bin:/usr/ant/ant-1.7.0/bin:$PATH
注:最好将这些写到~/.bash_profile里面去
2.配置每个节点上的用户权限,强烈建议使用root用户,因为在运行Hadoop的时候,hadoop会生成tmp文件,并且对这些文件修改,用户必须得具有足够的权限,这一点曾让我欲哭无泪,曾通宵一夜调bug,未果,特引以为戒!!
(a)给用户添加sudo的权限:
$chmod +w /etc/sudoers
$vi /etc/sudoer 添加一行: 用户名 ALL=(ALL) ALL
$chmod –w /etc/sudoers 注:必须得把写权限去掉,因为系统只是别具有只读权限的sudoers文件
(b)干脆直接将用户设为root用户组:
$chmod +w /etc/passwd
$vi /etc/passwd 更改对应用户那一行的信息:
例如:zhangliuhang:x:0:0::/home/zhangliuhang:/bin/bash
$chmod –w /etc/passwd
3.配置每个节点上的网络环境,这是比较重要而且比较费事,首先安装ssh,安装好后,配置ssh,使得各个节点间可以互相访问,不需要手动的密码验证。
(1)生成RSA密钥,公钥:
$ssh-keygen –t rsa –f ~/.ssh/id_rsa
注:(一直按回车键就好)此时在~/.ssh目录下会有密钥id_rsa,和公钥id_rsa.pub
(2)将公有密钥id_rsa.pub追加到其他所有节点的~/.ssh/authorized_keys文件中,以使得本节点访问别的节点时候不需要手动输入密码验证。这有两种处理方法:
(A)在一台机器上的~./ssh/authorized_keys文件中收集好所有节点的公有密钥id_rsa.pub,然后将该文件分发到其他各个节点的相应位置。最后保证authorized_keys文件的读写权限只对所有者有读写权限,否则ssh是不会工作的!
(B) 当集群较小的情况下,推荐使用命令ssh-copy-id -i ~/.ssh/id_rsa.pub user@machine的方法将本节点的公钥传到别的节点上。
配好后可以试试ssh 看能不能不输入密码直接登录上别的节点