Ubuntu 12.04 搭建 hadoop 集群版環(huán)境
今天終于在亞運(yùn)和二哥的教導(dǎo)下終于把hadoop集群的環(huán)境搭建好了,搭建的流程和單機(jī)版基本差不多,但是搭建過程中也遇到了許多的困難,例如:ssh授權(quán)這塊,搭建過程中,出現(xiàn)的問題很多,導(dǎo)致我耽誤了好長(zhǎng)的時(shí)間!現(xiàn)在我把我的搭建過程梳理一下,如果有什么問題,請(qǐng)多多指教!
一. 搭建環(huán)境前的準(zhǔn)備:
我的本機(jī)Ubuntu 12.04 32bit作為maser,就是上篇hadoop單機(jī)版環(huán)境搭建時(shí)用的那臺(tái)機(jī)子,
還在KVM中虛擬了4臺(tái)機(jī)子,分別起名為:
son-1 (ubuntu 12.04 32bit),
son-2 (ubuntu 12.04 32bit),
son-3 (centOS 6.2 32bit),
son-4 (redhat 6.0 32bit).
kvm的搭建詳見:http://www.db89.org/post/2012-05-25/kvmxuniji
kvm的橋接設(shè)置詳見:http://www.db89.org/post/2012-05-27/kvmnetset
Ubuntu12.04搭建hadoop單機(jī)版環(huán)境詳見:http://www.db89.org/post/2012-06-03/hadoopdanjihuanjing
下來(lái)修改本機(jī)的host文件,
| sudo gedit /etc/hosts | 
在后面添加內(nèi)容為:
| 192.168.200.150 master 192.168.200.151 son-1 192.168.200.152 son-2 192.168.200.153 son-3 192.168.200.154 son-4  | 
        
現(xiàn)在開始我們的打建之旅吧。
二 . 為本機(jī)(master)和子節(jié)點(diǎn)(son..)分別創(chuàng)建hadoop用戶和用戶組,其實(shí)ubuntu和centos下創(chuàng)建用戶還多少還是有點(diǎn)區(qū)別的。
ubuntu下創(chuàng)建:
先創(chuàng)建hadoop用戶組:
| sudo addgroup hadoop | 
然后創(chuàng)建hadoop用戶:
| sudo adduser -ingroup hadoop hadoop | 
centos 和 redhat 下創(chuàng)建:
| sudo adduser hadoop | 
注:在centos 和 redhat下直接創(chuàng)建用戶就行,會(huì)自動(dòng)生成相關(guān)的用戶組和相關(guān)文件,而ubuntu下直接創(chuàng)建用戶,創(chuàng)建的用戶沒有家目錄。
給hadoop用戶添加權(quán)限,打開/etc/sudoers文件;
| sudo gedit /etc/sudoers | 
按回車鍵后就會(huì)打開/etc/sudoers文件了,給hadoop用戶賦予root用戶同樣的權(quán)限。
在root ALL=(ALL:ALL) ALL下添加hadoop ALL=(ALL:ALL) ALL,
| hadoop ALL=(ALL:ALL) ALL | 
三. 為本機(jī)(master)和子節(jié)點(diǎn)(son..)安裝JDK環(huán)境。
ubuntu下一條命令即可:
| sudo apt-get install openjdk-6-jre | 
centos和redhat建議下載源碼安裝。
詳見:http://www.db89.org/post/2012-07-02/centosjava
四. 修改 本機(jī)(master)和子節(jié)點(diǎn)(son..)機(jī)器名
打開/etc/hostname文件;
| sudo gedit /etc/hostname | 
分別修改為:master son-1 son-2 son-3 son-4。這樣有利于管理和記憶!
五. 本機(jī)(master)和子節(jié)點(diǎn)(son..)安裝ssh服務(wù)
主要為ubuntu安裝,cents和redhat系統(tǒng)自帶。
ubuntu下:
| sudo apt-get install ssh openssh-server | 
這時(shí)假設(shè)您已經(jīng)安裝好了ssh,您就可以進(jìn)行第六步了哦~
六. 先為建立ssh無(wú)密碼登錄環(huán)境
做這一步之前首先建議所有的機(jī)子全部轉(zhuǎn)換為hadoop用戶,以防出現(xiàn)權(quán)限問題的干擾。
切換的命令為:
| su - hadoop | 
ssh生成密鑰有rsa和dsa兩種生成方式,默認(rèn)情況下采用rsa方式。
1. 創(chuàng)建ssh-key,,這里我們采用rsa方式;
| ssh-keygen -t rsa -P "" | 
(注:回車后會(huì)在~/.ssh/下生成兩個(gè)文件:id_rsa和id_rsa.pub這兩個(gè)文件是成對(duì)出現(xiàn)的)
2. 進(jìn)入~/.ssh/目錄下,將id_rsa.pub追加到authorized_keys授權(quán)文件中,開始是沒有authorized_keys文件的;
| cd ~/.ssh cat id_rsa.pub >> authorized_keys  | 
        
