2013年4月14日 星期日
Hadoop集羣的安裝
一 安裝計劃
虛擬機:VMware9.0
操作系統:CentOS5.8
Hadoop:Hadoop1.0.4
網段爲:192.168.201.1
三個節點分別爲:
Master:192.168.201.11
Slave1: 192.168.201.12
Slave2:192.168.201.13
Java:jdk7u
工具:SecureCRT
二 虛擬機的安裝及配置
2.1 虛擬機的安裝就不詳述了
三 CentOS的安裝及配置
3.1 安裝也不詳述
3.2 配置
3.2.1 首先將虛擬機的網卡設置爲host-only,
物理機器的虛擬網卡VMnet1的IP設置爲192.168.201.1,以後建立的虛擬集羣都在這個網段
3.2.2 啓動系統,進入root用戶
3.2.3 CentOS剛安裝完畢,要進行初始化設置,使得一些基本命令可以直接使用,不用再輸入絕對路徑
⑴ 配置/etc/profile文件,
在文件末加入以下語句:
PATH=$PATH:/sbin #在PATH變量後追加/sbin目錄
export PATH=$PATH:/sbin#設置變量爲全局的
⑵ 配置/home/user/.bash_profile文件,
在PATH後面添加/sbin:/usr/sbin:/usr/local/sbin:/usr/kerberos/sbin這幾個路徑。
3.2.4 編輯/etc/sudoers文件,使得普通用戶可以以root權限執行命令,就是命令前可以使用“sudo”
⑴ 添加文件的寫權限。chmod u+w /etc/sudoers
⑵ 編輯/etc/sudoers文件。在"root ALL=(ALL) ALL"下面添加"user ALL=(ALL) ALL"(這裏的user是用戶名),退出
⑶ 註釋掉:Defaults requiretty所在的行。即:#Defaults requiretty
⑷ 撤銷文件的寫權限。chmod u-w /etc/sudoers。
3.2.5 編輯/etc/sysconfig/network-scripts/ifcfg-eth0,設置網卡的爲靜態獲取IP,並設置IP地址
注:這個我在安裝CentOS時已經配置爲靜態IP,如果同學安裝的時候沒有配置爲靜態的,可以配置此
文件配置,具體不在詳述
3.2.6 編輯/etc/sysconfig/network和/etc/hosts設置機器名
⑴ hostname=master
⑵ 修改爲
127.0.0.1 localhost
192.168.201.11 master
192.168.201.12 slave1
192.168.201.13 slave2
3.2.7 重啓虛擬機
3.2.8 可以看到sudo已經可以使用了,ifconfig也可以直接用了,主機名也已經改了
四 JDK安裝
4.1 SecureCRT的使用
4.1.1 啓動SecureCRT(安裝不詳述)
4.1.2 連接192.168.201.11
4.1.3 打開SecureFX,將JDK複製到虛擬機中
4.2 將壓縮包解壓
4.3 編輯/etc/profile文件,加入以下幾行 --注jdk的具體安裝位置和版本自行修改
export JAVA_HOME=/home/elvis/jdk1.7.0_17
export JRE_HOME=/home/elvis/jdk1.7.0_17/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
4.4 source /etc/profile --使配置生效
4.5 java -version
可以看到java的版本信息,安裝成功
五 虛擬集羣架設流程
5.1 連接到虛擬機master(192.168.201.11)
5.2 查看一下開機自動啓動的服務,關閉其中一些不必要的,可以加快開機速度並減少內存佔用
有很多服務沒必要開啓
chkconfig --list
需要關閉的服務有如下幾個:
echo "123456" | sudo -S 這個前綴可以使得普通用戶不必在使用root權限
的時候再輸入密碼了
echo "123456" | sudo -S chkconfig sendmail off
echo "123456" | sudo -S chkconfig bluetooth off
echo "123456" | sudo -S chkconfig NetworkManager off
echo "123456" | sudo -S chkconfig acpid off
echo "123456" | sudo -S chkconfig apmd off
echo "123456" | sudo -S chkconfig dund off
echo "123456" | sudo -S chkconfig pand off
echo "123456" | sudo -S chkconfig capi off
echo "123456" | sudo -S chkconfig cups off
echo "123456" | sudo -S chkconfig iptables off
echo "123456" | sudo -S chkconfig ip6tables off
echo "123456" | sudo -S chkconfig irda off
echo "123456" | sudo -S chkconfig isdn off
echo "123456" | sudo -S chkconfig kudzu off
echo "123456" | sudo -S chkconfig lm_sensors off
echo "123456" | sudo -S chkconfig mdmonitor off
echo "123456" | sudo -S chkconfig pcscd off
5.3 通過SecureFX將一些必要的軟件copy到虛擬機裏 --這裏主要是hadoop軟件
5.4 關閉虛擬機
5.5 將虛擬機的鏡像文件copy成2個副本,一共3個虛擬機
注意:如果你的本本硬盤空間和物理內存都比較充裕的話可以多建立一些節點
5.6 一個虛擬機副本copy完並啓動之後,vmware會重新給其網卡分配一個mac地址,所以需要修改mac地址,IP也要改
5.6.1 ifconfig 查看本機eth0網卡的IP和mac地址
5.6.2 編輯/etc/sysconfig/network-scripts/ifcfg-eth0,修改mac地址和IP地址
5.7 重啓網卡
sudo service network restart
5.8 編輯/etc/sysconfig/network機器名
5.9 重啓
注:其他節點也類似就不一一詳述
六 hadoop1.0.4部署流程
6.1 啓動集羣master,slave1,slave2
6.2 實現SSH無密碼登陸
6.2.1 實現無密碼本機登錄master
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
直接回車,完成後會在 ~/.ssh/ 生成兩個文件: id_dsa 和 id_dsa.pub 。這兩個是成對出現,類似鑰匙和鎖。
再把 id_dsa.pub 追加到授權 key 裏面 ( 當前並沒有 authorized_key s文件 ) :
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
實驗:ssh localhost hostname
還是要輸入密碼,一般這種情況都是因爲目錄或文件的權限問題,看看系統日誌,確實是權限問題,
.ssh下的authorized_keys權限爲600,其父目錄和祖父目錄應爲755,
查看系統日誌:sudo tail /var/log/secure -n 20
解決方法爲:chmod 755 .
chmod 755 .ssh
chmod 600 .ssh/authorized_keys
在其他機器上同樣操作
6.2.2 實現無密碼登錄其他機器
把 slave1和slave2裏的id_dsa.pub都追加到授權 key 裏面
ssh slave1 cat /home/elvis/.ssh/id_dsa.pub >> .ssh/authorized_keys
將各節點authorized_keys文件合併並覆蓋至每個節點
scp authorized_keys slave1:/home/elvis/.ssh/authorized_keys
做技術就是謹慎,還是在全面檢驗一遍:ssh 192.168.201.12 hostname
(每個節點上都需要驗證)
6.3 修改/usr/local目錄的權限,命令:sudo chmod 777 /usr/local/
將hadoop的tar包copy到/usr/local/下
(master節點)copy到這個目錄下並且解壓
6.4 查看 cat /etc/hosts
192.168.201.11 master
192.168.201.12 slave1
192.168.201.13 slave2
6.5 配置 conf/masters 和 conf/slaves
在hadoop文件目錄裏
conf/masters
192.168.201.11
conf/slaves
192.168.201.12
192.168.201.13
6.6 配置 conf/hadoop-env.sh
加入
export JAVA_HOME=/home/elvis/soft/jdk1.7.0_17
6.7 配置 conf/core-site.xml
加入
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.201.11:9000</value>
</property>
6.8 配置 conf/hdfs-site.xml
加入
<property>
<name>dfs.http.address</name>
<value>192.168.201.11:50070</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
6.9 配置conf/mapred-site.xml
加入
<property>
<name>mapred.job.tracker</name>
<value>192.168.201.11:8012</value>
</property>
6.10 建立相關的目錄
/usr/local/hadoop/ //hadoop數據和namenode目錄
6.11 建立相關的目錄其他的幾個節點也是同樣
6.12 將hadoop文件遠程copy到其他節點(這樣前面的配置就都映射到了其他節點上),
命令爲:scp -r hadoop-x.xx.x 192.168.201.22:/usr/local/
6.13 格式化Active master(192.168.201.11)
命令:bin/hadoop namenode -format
6.14 啓動集羣 ./start-all.sh
6.15 現在集羣啓動起來了,看一下,命令:bin/hadoop dfsadmin -report
2個datanode,打開web看一下
瀏覽器輸入:192.168.201.11:50070
命令:jps
6.16集羣安裝完成!