`

hadoop 分布式安装

阅读更多
环境: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 hadoop@192.168.146.69:/home/hadoop/.ssh
在slave1.hadoop机器的hadoop用户下

cat id_rsa.pub.master>>authorized_keys
ssh hadoop@192.168.146.68
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 hadoop@192.168.146.68:/home/hadoop/.ssh
在master.hadoop机器的hadoop用户下

cat id_rsa.pub.slave1>>authorized_keys
ssh hadoop@192.168.146.69
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 hadoop@slave1.hadoop:/home/hadoop/
scp -r hadoop hadoop@slave2.hadoop:/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/
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics