Changes between Version 8 and Version 9 of Hadoop_Lab7
- Timestamp:
- Feb 25, 2011, 11:55:13 AM (14 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Hadoop_Lab7
v8 v9 8 8 == 前言 == 9 9 10 * 您手邊有兩台電腦,假設剛剛操作的電腦為" 主機一" ,另一台則為"主機二" 。則稍後的環境如下10 * 您手邊有兩台電腦,假設剛剛操作的電腦為"node1" ,另一台則為"node2" 。則稍後的環境如下 11 11 12 12 || || '''管理Data的身份''' || '''管理Job的身份''' || 13 || '''" 主機一" ''' || namenode + datanode || jobtracker + tasktracker||14 || '''" 主機二" ''' || datanode|| tasktracker ||13 || '''"node1" ''' || namenode + datanode || jobtracker + tasktracker|| 14 || '''"node2" ''' || datanode|| tasktracker || 15 15 16 16 * 這個實做會架設運作在叢集環境上的Hadoop,因此若是你的電腦還存在著之前的實做一的環境,請先作step 0,以移除掉之前的設定。 17 17 18 * 確認您" 主機一"的 hostname 與 "主機二" 的 hostname,並將下面指令有 主機一與主機二的地方作正確的取代18 * 確認您"node1"的 hostname 與 "node2" 的 hostname,並將下面指令有 node1與node2 的地方作正確的取代 19 19 20 20 * 維持好習慣,請幫你待會要操作的主機設root密碼 … … 25 25 === 清除所有在實做一作過的環境 === 26 26 27 * 在 " 主機一" (有操作過 實做一 的電腦)上操作27 * 在 "node1" (有操作過 實做一 的電腦)上操作 28 28 {{{ 29 29 ~$ cd ~ … … 45 45 }}} 46 46 47 * 在" 主機一" 上操作47 * 在"node1" 上操作 48 48 * 接著將key產生並複製到其他node上 49 49 {{{ 50 50 ~$ ssh-keygen -t rsa -f ~/.ssh/id_rsa -P "" 51 51 ~$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys 52 ~$ scp -r ~/.ssh 主機二:~/52 ~$ scp -r ~/.ssh node2:~/ 53 53 }}} 54 54 * 測試看看是否登入免密碼 55 55 {{{ 56 ~$ ssh 主機二57 ~$ ssh 主機一56 ~$ ssh node2 57 ~$ ssh node1 58 58 ~$ exit 59 59 ~$ exit … … 66 66 67 67 * 為兩台電腦安裝java 68 * " 主機一" & "主機二" 都要操作以下指令68 * "node1" & "node2" 都要操作以下指令 69 69 {{{ 70 70 ~$ sudo apt-get purge java-gcj-compat 71 71 ~$ sudo apt-get install sun-java6-bin sun-java6-jdk sun-java6-jre 72 ~$ ssh 主機二72 ~$ ssh node2 73 73 ~$ sudo apt-get purge java-gcj-compat 74 74 ~$ sudo apt-get install sun-java6-bin sun-java6-jdk sun-java6-jre … … 77 77 78 78 79 == step 3. 下載安裝Hadoop到" 主機一" ==80 81 * 先在" 主機一" 上安裝,其他node的安裝等設定好之後在一起作79 == step 3. 下載安裝Hadoop到"node1" == 80 81 * 先在"node1" 上安裝,其他node的安裝等設定好之後在一起作 82 82 83 83 {{{ … … 93 93 == step 4. 設定 hadoop-env.sh == 94 94 95 * " 主機一" 上用gedit 編輯 conf/hadoop-env.sh95 * "node1" 上用gedit 編輯 conf/hadoop-env.sh 96 96 97 97 {{{ … … 127 127 <property> 128 128 <name>fs.default.name</name> 129 <value>hdfs:// 主機一:9000</value>129 <value>hdfs://node1:9000</value> 130 130 </property> 131 131 <property> … … 165 165 <property> 166 166 <name>mapred.job.tracker</name> 167 <value> 主機一:9001</value>167 <value>node1:9001</value> 168 168 </property> 169 169 </configuration> … … 171 171 }}} 172 172 173 * 注意!fs.default.name = hdfs:// 主機一:9000/ ;而mapred.job.tracker = 主機一:9001,看出差異了嗎!一個有指hdfs://,一個沒有,重要!易混淆。173 * 注意!fs.default.name = hdfs://node1:9000/ ;而mapred.job.tracker = node1:9001,看出差異了嗎!一個有指hdfs://,一個沒有,重要!易混淆。 174 174 175 175 == step 6. 設定masters及slaves == … … 180 180 /opt/hadoop$ gedit conf/slaves 181 181 }}} 182 原本內容只有localhost一行,請刪除此行並換上" 主機一" 及"主機二" 的ip183 {{{ 184 #!sh 185 主機一 186 主機二 182 原本內容只有localhost一行,請刪除此行並換上"node1" 及"node2" 的ip 183 {{{ 184 #!sh 185 node1 186 node2 187 187 }}} 188 188 189 189 == step 7. Hadoop_Home內的資料複製到其他主機上 == 190 190 191 * 在" 主機一" 上對遠端"主機二" 作開資料夾/opt/hadoop及權限設定192 {{{ 193 /opt/hadoop$ ssh 主機二"sudo mkdir /opt/hadoop"194 /opt/hadoop$ ssh 主機二"sudo chown -R hadooper:hadooper /opt/hadoop"195 /opt/hadoop$ ssh 主機二"sudo mkdir /var/hadoop"196 /opt/hadoop$ ssh 主機二"sudo chown -R hadooper:hadooper /var/hadoop"197 }}} 198 199 * 複製" 主機一" 的hadoop資料夾到"主機二" 上200 {{{ 201 /opt/hadoop$ scp -r /opt/hadoop/* 主機二:/opt/hadoop/191 * 在"node1" 上對遠端"node2" 作開資料夾/opt/hadoop及權限設定 192 {{{ 193 /opt/hadoop$ ssh node2 "sudo mkdir /opt/hadoop" 194 /opt/hadoop$ ssh node2 "sudo chown -R hadooper:hadooper /opt/hadoop" 195 /opt/hadoop$ ssh node2 "sudo mkdir /var/hadoop" 196 /opt/hadoop$ ssh node2 "sudo chown -R hadooper:hadooper /var/hadoop" 197 }}} 198 199 * 複製"node1" 的hadoop資料夾到"node2" 上 200 {{{ 201 /opt/hadoop$ scp -r /opt/hadoop/* node2:/opt/hadoop/ 202 202 }}} 203 203 … … 205 205 206 206 207 * 以上我們已經安裝及設定好 Hadoop 的叢集環境,接著讓我們來啟動 Hadoop ,首先還是先格式化hdfs,在" 主機一" 上操作207 * 以上我們已經安裝及設定好 Hadoop 的叢集環境,接著讓我們來啟動 Hadoop ,首先還是先格式化hdfs,在"node1" 上操作 208 208 209 209 {{{ … … 216 216 /************************************************************ 217 217 STARTUP_MSG: Starting NameNode 218 STARTUP_MSG: host = 主機一218 STARTUP_MSG: host = node1 219 219 STARTUP_MSG: args = [-format] 220 220 … … 230 230 09/03/23 20:19:47 INFO dfs.NameNode: SHUTDOWN_MSG: 231 231 /************************************************************ 232 SHUTDOWN_MSG: Shutting down NameNode at 主機一232 SHUTDOWN_MSG: Shutting down NameNode at node1 233 233 ************************************************************/ 234 234 }}} … … 238 238 * bin/start-dfs.sh腳本會參照namenode上${HADOOP_CONF_DIR}/slaves文件的內容,在所有列出的slave上啟動datanode。 239 239 240 * 在" 主機一" 上,執行下面的命令啟動HDFS:240 * 在"node1" 上,執行下面的命令啟動HDFS: 241 241 242 242 {{{ … … 246 246 247 247 ------ 248 * http:// 主機一:50070/ - Hadoop DFS 狀態248 * http://node1:50070/ - Hadoop DFS 狀態 249 249 * [[Image(wiki:0428Hadoop_Lab3:datanode.png)]] 250 250 ------ 251 251 252 * ps: 然而JobTracker還沒啟動,因此 http:// 主機一:50030/ 網頁無法顯示252 * ps: 然而JobTracker還沒啟動,因此 http://node1:50030/ 網頁無法顯示 253 253 254 254 * bin/start-mapred.sh腳本會參照jobtracker上${HADOOP_CONF_DIR}/slaves文件的內容,在所有列出的slave上啟動tasktracker。 255 255 256 * 在" 主機一"執行下面的命令啟動Map/Reduce:256 * 在"node1"執行下面的命令啟動Map/Reduce: 257 257 258 258 {{{ … … 262 262 * 啟動之後, jobtracker也正常運作囉! 263 263 ------ 264 * http:// 主機一:50030/ - Hadoop 管理介面264 * http://node1:50030/ - Hadoop 管理介面 265 265 * [[Image(wiki:0428Hadoop_Lab3:job.png)]] 266 266 ------ … … 268 268 == step 10. 停止hadoop == 269 269 270 * 在" 主機一" 上,執行下面的命令停止HDFS:270 * 在"node1" 上,執行下面的命令停止HDFS: 271 271 {{{ 272 272 /opt/hadoop$ bin/stop-dfs.sh … … 274 274 * bin/stop-dfs.sh腳本會參照namenode上${HADOOP_CONF_DIR}/slaves文件的內容,在所有列出的slave上停止namenode 275 275 276 * 在" 主機一" 上,執行下面的命令停止Map/Reduce:276 * 在"node1" 上,執行下面的命令停止Map/Reduce: 277 277 {{{ 278 278 /opt/hadoop$ bin/stop-mapred.sh … … 313 313 == 練習 == 314 314 * 看 conf/hadoop-default.xml 的更多內容 315 * 和別人組隊,組成4台node的cluster,其中" 主機一" 只當 namenode ,"主機二" 只當 jobtracker,而node3, node4 兩台電腦則身兼 datanode及tasktracker的工作。315 * 和別人組隊,組成4台node的cluster,其中"node1" 只當 namenode ,"node2" 只當 jobtracker,而node3, node4 兩台電腦則身兼 datanode及tasktracker的工作。