三个节点上有创建一个用户hadoop,密码相同以hadoop用户登录系统
useradd hadoop
passwd hadoop
su - hadoop
集群包含三个节点:1个namenode,2个datanode,节点之间局域网连接,可以相互ping通。节点IP地址如下:
Namenode:192.168.0.11
Datanode1:192.168.0.12
Datanode2:192.168.0.13
三台机器均为centos5.5,有相同的用户root(具有管理员权限),在/usr/hadoop/目录下,用于存放hadoop-1.0.4安装文件
在/etc/hosts 上添加主机名和相应IP地址:
192.168.0.11 hadoop.namenode.master
192.168.0.12 hadoop.datanode.slave1
192.168.0.13 hadoop.datanode.slave2
Hadoop需要使用SSH协议,namenode使用SSH无密码登录并启动datanode进程,同样原理,datanode上也能使用SSH无密码登录到namenode(这样也能在datanode上进行启动或关闭hadoop)
1. 安装和启动SSH协议
所有机器安装SSH协议并启动服务,在所有机器上root执行以下命令:
sudo yum install ssh
sudo yum install rsync
##ssh sudo /etc/init.d/ssh restart
(rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间文件)
命令执行完,各台机器之间可以通过密码验证相互登录。
2.配置Namenode无密码登录所有Datanode
(1) 原理
Namenode作为客户端,要实现无密码公钥认证,连接到服务器端datanode上时,需要在namenode上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到dtanode上,档namenode通过SSH连接dtanode时,datanode就会生成一个随机数并用namenode的公钥对随机数进行加密,并发送给namenode。Namenode收到加密数之后再用私钥进行解密,并将解密数回传给datanode,datanode确认解密数无误之后就允许namenode进行连接了。这是公钥认证过程,重要过程是将客户端namenode的公钥复制到datanode上。
(2)Namenode机器上生成密码对
在namenode上执行以下命令(hadoop用户)
[hadoop@test11 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Created directory '/home/hadoop/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hadoop/.ssh/id_rsa.
Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub.
The key fingerprint is:
47:98:bd:31:b1:36:ff:1c:84:ce:b2:b5:26:05:01:bb root@test11
这将在/root/.ssh目录下生成一个私钥id_rsa和一个公钥id_rsa.pub
需要把公钥拷到所有datanode节点的/home/hadoop/authorized_keys这个文件中(包括自己本身,保证ssh登录自己时也不需要密码)。要正确设置authorized_key的权限为644,不然还是不 行,
在namenode节点做如下配置
cd /home/hadoop/.ssh
cp id_rsa.pub authorized_keys
(namenode的公钥)
chmod 644 /home/hadoop/.ssh/authorized_keys
使用SSH协议将namenode的公钥信息authorized_keys复制到所有Datanode的/root/.ssh目录下
scp authorized_keys hadoop@192.168.0.12:/home/hadoop/.ssh
scp authorized_keys hadoop@192.168.0.13:/home/hadoop/.ssh
这样配置后,namedata可以无密码登录所有datanode,可通过命令“ssh节点ip地址”来验证
3.配置datanode无密码登录namenode
同namenode无密码登录所有datanode一样,把datanode的公钥复制到namenode的/root/.ssh目录下,追加到authorized_keys文件
#ssh-keygen -t rsa
【注】整个过程只涉及到创建密钥,复制公钥,添加公钥内容,没有更改配置文件,实际上须知namenode上编辑配置文件vi /etc/ssh/sshd_config开启公钥验证
RSAAuthentication yes
PubkeyAuthentication yes
Java环境变量配置
在SUN公司http://java.sun.com/javase/downloads/index.jsp下载Java SUN JDK(.rpm .bin) 我下载的是jdk-6u37-linux-x64-rpm.bin 64位,所有机器安装jdk:
chmod 755 jdk-6u37-linux-x64-rpm.bin
./jdk-6u37-linux-x64-rpm.bin
Jdk默认安装在/usr/java/jdk1.6.0_37
vi /etc/profile
export JAVA_HOME="/usr/java/jdk1.6.0_37"
export JRE_HOME="/usr/java/jdk1.6.0_37/jre"
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
保存并退出
#source /etc/profile
执行完毕,“java -version”可以判断是否成功
Hadoop集群配置
上传hadoop-1.0.4.tar.gz 至/usr/hadoop
tar -zxvf hadoop-1.0.4.tar.gz
然后在hadoop下创建tmp文件夹,并把hadoop的安装路径添加到/etc/profile中:
export HADOOP_HOME=/usr/hadoop/hadoop-1.0.4
export PATH=$HADOOP_HOME/bin:$PATH
保存并退出
#source /etc/profile
编辑hadoop配置文件
/usr/hadoop/hadoop-1.0.4/conf下
#vi /usr/hadoop/hadoop-1.0.4/conf/hadoop-env.sh
末位加入
export JAVA_HOME=/usr/java/jdk1.6.0_37/
三个配置文件:core-site.xml hdfs-site.xml mapred-site.xml
配置core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/tmp</value>
<description></description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.0.11:9000</value>
</property>
</configuration>
fs.default.name是NameNode的URI。hdfs://主机名:端口/
配置hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
Replication是数据副本数量,默认3,datanode少于3台就会报错
配置mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>http://192.168.0.11:9001</value>
</property>
</configuration>
配置masters文件,加上namenode的IP地址
192.168.0.11
配置slaves文件,加上datanode的IP地址
192.168.0.12
192.168.0.13
将namenode上配置好的hadoop文件夹复制到datanode的/usr/hadoop/目录下。记得在datanode上修改/etc/profile文件
export HADOOP_HOME=/usr/hadoop/hadoop-1.0.4
export PATH=$HADOOP_HOME/bin:$PATH
保存并退出
#source /etc/profile
退出hadoop用户,切换root
chown -R hadoop:hadoop /usr/hadoop
给hadoop文件夹赋权
启动Hadoop集群
su - hadoop
在namenode格式化hadoop
cd /usr/hadoop/hadoop-1.0.4/bin
hadoop namenode -format
start-all.sh
每次修改xml配置文件都要格式化
启动hadoop成功后,在namenode中的tmp文件夹中生成了dfs文件夹,在datanode中的tmp文件夹中生成了dfs和mapred文件。
在namenode上用java自带的工具jps查看进程:
#/usr/java/jdk1.6.0_37/bin/jps
在namenode上查看集群状态:
hadoop dfsadmin -report
如遇权限问题可重新 chown -R hadoop:hadoop /usr/hadoop
stop-all.sh
停止所有hadoop服务
【注】datanode tmp数据路径权限必须为755,
chmod -R 755 /usr/hadoop/tmp
文章来源:http://www.difeye.com