Changes between Version 20 and Version 21 of jazz/Hadoop_Lab3
- Timestamp:
- Mar 25, 2009, 11:51:53 PM (16 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
jazz/Hadoop_Lab3
v20 v21 9 9 == 前言 == 10 10 11 * 您手邊有兩台電腦,假設剛剛操作的電腦為 node1,另一台則為node2。則稍後的環境如下11 * 您手邊有兩台電腦,假設剛剛操作的電腦為Node 1 ,另一台則為Node 2 。則稍後的環境如下 12 12 13 13 || || '''管理Data的身份''' || '''管理Job的身份''' || 14 || ''' node1''' || namenode(master)& datanode || tasktracker(slave)||15 || ''' node2''' || datanode(slave) || jobtracker(master)& tasktracker||14 || '''Node 1 ''' || namenode(master)& datanode || tasktracker(slave)|| 15 || '''Node 2 ''' || datanode(slave) || jobtracker(master)& tasktracker|| 16 16 17 17 * 這個實做會架設運作在叢集環境上的Hadoop,因此若是你的電腦還存在著之前的實做一的環境,請先作step 0,以移除掉之前的設定。 18 18 19 * 以下Node_1_IP_Addr代表你node1的ip位址,Node_2_IP_Addr為你node2的ip位址,請查清楚之後作設定 20 21 * 為了簡化操作步驟,'''大部分的指令在node1執行即可,不過step2 的安裝java則需要在node2上實機操作喔!''' 19 * 以下node01代表你Node 1 的ip位址,node02為你Node 2 的ip位址,請查清楚之後作設定 20 21 * 為了簡化操作步驟,'''大部分的指令在Node 1 執行即可,不過step2 的安裝java則需要在Node 2 上實機操作喔!''' 22 23 * 維持好習慣,請幫你待會要操作的主機設root密碼 24 {{{ 25 ~$ sudo passwd 26 }}} 22 27 23 28 === 清除所有在實做一作過的環境 === 24 29 25 * node1 (有操作過實做一的電腦)執行30 * 在 Node 1 (有操作過實做一的電腦)上操作 26 31 {{{ 27 32 ~$ cd ~ … … 31 36 ~$ rm -rf ~/.ssh 32 37 }}} 33 * change root password 34 {{{ 35 ~$ sudo passwd 36 }}} 37 * check IP adress of Node 1 and Node 2 38 39 40 == step 0. 設定機器的ip & hostname 資訊 == 41 42 * 查詢Node 1 與 Node 2 上的IP資訊 43 38 44 {{{ 39 45 ~$ /sbin/ifconfig 40 46 }}} 41 47 42 * edit /etc/hosts 48 * 編輯 /etc/hosts 檔 49 43 50 {{{ 44 51 ~$ sudo su - 45 ~# echo "192.168.100.1 Node_1_IP_Addr" >> /etc/hosts 46 ~# echo "192.168.100.2 Node_2_IP_Addr" >> /etc/hosts 47 }}} 48 * share /etc/hosts from Node 1 to Node 2 49 {{{ 50 ~# scp /etc/hosts root@Node2_IP_Addr:/etc/hosts 52 ~# echo "192.168.100.1 node01" >> /etc/hosts 53 ~# echo "192.168.100.2 node02" >> /etc/hosts 54 }}} 55 56 * 把剛剛設定好 Node 1 的/etc/hosts 分享到 Node 2 57 58 {{{ 59 ~# scp /etc/hosts root@Node 2 _IP_Addr:/etc/hosts 51 60 ~# exit 52 61 }}} 53 62 54 63 == step 1. 設定兩台機器登入免密碼 == 55 64 56 * 在 node1上操作65 * 在Node 1 上操作 57 66 58 67 {{{ … … 60 69 ~$ ssh-keygen -t rsa -f ~/.ssh/id_rsa -P "" 61 70 ~$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys 62 ~$ scp -r ~/.ssh Node_2_IP_Addr:~/63 ~$ ssh Node_2_IP_Addr71 ~$ scp -r ~/.ssh node02:~/ 72 ~$ ssh node02 64 73 ~$ alias ssh='ssh -o "StrictHostKeyChecking no"' 65 ~$ ssh Node_1_IP_Addr74 ~$ ssh node01 66 75 ~$ exit 67 76 ~$ exit 68 77 }}} 69 78 70 * 完成後請登入確認不用輸入密碼,(第一次登入需按 yes ,第二次就可以直接登入到系統),以免日後輸入密碼不 只手軟而已....79 * 完成後請登入確認不用輸入密碼,(第一次登入需按 yes ,第二次就可以直接登入到系統),以免日後輸入密碼不隻手軟而已.... 71 80 72 81 == step 2. 安裝java == 73 82 74 83 * 為兩台電腦安裝java 75 * node1 & node2都要操作以下指令84 * Node 1 & Node 2 都要操作以下指令 76 85 {{{ 77 86 ~$ sudo apt-get purge java-gcj-compat … … 80 89 81 90 82 == step 3. 下載安裝Hadoop到 node1==83 84 * 先在 node1上安裝,其他node的安裝等設定好之後在一起作91 == step 3. 下載安裝Hadoop到Node 1 == 92 93 * 先在Node 1 上安裝,其他node的安裝等設定好之後在一起作 85 94 86 95 {{{ … … 94 103 == step 4. 設定 hadoop-env.sh == 95 104 96 * node1上用gedit 編輯 conf/hadoop-env.sh105 * Node 1 上用gedit 編輯 conf/hadoop-env.sh 97 106 98 107 {{{ … … 108 117 export HADOOP_HOME=/opt/hadoop 109 118 export HADOOP_CONF_DIR=/opt/hadoop/conf 110 export HADOOP_LOG_DIR=/ home/hadooper/logs111 export HADOOP_PID_DIR=/ home/hadooper/pids119 export HADOOP_LOG_DIR=/tmp/hadoop/logs 120 export HADOOP_PID_DIR=/tmp/hadoop/pids 112 121 }}} 113 122 * 注意,在此實做中,我們多設定了HADOOP_PID_DIR及HADOOP_LOG_DIR的參數,並且把值寫入到我們hadooper的家目錄中,此舉並非完全必要,但一個目的是介紹更多hadoop-env.sh內的參數,另一目的為讓log,pid等常變資料與hadoop家目錄分離 … … 128 137 <property> 129 138 <name>fs.default.name</name> 130 <value>hdfs:// Node_1_IP_Addr:9000/</value>139 <value>hdfs://node01:9000/</value> 131 140 <description> </description> 132 141 </property> 133 142 <property> 134 143 <name>mapred.job.tracker</name> 135 <value> Node_2_IP_Addr:9001</value>144 <value>node02:9001</value> 136 145 <description> </description> 137 146 </property> … … 144 153 }}} 145 154 * 注意! 我們多加了一個參數hadoop.tmp.dir,讓預設的中介資料存放在/tmp/hadoop/ 而不是/tmp/ 下,更多內容可以看conf/hadoop-default.xml 146 * 注意!fs.default.name = hdfs:// Node_1_IP_Addr:9000/ ;而mapred.job.tracker = Node_2_IP_Addr:9001,看出差異了嗎!一個有指hdfs://,一個沒有,重要!易混淆。155 * 注意!fs.default.name = hdfs://node01:9000/ ;而mapred.job.tracker = node02:9001,看出差異了嗎!一個有指hdfs://,一個沒有,重要!易混淆。 147 156 148 157 == step 6. 設定masters及slaves == … … 153 162 /opt/hadoop$ gedit conf/slaves 154 163 }}} 155 原本內容只有localhost一行,請刪除此行並換上Node 1及node2的ip164 原本內容只有localhost一行,請刪除此行並換上Node 1 及Node 2 的ip 156 165 {{{ 157 166 #!sh 158 Node_1_IP_Addr 159 Node_2_IP_Addr 167 node01 168 node02 160 169 }}} 161 170 162 171 == step 7. Hadoop_Home內的資料複製到其他主機上 == 163 172 164 * 在 node1上對遠端node2作開資料夾/opt/hadoop及權限設定165 {{{ 166 /opt/hadoop$ ssh Node_2_IP_Addr"sudo mkdir /opt/hadoop"167 /opt/hadoop$ ssh Node_2_IP_Addr"sudo chown -R hadooper:hadooper /opt/hadoop"168 }}} 169 170 * 複製 node1的hadoop資料夾到node2上171 {{{ 172 /opt/hadoop$ scp -r /opt/hadoop/* Node_2_IP_Addr:/opt/hadoop/173 * 在Node 1 上對遠端Node 2 作開資料夾/opt/hadoop及權限設定 174 {{{ 175 /opt/hadoop$ ssh node02 "sudo mkdir /opt/hadoop" 176 /opt/hadoop$ ssh node02 "sudo chown -R hadooper:hadooper /opt/hadoop" 177 }}} 178 179 * 複製Node 1 的hadoop資料夾到Node 2 上 180 {{{ 181 /opt/hadoop$ scp -r /opt/hadoop/* node02:/opt/hadoop/ 173 182 }}} 174 183 … … 176 185 177 186 178 * 以上我們已經安裝及設定好 Hadoop 的叢集環境,接著讓我們來啟動 Hadoop ,首先還是先格式化hdfs,在 node1上操作187 * 以上我們已經安裝及設定好 Hadoop 的叢集環境,接著讓我們來啟動 Hadoop ,首先還是先格式化hdfs,在Node 1 上操作 179 188 180 189 {{{ … … 187 196 /************************************************************ 188 197 STARTUP_MSG: Starting NameNode 189 STARTUP_MSG: host = Node_2_IP_Addr198 STARTUP_MSG: host = node02 190 199 STARTUP_MSG: args = [-format] 191 200 STARTUP_MSG: version = 0.18.3 … … 199 208 09/03/23 20:19:47 INFO dfs.NameNode: SHUTDOWN_MSG: 200 209 /************************************************************ 201 SHUTDOWN_MSG: Shutting down NameNode at Node_2_IP_Addr210 SHUTDOWN_MSG: Shutting down NameNode at node02 202 211 ************************************************************/ 203 212 }}} … … 207 216 * bin/start-dfs.sh腳本會參照namenode上${HADOOP_CONF_DIR}/slaves文件的內容,在所有列出的slave上啟動datanode。 208 217 209 * 在 node1上,執行下面的命令啟動HDFS:218 * 在Node 1 上,執行下面的命令啟動HDFS: 210 219 211 220 {{{ … … 215 224 216 225 ------ 217 * http:// Node_1_IP_Addr:50070/ - Hadoop DFS 狀態226 * http://node01:50070/ - Hadoop DFS 狀態 218 227 * [[Image(datanode.png)]] 219 228 ------ 220 229 221 * ps: 然而JobTracker還沒啟動,因此 http:// Node_2_IP_Addr:50030/ 網頁無法顯示230 * ps: 然而JobTracker還沒啟動,因此 http://node02:50030/ 網頁無法顯示 222 231 223 232 * bin/start-mapred.sh腳本會參照jobtracker上${HADOOP_CONF_DIR}/slaves文件的內容,在所有列出的slave上啟動tasktracker。 224 233 225 * 用ssh 操作 node2執行下面的命令啟動Map/Reduce:226 227 {{{ 228 /opt/hadoop$ ssh Node_2_IP_Addr"/opt/hadoop/bin/start-mapred.sh"234 * 用ssh 操作Node 2 執行下面的命令啟動Map/Reduce: 235 236 {{{ 237 /opt/hadoop$ ssh node02 "/opt/hadoop/bin/start-mapred.sh" 229 238 }}} 230 239 231 240 * 啟動之後, jobtracker也正常運作囉! 232 241 ------ 233 * http:// Node_2_IP_Addr:50030/ - Hadoop 管理介面242 * http://node02:50030/ - Hadoop 管理介面 234 243 * [[Image(job.png)]] 235 244 ------ … … 237 246 == step 10. 停止hadoop == 238 247 239 * 在 node1上,執行下面的命令停止HDFS:248 * 在Node 1 上,執行下面的命令停止HDFS: 240 249 {{{ 241 250 /opt/hadoop$ bin/stop-dfs.sh … … 243 252 * bin/stop-dfs.sh腳本會參照namenode上${HADOOP_CONF_DIR}/slaves文件的內容,在所有列出的slave上停止namenode 244 253 245 * 在 node1上,執行下面的命令停止Map/Reduce:254 * 在Node 1 上,執行下面的命令停止Map/Reduce: 246 255 {{{ 247 256 /opt/hadoop$ bin/stop-mapred.sh … … 251 260 == 練習 == 252 261 * 看 conf/hadoop-default.xml 的更多內容 253 * 和別人組隊,組成4台node的cluster,其中 node1 只當 namenode ,node2只當 jobtracker,而node3, node4 兩台電腦則身兼 datanode及tasktracker的工作。262 * 和別人組隊,組成4台node的cluster,其中Node 1 只當 namenode ,Node 2 只當 jobtracker,而node3, node4 兩台電腦則身兼 datanode及tasktracker的工作。