hadoop學習(五)Hadoop2.2.0完全分布式安裝詳解(1)

來源:互聯網
上載者:User

      和同伴一起搭建hadoop叢集中遇到的各種問題,整理如下:
前言

        在寒假前的一段時間,開始調研Hadoop2.2.0搭建過程,當時苦於沒有機器,只是在3台筆記本上,簡單跑通一些資料。一轉眼一兩個月過去了,有些東西對已經忘了。現在學校這邊實驗室申請下來了,分了10台機器(4G+500G),這足夠我們玩的了。開始搭建Hadoop2.2.0分布式叢集,也趁著這個機會把整個流程梳理一下。

        在很多部落格中有關於Hadoop2.2.0版本的安裝過程,有的很全,但是按照去做,還是會出現一些問題卡在那裡。有的時候需要結合幾篇文檔去搭建平台。在這篇部落格匯總會把我們遇到的問題,以及搭建過程中發生的一些事情總結一下。有關於hadoop具體的安裝過程和配置相應的檔案,我們後續也會給出來。

        如果你決定花點時間去讀這篇文章了,請大家仔細讀一下,因為每一個點,我們都在上面耽誤了一些時間,梳理一下,大家如果遇到相應的問題,也算給大家提供了一個解決方案。

1、系統內容-配置靜態IP:

        Ubuntu環境,這裡我們採用的是32位12.04.2版本。我們原先在老版本10.04中搭建,在安裝ssh的時候,出現了問題。後來為了叢集統一管理,我們把ubuntu整個版本升級到12.04(重裝ubuntu)。

        簡單說一下ubuntu安裝過程,在windows系統中,利用wubi安裝是最簡單的,點擊自己安裝,然後按照步驟執行。結束後,遇到一個棘手的問題:新裝的ubuntu不能上網。而這是搭建hadoop環境的前提,保證可以上網。

解決方案:配置靜態IP。

        在ubuntu12.04版本中,右上方,有個上標,點擊編輯串連,手動設定靜態IP、網關、子網路遮罩、DNS。這樣做的目的:是能保證ubuntu上網,是第一步。



        上述是圖形化配置靜態IP,我們也可以通過如下步驟手動設定。

執行:

      sudo gedit /etc/network/interfaces

輸入:

     auto eth0     iface eth0 inet static      address 172.16.128.136     netmask 255.255.255.0     gateway 172.16.128.1

儲存:重啟網關

     sudo /etc/init.d/networking restart

2、安裝jdk

        這裡會遇到一些問題。原因是,如果你是新裝的ubuntu基本上不會遇到這種問題,你可以按照下面(1)的步驟就可以配置好環境變數,通過Java -version就可以查看jdk版本。如果你是在操作別人的電腦,由於原來jdk版本不一致。要重新安裝jdk,但不能影響別人使用者下的jdk版本。

        解決的辦法就是,把自己要安裝的jdk解壓到本機使用者如:/home/zz/jvm/jdk1.7.0_45,然後配置.bashrc環境變數。結束儲存,source .bashrc後,java -version查看jdk版本號碼。

       如果,我們把解壓好的jdk放到案頭上了。我們: cd  案頭。

執行:

       sudo cp -r jvm  /usr/lib  

       問題:一般我們移植jdk在不同機器之間互相拷貝,就會存在一個許可權問題。這會導致即使我們按照正常的步驟配置好環境變數,在執行java  -version後,如果遇到許可權問題,執行下面語句。

執行:jvm檔案夾中放著jdk

     sudo  chmod  -R  777  jvm    把所有許可權付給jvm

     sudo  chown -R  zz:zz  jvm       把jvm許可權付給本使用者,zz是目前使用者。

2.1、JDK 安裝:下載路徑 

       http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

       選擇:jdk-7u45-linux-i586.tar.gz

       解壓:tar  -zxvf  jdk-7u45-linux-i586.tar.gz 

       解壓檔案為:jdk1.7.0_45,可以指定路徑解壓或解壓後把檔案複製到指定路徑。

       配置環境變數:

       執行:cd 進入根目錄。

       sudo gedit .bashrc

       添加:

      export JAVA_HOME=/home/zz/jvm/jdk1.7.0_45       export JRE_HOME=/home/zz/jvm/jdk1.7.0_45/jre       export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib      export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

       儲存,關閉,執行

      source .bashrc

      java -version   查看版本

2.2、如果上面沒有正常顯示

         sudo  gedit  /etc/profile:

         添加,上面在.bashrc 中的內容。儲存,執行。

        上述的過程,適用於所有的過程。當你在公司裡的時候,給你分配虛擬機器的帳號,你的所有操作不能影響別人的效能。比如:你要按章jdk1.7,而伺服器的版本的jdk是1.6,這就要求,你只能把jdk解壓到你使用者的目錄,在配置環境變數的時候,就指定你解壓的目錄中,這就使得,在不同的使用者中,顯示的jdk的版本可以是不一樣的。如果你是新裝的ubuntu,上述問題可能你不會遇到,也錯過了一個學習的機會。

2.3 覆蓋原有jdk(直接了當,我是這麼乾的)

         為了叢集管理方面,選在同一的安裝路徑。選擇不是在本使用者中,解壓到/usr/lib/jvm/jdk1.7..

         配置環境變數,如果在/etc/profile 檔案中,配置完,執行source profile後依然jdk版本沒有出來。在此目前使用者 .bashrc 檔案中,添加剛才的的export 路徑名稱。關閉,執行source .bashrc。Java -version 就會出現jdk的版本。

        為什麼我們採用這個路徑:因為,先前在筆記本中搭建的hadoop叢集中jdk路徑就是此路徑,也是為了相容,方面。

       分別添加:

       export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_45       export JRE_HOME=/usr/lib/jvm/jdk1.7.0_45/jre       export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib       export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
3、更改ubuntu主機名稱

       sudo  gedit  /etc/hostname 

       添加:cluster1 

      各個主機都要執行這一步,不同的就是cluster1-10。這裡我們有10個節點。

      重新啟動,終端顯示由原先的:zz@ubuntu~& 變成zz@cluster1-10~$  

      這是為了以後安裝ssh,各主機之間可用通過ssh互聯方面。

4、配置hosts檔案

      sudo gedit /etc/hosts

      新增內容,如下:IP地址和名稱是根據,你主機機器數來定的。

        127.0.0.1 localhost        # The following lines are desirable for IPv6 capable hosts        ::1     ip6-localhost ip6-loopback        fe00::0 ip6-localnet        ff00::0 ip6-mcastprefix        ff02::1 ip6-allnodes        ff02::2 ip6-allrouters        172.16.128.135  cluster1        172.16.128.136  cluster2        172.16.128.123  cluster3        172.16.128.124  cluster4        172.16.128.134  cluster5        172.16.128.133  cluster6
5、安裝ssh

        新安裝完ubuntu後。

        先執行:sudo apt-get update  更新一下最新的檔案。

        然後安裝ssh:sudo apt-get install openssh-server 

        下面要做的事情是,ssh產生秘鑰,各主機之間可以互相ping通。

        進入根目錄執行:

        ssh-keygen -t rsa

        cp id_rsa.pub authorized_keys

        所有的機器都執行上面的步驟:然後,gedit  authorized_keys 把每一台機器上的 authorized_keys中的內容拷貝到一個檔案中,然後通過scp複製到每一台機器中。例如你有6台機器,把6台中的authorized_keys 的內容複寫在寫入authorized_keys 中。

       例如:下面cluster1、cluster2、cluster3等內容都複製到authorized_keys,目的就是為了各主機之間互相ping通。

    

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDnTV1H/ldg5njT3+jJlS6SGcidiS9tQ0cesLcN0LONZno/NVaVNW79MKNj0LWUoDv/OZz7AQ0dDsbos9We8in9WQvVO2t2eoAuWExU5pqcv1tsRjXj43rKFCBJJedlXt+4sirgQrlrwOCMloSOakncISLxSQ2a7MXUq+NJyVynyjfyykjC+p7Nl0rrnHllzfy28Etf3JzYGKoOhdiDqidA8O6xF8VsJOUTaqIc/g0RlHuHPzgaPEmRo+HWJHYda4uERmNSAlhuhBrq2PCNz0WDeHJtF2psDXVIhZeNms+yJGh501mJCEnKwyediQHeFWc9J3JEGk0UaZdkzbYZ+VoR zz@cluster2 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCqqbQXmsAIccKCY6VWKhujvyGB88UGfi/v7i407VT9MndCeP2yRUyn+HlZuZPxmCvqXSYDQUswUID8FYXZi3A6uKu2b7k+7juwZFj8tO5l3R4nAWxn1zqBk8sg0ubfBwcxphoa/KrZq3h4TdfvhDivTdpG5chtWNlu3/JchmLDNYPcOcNYfndI6d/iDArP/cI4RDGbV4xDDOr65eX47KG7i4zXlYeAJqOQ9IbbsIGkXRve1cfBp79dCNCPElmdWkCnRI3xa0rh3o5a7MLiIDuLHQCN8KPKORy55farme35K1bLV7rDmLdZVIY5GKdR7GgR/56wGZXw3CZPVlfDBFDZ zz@cluster1

        最後在一台主機中authorized_keys擁有所有主機authorized_keys中的內容。

       進入當前路徑,執行:

       scp authorized_keys cluster1:/home/zz/.ssh

       然後不斷的變化cluster後面的數字,就可以把檔案複製到不同的主機上。

       執行:

       ssh cluster1或2或3等等。 就可以免密碼登入。

總結:

        如果,通過配置ssh免密碼登入,可以通過ssh cluster1等之間免密碼互聯。就說明整個工作進展順利。到了這一步,也說明我們移植工作進展的順利。下面我們就可以把以前搭建的hadoop整個目錄移植到目前使用者下,然後通過配置,master和solve節點就可以啟動hadoop了。這就是下面的工作。

 


CopyrightBUAA


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.