我们用2个节点来安装Hadoop 集群,其中192.168.129.35是主节点,而192.168.129.34是从节点。
在主节点(192.168.129.35)和从节点(192.168.129.34)上都创建一个用户叫hadoop-user
主节点(192.168.129.35)以hadoop-user登录
因为hadoop集群中需要有个主节点(master node)来承担NameNode和JobTracker守护进程,并且承担连接和激活其他从节点(slave node)的DataNode和 TaskTracker守护进程的责任。而它们的通信在Hadoop中是使用无密码的SSH,所以我们必须配置无密码的SSH。
首先验证ssh是否已经安装:
which ssh
which sshd
which ssh-keygen
主节点(192.168.129.35)上产生SSH密码对
ssh-keygen -t rsa
在主节点(192.168.129.35)上查看公钥信息:
cat ~/.ssh/id_rsa.pub
将公钥从主节点(192.168.129.35)复制到每个hadoop节点,因为我们主节点已经有,所以我们把它发布到从节点192.168.129.34上
从主节点(192.168.129.35)运行:
scp ~/.ssh/id_rsa.pub [email protected]:~/master_key
在从节点(192.168.129.34)上将这个公钥文件移动到正确的位置:
mkdir ~/.ssh
chmod 700 ~/.ssh
mv ~/master_key ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
在主节点(192.168.129.35)上验证无密码的ssh是否可以成功和从节点(192.168.129.34)通信
ssh 192.168.129.34
配置Hadoop:
在主节点上配置core-site.xml, mapred-site.xml, hdfs-site.xml
core-site.xml,注意hdfs后面的必须是主节点(192.168.129.35)
mapred-site.xml ,配置了map 和reduce的job的主机和端口号,所以必须是主节点 (192.168.129.35)
hdfs-site.xml,可以设置dfs的replication数量
配置集群中的主节点和从节点:
vi masters
将其改为这个主节点的ip(192.168.129.35)
vi slaves
将其改为从节点的ip列表,因为我们这里只有一个从节点(192.168.129.34),所以我们只有一行。
校验主,从节点配置:
cat masters
cat slaves
配置Hadoop环境:
vi hadoop-env.sh
找到并且编辑JAVA_HOME
更新环境变量
source hadoop-env.sh
把主节点上的所有配置都复制到从节点上:
scp ./hadoop-0.20.2.tar [email protected]:/home/hadoop-user/
scp ./jdk1.6.0_31.tar [email protected]:/home/hadoop-user/
启动主,从节点:
在每个节点上,分别到$HADOOP_HOME/bin中
格式化namenode
./hadoop namenode -format
启动Hadoop
./start-all.sh &
最后用$JAVA_HOME/bin 下的jps命令来检测是否被运行了
$JAVA_HOME/bin/jps