倒騰了一天,終于在CentOS上裝上了hadoop-0.21.0,特此記錄,以備后用。
操作系統(tǒng):CentOS 5.5
Hadoop:hadoop-0.21.0
JDK:1.6.0_17
namenode主機(jī)名:master,namenode的IP:192.168.90.91
datanode主機(jī)名:slave,datanode的IP:192.168.90.94
第一步:安裝并啟動(dòng)ssh服務(wù)
CentOS 5.5安裝完畢之后以及默認(rèn)啟動(dòng)了sshd服務(wù),可以在“系統(tǒng)”->“管理”->“服務(wù)”中查看sshd服務(wù)是否啟動(dòng)。當(dāng)然了,如果機(jī)器上沒有安裝ssh服務(wù),則執(zhí)行命令sudo yum install ssh來(lái)安裝。安裝rsync,它是一個(gè)遠(yuǎn)程數(shù)據(jù)同步工具,可通過 LAN/WAN 快速同步多臺(tái)主機(jī)間的文件,執(zhí)行命令sudo yum install rsync。修改每個(gè)節(jié)點(diǎn)的/etc/hosts文件,將 namenode和datanode的IP信息加入到該文件的尾部:
192.168.90.91 master
192.168.90.94 slave
第二步,配置SSH服務(wù)
(1),(2)是針對(duì)每一臺(tái)機(jī)器
(1)創(chuàng)建hadoop用戶名與用戶組
運(yùn)行命令su - root,注意,不是命令su root,后者不能攜帶root用戶的參數(shù)信息,是不能執(zhí)行創(chuàng)建用戶組和用戶命令的。執(zhí)行命令:groupadd hadoop和命令useradd -g hadoop hadoop。注意不能在/home目錄下創(chuàng)建hadoop目錄,否則創(chuàng)建hadoop用戶會(huì)失敗。創(chuàng)建好用戶以后最好是重新啟動(dòng)計(jì)算機(jī),以hadoop用戶登錄系統(tǒng)。這樣在之后的操作中就不需要su到hadoop用戶下,而且也不會(huì)糾纏于文件的owner問題。
(2)生成ssh密鑰
如果是其他用戶登錄的則切換到hadoop用戶下,執(zhí)行命令su - hadoop,在/home/hadoop目錄下執(zhí)行命令:ssh-keygen -t rsa(一路回車,選擇默認(rèn)的保存路徑),密鑰生成成功之后,進(jìn)入.ssh目錄,執(zhí)行cd .ssh,執(zhí)行命令:cp id_rsa.pub authorized_keys。這個(gè)時(shí)候運(yùn)行ssh localhost,讓系統(tǒng)記住用戶,之后ssh localhost就不需要再輸入密碼了。
(3)交換公鑰
將namenode上的公鑰拷貝到datanode,在hadoop用戶的用戶目錄下(/home/hadoop)下執(zhí)行命令ssh-copy-id -i $HOME/.ssh/id_rsa.pub hadoop@slave。同理,也可以將datanode上的公鑰拷貝到namenode,但這不是必須的。這樣兩臺(tái)機(jī)器在hadoop用戶下互相ssh就不需要密碼了。
第三步,安裝JDK1.6或以上(每臺(tái)機(jī)器)
(1)執(zhí)行命令yum install jdk
(2)如果第一步?jīng)]有找到源碼包,那么就需要到官網(wǎng)上下載了,https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=jdk-6u22-oth-JPR@CDS-CDS_Developer。
(3)新建目錄/usr/java,將源碼包jdk-6u22-linux-i586.bin復(fù)制到該目錄下,執(zhí)行命令chmod a+x jdk-6u22-linux-i586.bin
使當(dāng)前用戶擁有對(duì)jdk-6u22-linux-i586.bin的執(zhí)行權(quán)限。執(zhí)行命令sudo ./jdk-6u22-linux-i586.bin進(jìn)行安裝
(4)修改/etc/profile來(lái)添加環(huán)境變量,/etc/profile中設(shè)置的環(huán)境變量就像Windows下環(huán)境變量中的系統(tǒng)變量一樣,所有用戶都可以使用。
用文本編輯器打開/etc/profile
# vi /etc/profile
在最后加入以下幾行:
export JAVA_HOME=/usr/java/jdk1.6.0_22
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
這樣我們就設(shè)置好了JDK,在centos下 source /etc/profile 就可以生效了.
運(yùn)行命令java -version可以判斷是否安裝成功
第四步,安裝hadoop
原來(lái)現(xiàn)在才開始安裝hadoop,準(zhǔn)備工作也作得太多了,廢話少說(shuō)。
(1)新建目錄/usr/local/hadoop,將hadoop-0.21.0.tar.gz解壓縮到該目錄下,執(zhí)行命令sudo tar -xvzf hadoop-0.21.0.tar.gz,修改/etc/profile文件,將hadoop的安裝目錄append到文件最后:
export HADOOP_HOME=/usr/local/hadoop/hadoop-0.21.0
export PATH=$HADOOP_HOME/bin:$PATH
(2)配置/conf/hadoop-env.sh文件,修改java_home環(huán)境變量
export JAVA_HOME=/usr/java/jdk1.6.0_22/
export HADOOP_CLASSPATH=.
(3)配置 core-site.xml 文件
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/hadoop-0.21.0/tmp</value>
(注意,請(qǐng)先在 hadoopinstall 目錄下建立 tmp 文件夾)
<description>A base for other temporary directories.</description>
</property>
<!-- file system properties -->
<property>
<name>fs.default.name</name>
<value>hdfs://master:54310</value>
</property>
</configuration>
(4)配置 hdfs-site.xml 文件
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>(這里共兩臺(tái)機(jī)器,如果將主節(jié)點(diǎn)也配置為datanode,則這里可以寫2)
</property>
<configuration>
(5)配置 mapred-site.xml 文件
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:54311</value>
</property>
</configuration>
(6)配置 conf/masters 文件,加入 namenode 的 ip 地址
master
(7)配置 slaves 文件, 加入所有 datanode 的 ip 地址
slave
(如果之前的hdfs-site.xml文件中的拷貝數(shù)設(shè)置為2,則需要將master也加入到slaves文件中)
(8)將 namenode 上 配 置 好 的 hadoop 所 在 文 件 夾 hadoop-0.21.0 復(fù) 制 到
datanode 的/usr/lcoal/hadoop/目錄下(實(shí)際上 masters,slavers 文件時(shí)不必要的, 復(fù)制了也
沒問題)。
(9)配置datanode的/etc/profile 文件,在文件尾append下列內(nèi)容:
export HADOOP_HOME=/usr/local/hadoop/hadoop-0.21.0
export PATH=$HADOOP_HOME/bin:$PATH
第五步,啟動(dòng)hadoop
首先記得關(guān)閉系統(tǒng)的防火墻,root用戶下執(zhí)行命令/etc/init.d/iptables stop,運(yùn)行命令/etc/init.d/iptables status檢查防火墻狀態(tài)。hadoop用戶下,在namenode的/usr/local/hadoop/hadoop-0.21.0/bin目錄下打開終端,執(zhí)行命令hadoop namenode -format,格式化目錄節(jié)點(diǎn)。注意,/usr/local/hadoop/hadoop-0.21.0/tmp目錄是可以寫的,否則在格式化時(shí)會(huì)出現(xiàn)異常。執(zhí)行命令start-all.sh啟動(dòng)hadoop集群,執(zhí)行命令jps查看進(jìn)程,執(zhí)行命令hadoop dfsadmin -report查看狀態(tài)。在瀏覽器中輸入http://master:50070以web方式查看集群狀態(tài)。查看jobtraker的運(yùn)行狀態(tài):http://www.ibm.com/developerworks/cn/linux/l-hadoop-2/index.html
PS:格式化namenode的時(shí)候最好將節(jié)點(diǎn)的tmp目錄清空、刪除logs目錄中的文件。
到這里,基于CentOS5.5的hadoop集群搭建完畢!
參考資料:http://www.ibm.com/developerworks/cn/linux/l-hadoop-2/index.html