【文件属性】:
文件名称:Hadoop集群安装
文件大小:274KB
文件格式:PDF
更新时间:2015-09-21 04:04:19
集群安装
Hadoop集群安装的详细说明文档,
實作七: Hadoop 叢集安裝
前言
您手邊有兩台電腦,假設剛剛操作的電腦為"主機一" ,另一台則為"主機二"
。則稍後的環境如下
•
管理Data的身份 管理Job的身份
"主機一" namenode + datanode jobtracker + tasktracker
"主機二" datanode tasktracker
這個實做會架設運作在叢集環境上的Hadoop,因此若是你的電腦還存在著
之前的實做一的環境,請先作step 0,以移除掉之前的設定。
•
確認您"主機一"的 hostname 與 "主機二" 的 hostname,並將下面指令
有 主機一與主機二 的地方作正確的取代
•
維持好習慣,請幫你待會要操作的主機設root密碼 •
~$ sudo passwd
清除所有在實做一作過的環境
在 "主機一" (有操作過 實做一 的電腦)上操作 •
~$ cd ~
~$ /opt/hadoop/bin/stop-all.sh
~$ rm -rf /tmp/hadoop-hadooper*
~$ sudo rm -rf /opt/hadoop
~$ rm -rf ~/.ssh
step 0. 設定機器的ip & hostname 資訊
step 1. 設定兩台機器登入免密碼
請注意我們實驗環境已經把 /etc/ssh/ssh_config裡的StrictHostKeyChecking改成no,下面的指令可以檢查,如果你的設定
不同的話,請修改此檔會比較順。
•
$ cat /etc/ssh/ssh_config |grep StrictHostKeyChecking
StrictHostKeyChecking no
在"主機一" 上操作 •
接著將key產生並複製到其他node上 •
~$ ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ""
~$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
~$ scp -r ~/.ssh 主機二:~/
測試看看是否登入免密碼 •
~$ ssh 主機二
~$ ssh 主機一
~$ exit
~$ exit
~$
完成後請登入確認不用輸入密碼,(第一次登入需按 yes ,第二次就可以直接登入到系統),以免日後輸入密碼不隻手軟而
已....
•
step 2. 安裝java
為兩台電腦安裝java •
"主機一" & "主機二" 都要操作以下指令 ◦
~$ sudo apt-get purge java-gcj-compat
~$ sudo apt-get install sun-java6-bin sun-java6-jdk sun-java6-jre
~$ ssh 主機二
前言
清除所有在實做一作過的環境
step 0. 設定機器的ip & hostname 資訊
step 1. 設定兩台機器登入免密碼
step 2. 安裝java
step 3. 下載安裝Hadoop到"主機一"
step 4. 設定 hadoop-env.sh
step 5. 設定 hadoop-site.xml
step 6. 設定masters及slaves
step 7. Hadoop_Home內的資料複製到其他主機上
step 8. 格式化HDFS
step 9. 啟動Hadoop
step 10. 停止hadoop
練習
页码,1/5 Hadoop_Lab7_018 – Cloud Computing
2011-03-25 http://trac.nchc.org.tw/cloud/wiki/Hadoop_Lab7_018
~$ sudo apt-get purge java-gcj-compat
~$ sudo apt-get install sun-java6-bin sun-java6-jdk sun-java6-jre
~$ exit
step 3. 下載安裝Hadoop到"主機一"
先在"主機一" 上安裝,其他node的安裝等設定好之後在一起作 •
~$ cd /opt
/opt$ sudo wget http://ftp.twaren.net/Unix/Web/apache/hadoop/core/hadoop-0.18.3/hadoop-0.18.3.t
/opt$ sudo tar zxvf hadoop-0.18.3.tar.gz
/opt$ sudo mv hadoop-0.18.3/ hadoop
/opt$ sudo chown -R hadooper:hadooper hadoop
step 4. 設定 hadoop-env.sh
"主機一" 上用gedit 編輯 conf/hadoop-env.sh •
/opt$ cd hadoop/
/opt/hadoop$ gedit conf/hadoop-env.sh
將以下資訊貼入 conf/hadoop-env.sh 檔內
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export HADOOP_HOME=/opt/hadoop
export HADOOP_CONF_DIR=/opt/hadoop/conf
export HADOOP_LOG_DIR=/tmp/hadoop/logs
export HADOOP_PID_DIR=/tmp/hadoop/pids
注意,在此實做中,我們多設定了HADOOP_PID_DIR及HADOOP_LOG_DIR的參數,並且把值寫入到我們hadooper的家目
錄中,此舉並非完全必要,但一個目的是介紹更多hadoop-env.sh內的參數,另一目的為讓log,pid等常變資料與hadoop家目
錄分離
•
step 5. 設定 hadoop-site.xml
第二個設定檔是 hadoop-site.xml,由於官方所提供的範例並無法直接執行,因此我們參考線上文件,做了以下的修改。 •
/opt/hadoop# gedit conf/hadoop-site.xml
將以下資料取代掉原本的內容
fs.default.name
hdfs://主機一:9000/
mapred.job.tracker
主機一:9001
hadoop.tmp.dir
/tmp/hadoop/hadoop-${user.name}
注意! 我們多加了一個參數hadoop.tmp.dir,讓預設的中介資料存放在/tmp/hadoop/ 而不是/tmp/ 下,更多內容可以看
conf/hadoop-default.xml
•
注意!fs.default.name = hdfs://主機一:9000/ ;而mapred.job.tracker = 主機一:9001,看出差異了嗎!一個有指
hdfs://,一個沒有,重要!易混淆。
•
step 6. 設定masters及slaves
接著我們要編輯哪個主機當namenode, 若有其他主機則為datanodes •
編輯 conf/slaves ◦
页码,2/5 Hadoop_Lab7_018 – Cloud Computing
2011-03-25 http://trac.nchc.org.tw/cloud/wiki/Hadoop_Lab7_018
/opt/hadoop$ gedit conf/slaves
原本內容只有localhost一行,請刪除此行並換上"主機一" 及"主機二" 的ip
主機一
主機二
step 7. Hadoop_Home內的資料複製到其他主機上
在"主機一" 上對遠端"主機二" 作開資料夾/opt/hadoop及權限設定 •
/opt/hadoop$ ssh 主機二 "sudo mkdir /opt/hadoop"
/opt/hadoop$ ssh 主機二 "sudo chown -R hadooper:hadooper /opt/hadoop"
複製"主機一" 的hadoop資料夾到"主機二" 上 •
/opt/hadoop$ scp -r /opt/hadoop/* 主機二:/opt/hadoop/
step 8. 格式化HDFS
以上我們已經安裝及設定好 Hadoop 的叢集環境,接著讓我們來啟動 Hadoop ,首先還是先格式化hdfs,在"主機一" 上操作 •
/opt/hadoop$ bin/hadoop namenode -format
執行畫面如:
09/03/23 20:19:47 INFO dfs.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = 主機一
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 0.18.3
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/core/branches/branch-0.18 -r 736
************************************************************/
09/03/23 20:19:47 INFO fs.FSNamesystem: fsOwner=hadooper,hadooper
09/03/23 20:19:47 INFO fs.FSNamesystem: supergroup=supergroup
09/03/23 20:19:47 INFO fs.FSNamesystem: isPermissionEnabled=true
09/03/23 20:19:47 INFO dfs.Storage: Image file of size 82 saved in 0 seconds.
09/03/23 20:19:47 INFO dfs.Storage: Storage directory /tmp/hadoop/hadoop-hadooper/dfs/name has b
09/03/23 20:19:47 INFO dfs.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at 主機一
************************************************************/
step 9. 啟動Hadoop
bin/start-dfs.sh腳本會參照namenode上${HADOOP_CONF_DIR}/slaves文件的內容,在所有列出的slave上啟動
datanode。
•
在"主機一" 上,執行下面的命令啟動HDFS: •
/opt/hadoop$ bin/start-dfs.sh
http://主機一:50070/ - Hadoop DFS 狀態 •
页码,3/5 Hadoop_Lab7_018 – Cloud Computing
2011-03-25 http://trac.nchc.org.tw/cloud/wiki/Hadoop_Lab7_018
•
ps: 然而JobTracker還沒啟動,因此 http://主機一:50030/ 網頁無法顯示 •
bin/start-mapred.sh腳本會參照jobtracker上${HADOOP_CONF_DIR}/slaves文件的內容,在所有列出的slave上啟動
tasktracker。
•
在"主機一"執行下面的命令啟動Map/Reduce: •
/opt/hadoop$ /opt/hadoop/bin/start-mapred.sh
啟動之後, jobtracker也正常運作囉! •
http://主機一:50030/ - Hadoop 管理介面 •
页码,4/5 Hadoop_Lab7_018 – Cloud Computing
2011-03-25 http://trac.nchc.org.tw/cloud/wiki/Hadoop_Lab7_018
•
step 10. 停止hadoop
在"主機一" 上,執行下面的命令停止HDFS: •
/opt/hadoop$ bin/stop-dfs.sh
bin/stop-dfs.sh腳本會參照namenode上${HADOOP_CONF_DIR}/slaves文件的內容,在所有列出的slave上停止
namenode
◦
在"主機一" 上,執行下面的命令停止Map/Reduce: •
/opt/hadoop$ bin/stop-mapred.sh
bin/stop-mapred.sh腳本會參照jobtracker上${HADOOP_CONF_DIR}/slaves文件的內容,在所有列出的slave上停
止tasktracker。
◦
練習
看 conf/hadoop-default.xml 的更多內容 •
和別人組隊,組成4台node的cluster,其中"主機一" 只當 namenode ,"主機二" 只當 jobtracker,而node3, node4 兩台
電腦則身兼 datanode及tasktracker的工作。
•
页码,5/5 Hadoop_Lab7_018 – Cloud Computing
2011-03-25 http://trac.nchc.org.tw/cloud/wiki/Hadoop_Lab7_018