Changes between Version 20 and Version 21 of jazz/Hadoop_Lab3


Ignore:
Timestamp:
Mar 25, 2009, 11:51:53 PM (15 years ago)
Author:
waue
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • jazz/Hadoop_Lab3

    v20 v21  
    99== 前言 ==
    1010
    11  * 您手邊有兩台電腦,假設剛剛操作的電腦為node1,另一台則為node2。則稍後的環境如下
     11 * 您手邊有兩台電腦,假設剛剛操作的電腦為Node 1 ,另一台則為Node 2 。則稍後的環境如下
    1212 
    1313 || || '''管理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||
    1616 
    1717 * 這個實做會架設運作在叢集環境上的Hadoop,因此若是你的電腦還存在著之前的實做一的環境,請先作step 0,以移除掉之前的設定。
    1818
    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}}}
    2227
    2328=== 清除所有在實做一作過的環境 ===
    2429
    25  * node1 (有操作過實做一的電腦)執行
     30 * 在 Node 1  (有操作過實做一的電腦)上操作
    2631{{{
    2732~$ cd ~
     
    3136~$ rm -rf ~/.ssh
    3237}}}
    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
    3844{{{
    3945~$ /sbin/ifconfig
    4046}}}
    4147
    42  * edit /etc/hosts
     48 * 編輯 /etc/hosts 檔
     49
    4350{{{
    4451~$ 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
    5160~# exit
    5261}}}
    53 
     62 
    5463 == step 1. 設定兩台機器登入免密碼 ==
    5564 
    56  * 在node1上操作
     65 * 在Node 1 上操作
    5766 
    5867{{{
     
    6069~$ ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ""
    6170~$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
    62 ~$ scp -r ~/.ssh Node_2_IP_Addr:~/
    63 ~$ ssh Node_2_IP_Addr
     71~$ scp -r ~/.ssh node02:~/
     72~$ ssh node02
    6473~$ alias ssh='ssh -o "StrictHostKeyChecking no"'
    65 ~$ ssh Node_1_IP_Addr
     74~$ ssh node01
    6675~$ exit
    6776~$ exit
    6877}}}
    6978
    70  * 完成後請登入確認不用輸入密碼,(第一次登入需按 yes ,第二次就可以直接登入到系統),以免日後輸入密碼不手軟而已....
     79 * 完成後請登入確認不用輸入密碼,(第一次登入需按 yes ,第二次就可以直接登入到系統),以免日後輸入密碼不手軟而已....
    7180
    7281 == step 2. 安裝java ==
    7382
    7483 * 為兩台電腦安裝java
    75    * node1 & node2 都要操作以下指令
     84   * Node 1  & Node 2 都要操作以下指令
    7685{{{
    7786~$ sudo apt-get purge java-gcj-compat
     
    8089   
    8190
    82  == step 3. 下載安裝Hadoop到node1 ==
    83 
    84  * 先在node1上安裝,其他node的安裝等設定好之後在一起作
     91 == step 3. 下載安裝Hadoop到Node 1 ==
     92
     93 * 先在Node 1 上安裝,其他node的安裝等設定好之後在一起作
    8594
    8695{{{
     
    94103 == step 4. 設定 hadoop-env.sh ==
    95104 
    96  * node1上用gedit 編輯 conf/hadoop-env.sh
     105 * Node 1 上用gedit 編輯 conf/hadoop-env.sh
    97106
    98107{{{
     
    108117export HADOOP_HOME=/opt/hadoop
    109118export HADOOP_CONF_DIR=/opt/hadoop/conf
    110 export HADOOP_LOG_DIR=/home/hadooper/logs
    111 export HADOOP_PID_DIR=/home/hadooper/pids
     119export HADOOP_LOG_DIR=/tmp/hadoop/logs
     120export HADOOP_PID_DIR=/tmp/hadoop/pids
    112121}}}
    113122   * 注意,在此實做中,我們多設定了HADOOP_PID_DIR及HADOOP_LOG_DIR的參數,並且把值寫入到我們hadooper的家目錄中,此舉並非完全必要,但一個目的是介紹更多hadoop-env.sh內的參數,另一目的為讓log,pid等常變資料與hadoop家目錄分離
     
    128137  <property>
    129138    <name>fs.default.name</name>
    130     <value>hdfs://Node_1_IP_Addr:9000/</value>
     139    <value>hdfs://node01:9000/</value>
    131140    <description> </description>
    132141  </property>
    133142  <property>
    134143    <name>mapred.job.tracker</name>
    135     <value>Node_2_IP_Addr:9001</value>
     144    <value>node02:9001</value>
    136145    <description>  </description>
    137146  </property>
     
    144153}}}
    145154   * 注意! 我們多加了一個參數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://,一個沒有,重要!易混淆。
    147156   
    148157 == step 6. 設定masters及slaves ==
     
    153162/opt/hadoop$ gedit conf/slaves
    154163}}}
    155  原本內容只有localhost一行,請刪除此行並換上Node1及node2的ip
     164 原本內容只有localhost一行,請刪除此行並換上Node 1 及Node 2 的ip
    156165{{{
    157166#!sh
    158 Node_1_IP_Addr
    159 Node_2_IP_Addr
     167node01
     168node02
    160169}}}
    161170
    162171== step 7. Hadoop_Home內的資料複製到其他主機上 ==
    163172
    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/
    173182}}}
    174183
     
    176185
    177186
    178  * 以上我們已經安裝及設定好 Hadoop 的叢集環境,接著讓我們來啟動 Hadoop ,首先還是先格式化hdfs,在node1 上操作
     187 * 以上我們已經安裝及設定好 Hadoop 的叢集環境,接著讓我們來啟動 Hadoop ,首先還是先格式化hdfs,在Node 1 上操作
    179188 
    180189{{{
     
    187196/************************************************************
    188197STARTUP_MSG: Starting NameNode
    189 STARTUP_MSG:   host = Node_2_IP_Addr
     198STARTUP_MSG:   host = node02
    190199STARTUP_MSG:   args = [-format]
    191200STARTUP_MSG:   version = 0.18.3
     
    19920809/03/23 20:19:47 INFO dfs.NameNode: SHUTDOWN_MSG:
    200209/************************************************************
    201 SHUTDOWN_MSG: Shutting down NameNode at Node_2_IP_Addr
     210SHUTDOWN_MSG: Shutting down NameNode at node02
    202211************************************************************/
    203212}}}
     
    207216 * bin/start-dfs.sh腳本會參照namenode上${HADOOP_CONF_DIR}/slaves文件的內容,在所有列出的slave上啟動datanode。
    208217 
    209    * 在node1上,執行下面的命令啟動HDFS:
     218   * 在Node 1 上,執行下面的命令啟動HDFS:
    210219   
    211220{{{
     
    215224
    216225------
    217    * http://Node_1_IP_Addr:50070/ - Hadoop DFS 狀態
     226   * http://node01:50070/ - Hadoop DFS 狀態
    218227   * [[Image(datanode.png)]]
    219228------
    220229   
    221    * ps: 然而JobTracker還沒啟動,因此 http://Node_2_IP_Addr:50030/ 網頁無法顯示
     230   * ps: 然而JobTracker還沒啟動,因此 http://node02:50030/ 網頁無法顯示
    222231
    223232 * bin/start-mapred.sh腳本會參照jobtracker上${HADOOP_CONF_DIR}/slaves文件的內容,在所有列出的slave上啟動tasktracker。
    224233
    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"
    229238}}}
    230239
    231240 * 啟動之後, jobtracker也正常運作囉!
    232241------
    233    * http://Node_2_IP_Addr:50030/ - Hadoop 管理介面
     242   * http://node02:50030/ - Hadoop 管理介面
    234243   * [[Image(job.png)]]
    235244------
     
    237246== step 10. 停止hadoop ==
    238247
    239  * 在node1上,執行下面的命令停止HDFS:
     248 * 在Node 1 上,執行下面的命令停止HDFS:
    240249{{{
    241250/opt/hadoop$ bin/stop-dfs.sh
     
    243252   * bin/stop-dfs.sh腳本會參照namenode上${HADOOP_CONF_DIR}/slaves文件的內容,在所有列出的slave上停止namenode
    244253
    245  * 在node1上,執行下面的命令停止Map/Reduce:
     254 * 在Node 1 上,執行下面的命令停止Map/Reduce:
    246255{{{
    247256/opt/hadoop$ bin/stop-mapred.sh
     
    251260== 練習 ==
    252261 * 看 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的工作。