环境:CentOs6、hadoop-2.0.0-cdh4.0.1、jdk1.7
namenode:master.hadoop(ip:192.168.146.68)
datanode:slave1.hadoop(ip:192.168.146.69)、slave2.hadoop(ip:192.168.146.70)
配置步骤:
(1)配置NameNode和DataNode
在进行Hadoop集群配置中,需要在"/etc/hosts"文件中添加集群中所有机器的IP与主机名,这样Master与所有的Slave机器之间不仅可以通过IP进行通信,而且还可以通过主机名进行通信。所以在所有的机器上的"/etc/hosts"文件末尾中都要添加如下内容:
127.0.0.1 localhost
192.168.146.68 master.hadoop
192.168.146.69 slave1.hadoop
192.168.146.70 slave2.hadoop
(备注:当设置SSH无密码验证后,可以"scp"进行复制,然后把原来的"hosts"文件执行覆盖即可。)
修改每台机器的/etc/sysconfig/network,设定HOSTNAME 主机名
(2)在所有的机器上建立相同的用户
useradd hadoop
passwd hadoop
成功建立hadoop用户后,输入用户密码就是该用户密码.
(3)SSH免密码登录设置
原理:
首先在客户端上创建一对公私钥 (公钥文件:/.ssh/id_rsa.pub; 私钥文件:/.ssh/id_rsa)。然后把公钥放到服务器上(~/.ssh/authorized_keys), 自己保留好私钥.在使用ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了
操作:
vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
使用hadoop用户登录
在所有机器/home/hadoop下
mkdir .ssh
chmod 700 .ssh
cd .ssh
ssh-keygen \-t rsa
这条命是生成其无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/home/hadoop/.ssh"目录下。
ls -l 会看到id_rsa和id_rsa.pub
cat id_rsa.pub>>authorized_keys
将本机器的id_rsa.pub加到authorized_keys中,
并修改authorized_keys权限,
chmod 644 authorized_keys
ssh localhost
这样,ssh 可以免密码登录localhost了。
将master.hadoop机器的id_rsa.pub加到salve1.hadoop的authorized_keys中,
cp id_rsa.pub id_rsa.pub.master
scp id_rsa.pub.master
[email protected]:/home/hadoop/.ssh
在slave1.hadoop机器的hadoop用户下
cat id_rsa.pub.master>>authorized_keys
ssh
[email protected]
ssh就可以免密码登录master.hadoop了。
反之,将salve1.hadoop机器的id_rsa.pub加到master.hadoop的authorized_keys中,
cp id_rsa.pub id_rsa.pub.slave1
scp id_rsa.pub.slave1
[email protected]:/home/hadoop/.ssh
在master.hadoop机器的hadoop用户下
cat id_rsa.pub.slave1>>authorized_keys
ssh
[email protected]
ssh 就可以免密码登录slave1.hadoop了,
其他机器之间的SSH通讯可以同样操作。
(4)在所有机器上安装JDK,设置JAVA_HOME
vi /etc/profile
export JAVA_HOME=/home/hadoop/jdk
export JRE_HOME=/home/hadoop/jdk/jre
export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
source /etc/profile使得配置生效。
(5)在所有机器上安装配置Hadoop
首先在namenode上配置,配置后在分发到datanode上
下载http://archive.cloudera.com/cdh4/cdh/4/hadoop-2.0.0-cdh4.0.1.tar.gz,然后解压到/home/hadoop/下即可
tar -zxvf hadoop-2.0.0-cdh4.0.1.tar.gz
mv hadoop-2.0.0-cdh4.0.1 /home/hadoop/hadoop
cd /home/hadoop/hadoop/etc/hadoop 修改配置文件
修改hadoop-env.sh:
export JAVA_HOME=/home/hadoop/jdk
export HADOOP_HOME=/home/hadoop/hadoop
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
修改core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master.hadoop:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop/tmp</value>
</property>
</configuration>
修改mapred-site.xml:
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master.hadoop:9001</value>
</property>
</configuration>
修改hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
slaves里写入作为datanode节点的机器的IP
192.168.146.69
192.168.146.70
到此,hadoop的有关配置已经完成,namenode端通过如下命令把配置好的hadoop发送到各个datanode处:
scp -r hadoop
[email protected]:/home/hadoop/
scp -r hadoop
[email protected]:/home/hadoop/
(6)关闭所有机器上的防火墙
注意点:关闭所有机器上的防火墙,不然会导致datanode起不来
/etc/init.d/iptables stop
(7)在master.hadoop机器的hadoop用户下启动hadoop
bin/hdfs namenode -format
sbin/./start-all.sh
如果没有其它差错的话,hadoop可以正常启动,在namenode,datanode端用jps命令查看启动情况
namenode:
xxxx NameNode
xxxx SecondaryNameNode
xxxx DataNode
datanode:
xxxx NodeManager
xxxx DataNode
然后可以通过如下地址来查看集群运行状况:http://192.168.146.68:50070/