Hadoop學習筆記(3)——分布式環境搭建


Hadoop學習筆記(3)

——分布式環境搭建

前面,我們已經在單機上把Hadoop運行起來了,但我們知道Hadoop支持分布式的,而它的優點就是在分布上突出的,所以我們得搭個環境模擬一下。

在這里,我們采用這樣的策略來模擬環境,我們使用3台ubuntu機器,1台為作主機(master),另外2台作為從機(slaver)。同時,這台主機,我們就用第一章中搭建好的環境來。

我們采用與第一章中相似的步驟來操作:

  1. 運行環境搭建

在前面,我們知道,運行hadoop是在linux上運行的。所以我們單機就在ubuntu上運行着。所以同樣,2台從機,同樣采用linux系統。為了節省資源,本人試驗時用了2台centOS系統,而且是采用命令行的方式,沒有用圖形方式。

系統中軟件准備,第一章中我們准備了subversion ssh ant 和jdk。那在這里,從機上我們不要這么多了,我們不用再下載、編譯代碼了,從主機上復制就行。所以在從機上只需要安裝ssh 和jdk這兩個:

先用 sudo apt-get install ssh這個命令,把SSH安裝起來。

        注:在centOS中,使用yum install ssh。

java環境,可以在網上下載一個JDK安裝包,如:jdk-6u24-linux-i586.bin

安裝直接在目錄下運行./jdk-6u24-linux-i586.bin即可。

然后配置jdk目錄:

先進入安裝目錄 cd jdk-6u24-…

然后輸入 PWD 就可以看到java安裝目錄,復制下來:

命令行執行:sudo gedit /etc/profile

在打開的文件里,追加:

export JAVA_HOME=/home/administrator/hadoop/jdk1.6.0_27 //這里要寫安裝目錄

export PATH=${JAVA_HOME}/bin:$PATH

執行source /etc/profile 立即生效

 

  1. 網絡配置

要想運行分布式環境,那這3台計算機(虛擬機)肯定是要聯網才行。同時,三台之前也要暢通無阻。

如果直接采用虛擬機,就比較方便了,默在虛擬機中都使用NAT聯網方式即可:

分別進入三個系統,用ifconfig命令,可以查到當前分配過來的IP地址:

如上圖中可以看到是10.0.0.11。

如果發現沒有eth0,也就是說網卡還沒啟用或分配好地址,則可以手動分配:

ifconfig eth0 10.0.0.12 netmask 255.255.255.0 //設置eht0 的IP地址

route add default gw 10.0.0.2                 //設置網關

在VMware中,怎么看到網關呢,可以在菜單 編輯->虛擬網絡編輯器 中看到:

網關一定要配置對,否則光IP地址后,機器之前互想ping不通的。

在配置好IP后,可以嘗試ping一下網關和其他機器,看是否能通。

在這里,我們3台機IP為:

主機 master : 10.0.0.10

從機1 salter1 :10.0.0.11

從機2 salter2 :10.0.0.12

 

 

有了3台機器的IP地址,我們想,后面在配置中肯定會用到,但為了方便以后IP地址的變動,所以我們還是用另名吧。在window中,我們知道在C:\Windows\System32\driver\etc下,有個host文件,修改后,就可以將IP換成別名了。

在linux中,同樣有這個文件,在/etc/hosts中。所以編輯一下: $vi /etc/hosts:

    文件保存后,就可以試一下ping master ping node1來代替IP地址了。

這個操作需要在三個機器上都操作一下。

 

現在網絡了,為了后面操作,在所有部署運行hadoop的機器上,都必須使用相同的帳號。所以需要在2台從機上創建一個與主機一樣的帳號、密碼:

比如都用zjf帳號: $user add zjf 設置密碼: $passwd zjf 進入該帳號: $su zjf

有可能機器上會有防火牆,影響后面的遠程,所以可以先關一下:

$ service iptables stop

 

  1. 配置SSH

第1章中我們了解了SSH的功能,在這里就可真正派用處了。

我們在master機中,用ssh試一下連接node1:

可以看到,需要輸入密碼才能夠進入。遠程啟動所有從機時,一個個輸入密碼,也不是個好事,得配置下:

  1. 在從機node1中先實現自己登陸自己時不要輸入密碼。

    這個在第1章中已經描述。這里就不多述了。結果就是:

  2. 讓主結點(master)能通過SSH免密碼登錄兩個子結點(slave)

    為了實現這個功能,兩個slave結點的公鑰文件中必須要包含主結點的公鑰信息,這樣當master就可以順利安全地訪問這兩個slave結點了。操作過程如下:

    $cd ~/.ssh

    $scp zjf@master:~/.ssh/id_dsa.pub ./master_dsa.pub

    $cat master_dsa.pub >> authorized_keys

 

好了,配置完后,回到master機器中,再來試一下ssh node1:

OK,成功進入,沒有要輸入密碼。

同樣,把node2也安這個方式操作一下。

 

  1. 配置hadoop

在第一章配置基礎上,我們需要增加兩項配置:

在conf文件夾下,找到masters文件,編輯,在里面輸入master后保存:

在同文件夾下,找到slaves,編輯,在里面輸入node1 node2后保存:

 

打開conf下core-site.xml:

里面的localhost換成master。

 

打開conf下的marped-site.xml:

同樣,也是里面的localhost換成master。

 

  1. 復制hadoop包

前面,在一台機器上部署時,我們的hadoop包是通過SVN下載了源碼,然后再用ant編譯出來的,但在這里,從機上就不用這么麻煩了,我們可以從主機上復制過去。如何復制呢? 遠程登陸我們用SSH,遠程復制就用SCP。在復制前要注意,我們在主機中hadoop存放在什么位置,在從機中也要存放在該位置才行。

比如,在主機中,我們存放於test下,所以在2台node上,都創建一下test文件夾。

然后在主機上執行:scp -r hadoop-0.20.2/ node1:~/test 然后會看到刷屏,表示在復制了。

同樣執行: scp -r hadoop-0.20.2/ node2:~/test

 

好了,現在兩台從機上也都有了hadoop包了。

 

  1. 運行

在主機上,進入hadoop-0.20.2目錄,運行bin/start-all.sh,即可以啟動整個分布式系統了。

然后在主機上運行jps:

在從機上運行jps:

 

在主服務器上打開 http://localhost:50070,可以看到:

有兩個活動的結點,點進去,可以看到:

點下面的結點可以查看詳細,如果點開頁面打不開,則有可能是機器防火牆阻止了。

可以進入相應機器,執行

$ service iptables stop

來關閉防火牆。

 

我們可以嘗試上傳一下文件:

$bin/hadoop fs -put ~/Tool/eclipse-SDK-3.7.1-linux-gtk.tar.gz test1.tar.gz

可以看到:

 

再上傳一下文件:

$bin/hadoop fs -put ~/Tool/eclipse-SDK-3.7.1-linux-gtk.tar.gz test2.tar.gz

可以看到:

 

但發現不平衡,都跑一台上了。所以可以執行命令

$bin/hadoop balancer -threshold 1

這樣,再來看:

平衡了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM