hadoop學習筆記之一步一步部署hadoop分布式集群


一、准備工作

  • 同一個局域網中的三台linux虛擬機,我用的是redhat6.4,如果主機是windows操作系統,可以先安裝vmware workstation, 然后在workstation中裝上3台虛擬機,這樣就形成了一個以物理機為DNS服務器的局域網,物理機和虛擬機都有一個局域網IP,互相之間可以通信。
  • 因為hadoop是一個java開發者寫的開源軟件,所以你懂得,肯定用的是java語言編寫的,所以要裝jdk,當然還有一些perl語言寫的東西,所以也要裝perl,因為是個集群,所以互相之間要連接通信,需要安裝ssh
  • 如果用的是redhat,還需要關閉火牆,因為火牆會導致虛擬機之間無法連接,即關閉iptables,ip6tables,selinux,並設置開機不自啟動
  • 本次試驗搭建的環境為:

        node1:192.168.141.130 matser/namenode

     node2:192.168.141.131 slave/datanode

    node3:192.168.141.132 slave/datanode

二、配置hosts

首先在所有節點上(node1,node2,node3)上面編輯:vi /etc/hosts,添加如下內容:

192.168.141.130   node1

192.168.141.131   node2

192.168.141.132   node3

這樣,在設置相應的IP時就可以用其解析名稱代替,如需要寫192.168.141.130:9000時,就可以直接寫node1:9000,不僅書寫方便,而且可以加快解析IP的速度,使集群運行更加流暢,但是不配置該項也不會影響集群正常工作。

三、jdk安裝

  • 去jdk官網http://www.oracle.com/technetwork/cn/java/javase/downloads/index-jsp-138363-zhs.html,根據自己操作系統32還是64位下載一個jdk,我下載的是jdk-8u11-linux-i586.gz
  • 解壓jdk-8u11-linux-i586.gz:
    1 tar zxf jdk-8u11-linux-i586.gz

    然后會看到出現了一個目錄:jdk1.8.0_11

  • 為了書寫方便,去掉版本信息,並將之移動到/usr/local/目錄下:
    1 mv  jdk1.8.0_11 jdk 2 mv jdk /usr/local/ 

     

  • 修改環境變量:vi /etc/profile,在文件末尾添加信息,然后退出保存:

       

  • 執行source /etc/profile,使修改的文件生效
  • 然后執行java -version,如果能顯示如下版本信息,則安裝成功:

      

注意:有可能執行該命令時會報錯,那是因為在64位系統上運行了32位的jdk, 這時候只需執行安裝命令:yum install glibc.i686 -y即可 glibc.i686是一個32位運行庫。

每台虛擬機都要裝!

四、ssh無密碼連接

  • 首先我們新添加一個用戶專門用來管理運行hadoop,我新建了一個名為grid的用戶,然后自己設定該用戶密碼

       

  • su - grid切換到grid用戶
  • ssh-keygen生成公鑰和私鑰,一直回車默認就是了:

      

  • 執行如下命令,可以看到生成的key,然后將公鑰復制成authorized_keys:

      

  • 然后在每一個節點上(虛擬機)執行上述所有步驟,這樣就有了3個authorized_keys文件,我們把3個authorized_keys文件的內容復制到一起,形成一個authorized_keys,並用這個總的authorized_keys替換各個節點上原來的authorized_keys文件。
  • 驗證一下是否成,就是在任一節點上,用ssh連接其他任何節點,如果不出現提示讓你輸密碼,而是直接連上,則表示成功。

五、hadoop安裝

終於到正菜了,呼呼!

  • hadoop.apache.org下載一個穩定的版本即可,這里以hadoop-1.2.1.tar.gz為例

  • 解壓,去掉名字中的版本信息,移至/usr/local(具體移至什么地方可以自隨意,就是自己別忘了就好)

      

  • cd /usr/local/hadoop/conf/ 轉到hadoop配置目錄下
  • vi hadoop-env.sh,添加如下信息,告訴hadoop jdk的安裝路徑,然后保存退出:

     

  • vi core-site.xml,寫入如下信息,要注意,自己要在/home/grid/hadoop/ 目錄下手動建立tmp目錄,如沒有配置hadoop.tmp.dir參數,此時系統默認的臨時目錄為:/tmp/hadoop-dfs。而這個目錄在每次重啟后都會被刪掉,必須重新執行format才行,否則會出錯,hdfs后面的ip號就是名稱節點的ip,即namenode的ip,端口號默認9000,不用改動。

      

  • vi hdfs-site.xml,設置數據備份數目,這里我們有有一個namenode,兩個datanode,所以備份數目設置為2:

      

  • vi mapreduce-site.xml,設置map-reduce的作業跟蹤器(job tracker)所在節點,這里我們同樣將其放置在node1(192.168.141.130)上,端口號9001:

      

 

  • vi master,指定namenode所在節點,直接把節點名寫進去:

  node1

  退出保存

  注意,倘若沒有像配置過/etc/hosts,這里就要直接寫IP:192.168.141.130

  • vi slave,指定datanode所在節點:

  node2

  node3

  退出保存

  同樣注意,倘若沒有像配置過/etc/hosts,這里就要直接寫IP:

  192.168.141.131

  192.168.141.132

 

  • 配置完畢,拷貝配置好的hadoop目錄到指定位置(可以自定義,但是最好統一一個自己好記住的位置):

     

  • 在node1上切換到grid, cd /home/grid/hadoop/,然后執行文件系統格式化:bin/hadoop namenode -format,如果沒有任何warning,error,fatal等並且最后出現,format successfully字樣,則格式化成。
  • 啟動hadoop:

     

  • 檢查是否啟動成功,如果名稱節點namenode(node1)有如下所示:

     

     並且數據節點(node2,node3)有如下所示:

,則啟動成功!

六、集群測試

  • 在node1上的,grid用戶下,cd /home/grid/,建立一個目錄mkdir input,然后進入目錄input:cd input/,執行如下兩條命令:

  echo "hello world" > test1.txt

  echo "hello hadoop" > test2.txt

  • 將上述input目錄下的文件上傳到dfs文件系統,cd /home/grid/hadoop/,作如下操作:

     

  • 查看是否上傳成功:

     

  上傳成功,表示文件系統可以正常工作!

  • 檢查map-reduce功能是否正常,用hadoop包里面自帶的單詞統計jar包統計我們剛才上傳的文件中不同單詞的個數,看看是否正確:

     

  • 執行完畢后查看結果:

     

  可以看出統計單詞數與我們上傳的文件時一致的,說明map-reduce可以正常工作!

  • 至此,我們可以自信我們的hadoop已經完全部署好了!

七、總結

對於第一次玩hadoop的讀者來說,在安裝的過程中,必定會出現,這樣或者那樣的問題,但是,我們要抱着一個解決問題的心,學習過程本就是在錯誤中成長,我自己在安裝過程中也出現了不少問題,如datanode無法啟動。或者那么namenode無法啟動等等一系列問題,千萬不要煩躁而放棄,自己慢慢在網上查資料還是可以解決的,最重要是細心,要學會根據系統的報錯,檢查配置文件是否寫錯,初學者都不怎么會看日志,但是要邁出這一步,硬着頭皮看,當通過看日志解決了某個bug時,那種進步的愉悅感是很爽的,最后希望大家都犯點錯,一次就配置成功不一定是好事,最后熱烈歡迎大家給我留言,我們一起交流,學習!

2014-08-15


免責聲明!

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



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