七. 為本機(jī)mater安裝hadoop
我們采用的hadoop版本是:hadoop-0.20.203(http://www.apache.org/dyn/closer.cgi/hadoop/common/ ),因?yàn)樵摪姹颈容^穩(wěn)定。
1. 假設(shè)hadoop-0.20.203.tar.gz在桌面,將它復(fù)制到安裝目錄 /usr/local/下;
| sudo cp hadoop-0.20.203.0rc1.tar.gz /usr/local/ | 
2. 解壓hadoop-0.20.203.tar.gz;
|  cd /usr/local sudo tar -zxf hadoop-0.20.203.0rc1.tar.gz  | 
        
3. 將解壓出的文件夾改名為hadoop;
| sudo mv hadoop-0.20.203.0 hadoop | 
4. 將該hadoop文件夾的屬主用戶設(shè)為hadoop,
| sudo chown -R hadoop:hadoop hadoop | 
5. 打開hadoop/conf/hadoop-env.sh文件;
| sudo gedit hadoop/conf/hadoop-env.sh | 
6. 配置conf/hadoop-env.sh(找到#export JAVA_HOME=...,去掉#,然后加上本機(jī)jdk的路徑);
| export JAVA_HOME=/usr/lib/jvm/java-6-openjdk | 
7. 打開conf/core-site.xml文件;
| sudo gedit hadoop/conf/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>
 
8. 打開conf/mapred-site.xml文件;
| sudo gedit hadoop/conf/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>
 
9. 打開conf/hdfs-site.xml文件;
| sudo gedit hadoop/conf/hdfs-site.xml | 
編輯如下:
- <configuration>
 - <property>
 - <name>dfs.name.dir</name>
 - <value>/usr/local/hadoop/datalog1,/usr/local/hadoop/datalog2</value>
 - </property>
 - <property>
 - <name>dfs.data.dir</name>
 - <value>/usr/local/hadoop/data1,/usr/local/hadoop/data2</value>
 - </property>
 - <property>
 - <name>dfs.replication</name>
 - <value>2</value>
 - </property>
 - </configuration>
 
10. 打開conf/masters文件,添加作為secondarynamenode的主機(jī)名,這里需填寫 master 就Ok了。
| sudo gedit hadoop/conf/masters | 
11. 打開conf/slaves文件,添加作為slave的主機(jī)名,一行一個(gè)。
| sudo gedit hadoop/conf/slaves | 
這里填成下列的內(nèi)容 :
- son-1
 - son-2
 - son-3
 - son-4
 
八. 要將master機(jī)器上的文件一一復(fù)制到datanode機(jī)器上(son-1,son-2,son-3,son-4都要復(fù)制):(這里以son-1為例子)
1. 公鑰的復(fù)制
| scp ~/.ssh/id_rsa.pub hadoop@son-1:~/.ssh/ | 
2. hosts文件的復(fù)制
| scp /etc/hosts hadoop@son-1:/etc/hosts | 
注:這里如果不能復(fù)制,就先將文件復(fù)制到/home/hadoop下面,即為:
| /home/hadoophadoop@son-1: scp /etc/hosts | 
再在datanode機(jī)器上將其移到相同的路徑下面/etc/hosts .
3. hadoop文件夾的復(fù)制,其中的配置也就一起復(fù)制過來(lái)了!
| scp -r /usr/local/hadoop hadoop@son-1:/usr/local | 
如果不能移動(dòng)的話和上面的方法一樣!
并且要將所有節(jié)點(diǎn)的hadoop的目錄的權(quán)限進(jìn)行如下的修改:
| sudo chown -R hadoop:hadoop hadoop | 
這些東西都復(fù)制完了之后,datanode機(jī)器還要將復(fù)制過來(lái)的公鑰追加到收信任列表:
在每個(gè)子節(jié)點(diǎn)的自己種都要操作。
| cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys | 
還有很重要的一點(diǎn),子節(jié)點(diǎn)datanode機(jī)器要把復(fù)制過來(lái)的hadoop里面的data1,data2和logs刪除掉!
還有要修改centos節(jié)點(diǎn)(son-3)和redhat節(jié)點(diǎn)(son-4)的java的環(huán)境變量地址,
配置centos節(jié)點(diǎn)(son-3)和redhat節(jié)點(diǎn)(son-4)的/usr/local/hadoop/conf/hadoop-env.sh(找到#export JAVA_HOME=...,去掉#,然后加上本機(jī)jdk的路徑);這個(gè)環(huán)境不一,自己配置一下。
這樣環(huán)境已經(jīng)基本搭建好了,現(xiàn)在開始測(cè)試一下。
九. 這樣之后基本上就差不多了,首先進(jìn)入master的hadoop目錄。
| cd /usr/local/hadoop | 
首先可以做一下負(fù)載平衡,我擔(dān)心這個(gè)加上會(huì)有點(diǎn)亂,但是沒有這部分不影響運(yùn)行,想了解的給我留言!
啟動(dòng)datanode和tasktracker:
- bin/start-dfs.sh
 - bin/hadoop-daemon.sh start datanode
 - bin/hadoop-daemon.sh start tasktracker
 
啟動(dòng)全部服務(wù)直接一條命令:
| bin/start-all.sh | 
查看自己的datanode是否啟動(dòng).
| jps | 
當(dāng)jps不能正常使用的時(shí)候:
| resource /etc/profile | 
連接時(shí)可以在namenode上查看連接情況:
| bin/hadoop dfsadmin -report | 
詳見下圖:
也可以直接進(jìn)入網(wǎng)址:
| master:50070 | 
詳見下圖:
圖1:
圖2:
因?yàn)閞eadhat的java環(huán)境還有點(diǎn)問題所以沒有啟動(dòng)起來(lái),其它的正常。
切記,上面的大多數(shù)操作請(qǐng)使用hadoop用戶,要不然中間會(huì)出許多關(guān)于權(quán)限的問題。
到此整個(gè)環(huán)境的搭建工作就完成了,如果有什么問題,請(qǐng)給我留言,咱們可以互相交流!同時(shí)謝謝在我搭建環(huán)境中幫助過我的人!


















 
 
 




 
 
 
 