以三個系統作集羣爲例,準備三個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!