以三个系统作集群为例,准备三个Linux系统IP分别为
192.168.0.100 master
192.168.0.101 hadoop1
192.168.0.102 hadoop1html
192.168.0.100作为Name Node, 192.168.0.101和192.168.0.101作为Data Nodejava
1.设置三个系统的hosts文件。
vi /ect/hots #编辑三个系统的hosts文件,内容都同样,以下
192.168.0.100 master
192.168.0.101 hadoop1
192.168.0.102 hadoop1node
2.建立hadoop用户(三个系统都要建立,用户名都是hadoop)
用root用户登录后
[root@mylinux ~]# useradd hadoop
[root@mylinux ~]# passwd hadoop
Changing password for user hadoop.
New UNIX password: #设置密码
Retype new UNIX password: #重复刚设置的密码
passwd: all authentication tokens updated successfully.linux
3.设置SSH
目的是设置主节点和从节点之间不用密码就能够直接ssh访问
#首先确认防火墙关闭,设置防火墙开关在root用户下用命令
setup
#用hadoop用户进入分别进入三个系统(三个系统都要作)
[root@ ~]# su - hadoop #进入hadoop用户目录
[hadoop@ ~]$ ssh-keygen -t rsa #创建ssh目录,一路敲回车到底 apache
#进入master系统
[hadoop@mylinux ~]$ cd .ssh
[hadoop@mylinux .ssh]$ cp id_rsa.pub authorized_keys #复制公钥id_rsa.pub另存为authorized_keys
[hadoop@mylinux ~]$ scp id_rsa.pub hadoop@hadoop1:/home/hadoop/.ssh/authorized_keys
#将从master系统复制的公钥文件authorized_keys传到hadoop1系统上去,第一次作会提示输入密码。
[hadoop@mylinux ~]$ scp -r id_rsa.pub hadoop@hadoop2:/home/hadoop/.ssh/authorized_keys
#将从master系统复制的公钥文件authorized_keys传到hadoop2系统上去。浏览器
#进入hadoop1系统
[root@hadoop1 ~]# su - hadoop
[hadoop@hadoop1 ~]$ cd .ssh
[hadoop@hadoop1 ~]$ scp id_rsa.pub hadoop@master:/home/hadoop/.ssh/authorized_keys_1
#将hadoop1系统的公钥id_rsa.pub传到master系统上去,并更名为authorized_keys_1。bash
#进入hadoop1系统
[root@hadoop2 ~]# su - hadoop
[hadoop@hadoop2 ~]$ cd .ssh
[hadoop@hadoop2 ~]$ scp id_rsa.pub hadoop@master:/home/hadoop/.ssh/authorized_keys_2
#将hadoop1系统的公钥id_rsa.pub传到master系统上去,并更名为authorized_keys_1。oracle
#再进入master系统
[root@mylinux ~]# su - hadoop
[hadoop@mylinux ~]$ cd .ssh
[hadoop@mylinux ~]$ cat authorized_keys_1 >> authorized_keys #将authorized_keys_1公钥内容追加到authorized_keys文件中
[hadoop@mylinux ~]$ cat authorized_keys_2 >> authorized_keys #将authorized_keys_2公钥内容追加到authorized_keys文件中ssh
如今master用ssh链接hadoop1和hadoop2时不用输入密码了
能够试一下
[hadoop@mylinux ~]$ ssh hadoop1
Last login: Sun Jun 19 08:15:09 2011 from master
[hadoop@hadoop1 ~]$ #成功ide
4.下载JDK
下载网址http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u26-download-400750.html
我用的是Linux x86。 能够下载这种JDK来用:jdk-6u26-linux-i586.bin
下载完后将jdk-6u26-linux-i586.bin传到三个系统/home/hadoop目录下面,开始安装JDK(三个系统都要装)
su - hadoop
./jdk-6u26-linux-i586.bin
完成后搞定。
5.安装hadoop0.21
软件压缩包下载地址:http://apache.etoak.com//hadoop/common/hadoop-0.21.0/hadoop-0.21.0.tar.gz
下载完成后,压缩包hadoop-0.21.0.tar.gz传到master系统的/home/hadoop目录下
开始解压:
[root@mylinux ~]# su - hadoop
[root@mylinux ~]# tar zxvf hadoop-0.21.0.tar.gz #解压后获得一个hadoop-0.21.0目录
安装前要配置/home/hadoop/hadoop-0.21.0/conf目录下的几个文件:hadoop-env.sh,core-site.xml,hdfs-site.xml,mapred-site,masters和slaves
#修改hadoop-env.sh
把#export JAVA_HOME=前面的#去掉,在=号后面加上java home目录/home/hadoop/jdk1.6.0_26
以下
export JAVA_HOME=/home/hadoop/jdk1.6.0_26
#修改core-site.xml,修改后的内容以下
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
#修改hdfs-site.xml,修改后的内容以下
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>dfs.replicatioin</name>
<value>1<value>
</property>
</configuration>
#修改mapred-site.xml,修改后的内容以下
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
</configuration>
#修改masters和slaves修改后的内容以下
[hadoop@hadoop1 conf]$ cat masters
master
[hadoop@hadoop1 conf]$ cat slaves
hadoop1
hadoop2
6.配置.bash_profile文件,修改后内容以下(三个系统都要配置)
[hadoop@hadoop1 ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
unset USERNAME
export JAVA_HOME=/home/hadoop/jdk1.6.0_26
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
export HADOOP_HOME=/home/hadoop/hadoop-0.21.0
export PATH=$PATH:$HADOOP_HOME/bin
7.部署到hadoop1和hadoop2系统上
进入master系统,压缩已经配置过的目录hadoop-0.21.0
[hadoop@mylinux ~]$ su - hadoop
[hadoop@mylinux ~]$ tar -zcvf hadoop-0.21.0.tar.gz hadoop-0.21.0 #压缩完成后会获得一个hadoop-0.21.0.tar.gz压缩包
如今要将这个压缩包copy到hadoop1和hadoop2系统里去
[hadoop@mylinux ~]$ scp hadoop-0.21.0.tar.gz hadoop1:/home/hadoop/ #将这个压缩包copy到hadoop1
hadoop-0.21.0.tar.gz 100% 71MB 1.5MB/s 00:47
[hadoop@mylinux ~]$ scp hadoop-0.21.0.tar.gz hadoop2:/home/hadoop/ #将这个压缩包copy到hadoop2
hadoop-0.21.0.tar.gz 100% 71MB 1.8MB/s 00:40
分别进入hadoop1和hadoop2解压传过来的压缩包
#进入hadoop1
[hadoop@hadoop1 ~]$ su - hadoop
[hadoop@hadoop1 ~]$ tar zxvf hadoop-0.21.0.tar.gz
#进入hadoop2
[hadoop@hadoop1 ~]$ su - hadoop
[hadoop@hadoop1 ~]$ tar zxvf hadoop-0.21.0.tar.gz
8.启动hadoop集群
进入master系统
[hadoop@mylinux bin]$ hadoop namenode -format #格式化namenode 必需的
#若是你先进行了hadoop单机配置,在配置集群hadoop时,得将你原来机器上的数据删掉。默认数据存储在/usr/tmp/hadoop-{$user}下。不然启动守护进程时没法启动datanode和tasktracker。
#若是提示没有此命令,请检查.bash_profile中的HADOOP_HOME和PATH设置是否正确,或进入/home/hadoop/hadoop-0.21.0/bin敲start-all.sh
[hadoop@mylinux bin]$ start-all.sh
#这样就能够启动hadoop集群了
9.验证是否正常启动
在浏览器输入:
http://192.168.0.100:50070,页面正常显示,OK!