實現Hadoop分布式環境部署

openkk 15年前發布 | 3K 次閱讀 并發

目標
配置一個分布式計算集群,讓hadoop 框架能夠正常的運行起來,主要有master 的namenode,jobtracker 和slave 的datanode,tasktracker. 便于之后進行分布式運算。由于作者水平有限,疏漏指出希望批評指正。

環境
兩臺(或多臺)服務器,都是用linux 系統,都安裝了jdk1.5 以上版本,都安裝了ssh ,各個機器名不一致。

實施
1 建立同名用戶

原因

hadoop 運行時需要使用相同的目錄進行存儲,而且master 要方便的管理每臺服務器需要一個同名用戶的ssh 公鑰。

步驟

(1) su root

(2) 輸入root 密碼

(3) adduser username (用戶名)

除了輸入新用戶的密碼,一路回車即可

創建用戶的時候會在/home/ 下自動給用戶創建一個默認目錄,之后存放數據和hadoop 程序就使用該目錄即可

如果發現自己建用戶錯了,使用sudo userdel username 即可刪除剛才建立的用戶

2 配置ssh
原因

因為整個hadoop 在數據交換的時候都使用了ssh 服務,所以首先要配置ssh ,讓各個節點服務器都能互通,為此,需要給每臺服務器生成一個公鑰用于登錄認證。

步驟

在每臺服務器:

(1) 進入用戶默認目錄,如zoomsun 用戶的默認目錄是/home/zoomsun :cd /home/zoomsun

(2) 建立.ssh 文件夾:mkdir .ssh

(3) 進入.ssh 目錄:cd .ssh

(4) 創建當前用戶的ssh 登錄公鑰:ssh-keygen -t rsa ,建議別使用sudo 創建,一路回車即可,這時候會在當前目錄( 如/home/zoomsun/.ssh/) 生出id_rsa.pub ,即rsa 公鑰

(5) 使用scp 命令把生成的公鑰傳給別的服務器,并保存成不同的名字,如我在192.168.1.118 的主機傳給192.168.1.109 ,并且保存為118_id_rsa.pub 的時候命令如下:scp id_rsa.pub zoomsun@192.168.1.109:/home/zoomsun/.ssh/118_id_rsa.pub

(6) 登錄192.168.1.109 ,可以遠程登錄:ssh zoomsun@192.168.1.109 -p22( 是22 端口的時候可以不寫)

(7) 進入當前用戶默認目錄下的.ssh 目錄:cd ~/.ssh

(8) 把公鑰內容添加到登錄認證文件中:cat 118_id_rsa.pub >> authorized_keys

(9) 登錄到192.168.1.118 主機,使用ssh zoomsun@192.168.1.109 進行連接109 主機,這時候會出現輸入yes/no? 的提示,輸入yes 。(配置完成后第一次登錄時許需要給know_hosts 添加東西,所以會有這個確認,以后再登錄就不用輸入yes 了)

(10) 好了,在不同的機器上重復上面的步驟,讓所有的服務器互通吧!

3 準備hadoop
在master 上下載并解壓hadoop ,解壓到當前用戶默認目錄下(/home/zoomsun/)

4 配置hadoop
進入解壓后hadoop 的conf 目錄,對其中幾個文件進行修改(hadoop-env.sh,hadoop-site.xml,masters,slaves )

原因

讓hadoop 能正常的運行起來

步驟

(1) 修改hadoop-env.sh ,打開它,只對JAVA_HOME 進行重新指定就好了

# The java implementation to use. Required.

export JAVA_HOME=/usr/ali/jdk1.5.0_10

類似這句,把JAVA_HOME 按照自己的情況修改,如我的/usr/lib/jvm/jdk1.6.0_10

(2) 修改hadoop-site.xml ,在<configuration></configuration> 之間進行修改:

  1. <configuration>    
  2.   
  3. <property>    
  4.   
  5. <name>fs.default.name</name> <!-- 配置namenode-->    
  6.   
  7. <value>hdfs://192.168.1.118:54310/</value> <!-- 改為自己的master-->    
  8.   
  9. </property>    
  10.   
  11. <property>    
  12.   
  13. <name>mapred.job.tracker</name> <!-- 配置jobtracker-->    
  14.   
  15. <value>hdfs://192.168.1.118:54311/</value> <!-- 改為自己的master-->    
  16.   
  17. </property>    
  18.   
  19. <property>    
  20.   
  21. <name>dfs.replication</name> <!-- 配置備份數量-->    
  22.   
  23. <value>1</value>    
  24.   
  25. </property>    
  26.   
  27. <property>    
  28.   
  29. <name>hadoop.tmp.dir</name> <!-- 配置備臨時目錄-->    
  30.   
  31. <value>/home/zoomsun/hadoop/tmp/</value>    
  32.   
  33. </property>    
  34.   
  35. <property>    
  36.   
  37. <name>mapred.child.java.opts</name>    
  38.   
  39. <value>-Xmx512m</value>    
  40.   
  41. </property>    
  42.   
  43. <property>    
  44.   
  45. <name>dfs.block.size</name>    
  46.   
  47. <value>5120000</value>    
  48.   
  49. </property>    
  50.   
  51. </configuration>    
  52.   

(3) 配置masters,slaves ,打開并寫入各自對應的ip 信息,如我的:

給Masters 寫:192.168.1.118

給Slaves 寫:192.168.1.109

5 給每臺服務器指定機器名
原因

不知道,反正一定要指定

步驟

(1) 打開hosts :sudo vi /etc/hosts

(2) 添加所有集群中的主機ip 列表,如

192.168.1.118 node0

192.168.1.109 node1

6 為slave 拷貝hadoop
master 的hadoop 拷貝到slave 相同的目錄下,可以使用scp -r 來拷貝文件夾,如:

scp -r /home/zoomsun/hadoop-0.19.0 zoomsun@192.168.1.109 :/home/zoomsun

7 修改環境變量
在master 上修改/etc/profile ,把hadoop 加入環境變量

原因

方便使用

步驟

(1) sudo vi /etc/profile

(2) export HADOOP_HOME=/home/zoomsun/hadoop-0.19.0

export PATH=$PATH:$HADOOP_HOME/bin

(3) 修改完畢后,執行source /etc/profile 使其生效

8 修改slave hadoop 執行的JAVA_HOME
進入各個slave ,修改hadoop-env.sh 中的JAVA_HOME 為本機的JAVA_HOME

9 初始化namenode
在master 上執行hadoop namenode -format ,只執行一次,類似格式化,除非master 的tmp.dir 刪除了再進行格式化

10 啟動hadoop
在master 上執行start-all.sh ,啟動所有集群中的node 和tracker

11 查看日志
可以進入hadoop 的logs 目錄查看日志

12 關閉hadoop
如果需要關閉hadoop :stop-all.sh

13 結束語
如果正常的話,現在hadoop 已經配置成功了,祝賀下!

如果還不成功,分析日志,找原因吧!

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!