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

Hadoop學習筆記(3) java

——分佈式環境搭建 node

前面,咱們已經在單機上把Hadoop運行起來了,但咱們知道Hadoop支持分佈式的,而它的優勢就是在分佈上突出的,因此咱們得搭個環境模擬一下。 linux

在這裏,咱們採用這樣的策略來模擬環境,咱們使用3臺ubuntu機器,1臺爲做主機(master),另外2臺做爲從機(slaver)。同時,這臺主機,咱們就用第一章中搭建好的環境來。 ubuntu

咱們採用與第一章中類似的步驟來操做: 安全

  1. 運行環境搭建

在前面,咱們知道,運行hadoop是在linux上運行的。因此咱們單機就在ubuntu上運行着。因此一樣,2臺從機,一樣採用linux系統。爲了節省資源,本人試驗時用了2臺centOS系統,並且是採用命令行的方式,沒有用圖形方式。 服務器

系統中軟件準備,第一章中咱們準備了subversion ssh ant 和jdk。那在這裏,從機上咱們不要這麼多了,咱們不用再下載、編譯代碼了,從主機上覆制就行。因此在從機上只須要安裝ssh 和jdk這兩個: 網絡

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

        注:在centOS中,使用yum install ssh。 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

這樣,再來看:

平衡了。

相關文章
相關標籤/搜索