@2010/02/07,此篇是記錄從原先 0.18 版提升至 0.20 版的過程,若須由重頭安裝的,請參考以下兩篇:

下載位置:

從 0.18 版升到 0.20 版,順一次最初的 VMWare Image 檔,其為 0.18 版、CentOS,以下用 root 帳號操作:

  1. 更新軟體 (安裝軟體用 root 身份)
    • # yum -y install screen
    • 安裝 screen
      • # yum -y install screen
    • 安裝 lftp
      • # yum -y install lftp
    • 安裝 apache web server 和 php
      • # yum -y install httpd php
    • 設定 HTTPD
      • # vim /etc/httpd/conf/httpd.conf
    • 啟動 HTTPD
      • # /etc/init.d/httpd start
  2. 設定或建立 .screenrc (可用 hadoop身份)
    • # vim ~/.screenrc 加入一行即可
      • caption always "%{bw}%M/%d %c %{wb} %-w%{c}%n %t%{w}%+w%{k} %=%{G}[%H] %l%"

Hadoop 設定,以下用 hadoop 帳號操作:

  1. 抓 hadoop 0.20 至 hadoop 根目錄 (/home/hadoop, 即 hadoop 帳號登入的預設位置)
    • # wget http://apache.ntu.edu.tw/hadoop/core/hadoop-0.20.0/hadoop-0.20.0.tar.gz
  2. 解壓縮即安裝
    • # tar -xvf hadoop-0.20.0.tar.gz
  3. 切換至 hadoop-0.20.0 (之後的目錄都是指 hadoop-0.20.0)
    • # cd /home/hadoop/hadoop-0.20.0/
  4. 設定 hadoop-env.sh
    • # vim /home/hadoop/hadoop-0.20.0/conf/hadoop-env.sh 加入一行
      • export JAVA_HOME=/usr/lib/jre1.6.0_13

以上即完成單機版 hadoop 的環境,接著可以啟動跟查看目前所在目錄的資料夾與檔案

  1. # ./bin/start-all.sh
  2. # ./bin/hadoop dfs -ls

以下是設定 hadoop dfs 環境,使用 hadoop 身份

  1. 複製 hadoop 0.18 設定檔
    • # cp /home/hadoop/start-hadoop /home/hadoop/hadoop-0.20.0/
    • # cp /home/hadoop/stop-hadoop /home/hadoop/hadoop-0.20.0/
    • # cp /home/hadoop/conf/hadoop-site.tmp /home/hadoop/hadoop-0.20.0/conf
    • 並編輯 /home/hadoop/hadoop-0.20.0/start-hadoop 和 /home/hadoop/hadoop-0.20.0/stop-hadoop
      • 更新 Hadoophome="/home/hadoop" 為 Hadoophome="/home/hadoop/hadoop-0.20.0"
  2. 產生設定檔
    • 純粹用來產生 conf/hadoop-site.xml 資料, 但新版已不用此設定檔
      • # /home/hadoop/hadoop-0.20.0/start-hadoop
      • # /home/hadoop/hadoop-0.20.0/stop-hadoop
    • # cp conf/hadoop-site.xml conf/core-site.xml
    • # vim conf/core-site.xml
      •   <property>
            <name>fs.default.name</name>
            <value>hdfs://IP:9000</value>
          </property>
         <property>
            <name>mapred.job.tracker</name>
            <value>localhost:9002</value>
          </property>
         <property>
            <name>dfs.replication</name>
            <value>1</value>
          </property>

          <property>
            <name>hadoop.tmp.dir</name>
            <value>/tmp/hadoop-${user.name}</value>
            <description>A base for other temporary directories.</description>
          </property>
          <property>
            <name>dfs.name.dir</name>
            <value>${hadoop.tmp.dir}/dfs/name</value>
          </property>
          <property>
            <name>dfs.data.dir</name>
            <value>${hadoop.tmp.dir}/dfs/data</value>
          </property>

          <property>
            <name>dfs.http.address</name>
            <value>0.0.0.0:50070</value>
          </property>
          <property>
            <name>mapred.job.tracker.http.address</name>
            <value>0.0.0.0:50030</value>
          </property>

          <property>
            <name>dfs.datanode.address</name>
            <value>0.0.0.0:50010</value>
          </property>
          <property>
            <name>dfs.datanode.ipc.address</name>
            <value>0.0.0.0:50020</value>
          </property>
          <property>
            <name>dfs.datanode.http.address</name>
            <value>0.0.0.0:50075</value>
          </property>
          <property>
            <name>dfs.datanode.https.address</name>
            <value>0.0.0.0:50475</value>
          </property>
  3. 格式化 namenode (原先存在的資料將被清光)
    • # ./bin/hadoop namenode -format
  4. 啟動 hadoop 前修改 start-hadoop 檔
    • # vim /home/hadoop/hadoop-0.20.0/start-hadoop
      • 把第九行用 # 註解掉  ( #sed "s/\$hostip/$host_ip/g........ ) 不弄的話也沒關係, 只是會一直蹦訊息而已
  5. 接著就像 0.18 一樣正常操作了
    • [hadoop@hadoop hadoop-0.20.0]$ ./start-hadoop
      Starting Hadoop ...
      Job Admin: http://IP:50030/
      HDFS: http://IP:50070/
      [hadoop@hadoop hadoop-0.20.0]$ ./bin/hadoop dfs -ls
      ls: Cannot access .: No such file or directory.
      [hadoop@hadoop hadoop-0.20.0]$ ./bin/hadoop dfs -mkdir input
      [hadoop@hadoop hadoop-0.20.0]$ ./bin/hadoop dfs -ls
      Found 1 items
      drwxr-xr-x   - hadoop supergroup          0 2009-08-12 15:00
      /user/hadoop/input

錯誤訊息及修正:

  • list 可以有東西出來,但只要新增資料進去就會出錯,蹦一堆訊息,經過查詢發現是 datanode 沒有跑起來
    • # ./bin/hadoop dfs -ls
      • OK
    • # ./bin/hadoop dfs -put test .
      • ERROR
    • # ./bin/hadoop dfsadmin -report
      • 顯示 Datanodes available: 0 (0 total, 0 dead)
    • 解決方式, 是將原本 0.18 建立的 datanode 資訊砍掉重建, 即可處理,但將損失資料,最好請參考 Trouble Shooting 的解法 
      • # ./stop-hadoop
      • # rm /tmp/hadoop*
      • # ./bin/hadoop namenode -format
      • # ./start-hadoop
  • Trouble Shooting
    • If nameNode or file can not put into.
      • Better solution
        • # hadoop fsck
      • Worst solution (data will all lost)
        • # stop-all.sh
        • # rm -fr /fs/HDFS
        • # mkdir /fs/HDFS
        • # hadoop namenode -format
        • # start-all.sh
    • 如果dfs只能看到自已
      • 手動清掉所有node的hadoop tmp目錄(default: /tmp/hadoop-root)再重啟 dfs

changyy 發表在 痞客邦 PIXNET 留言(0) 人氣()