DRBL-based Cent OS 6.4 x64 設定 Java JDK-1.7.0.45 安裝 Hadoop-1.2.1

首先慶祝一下 2013 年 11 月 Blog.TWMAN.ORG 單月瀏覽再創新高 "8939 " 這樣 ! xD

 2013年10月:6064; 2013年09月:6027;2013年08月:5038; 2013年07月:4589

嗯 ... 那麼這個軟體我想應該不需要多解釋了 ... 隨便 Google 都一堆資料哩 !
至於我怎會想到這東西呢?故事應該是這樣開始的 ....
Hadoop-1.2.1

其實在好久之前當 Cloud Computing 開始夯時,一度想要好好研究這個東西,無奈一直沒有空好好的理解它,所以過去都是習慣採用人家已經做好的套件 ...

EX: 應用 Crawlzilla 和 DRBL 到 F102@ILT

但是因為最近比較有時間,剛好想自己動手刻一個適合自己使用的雲端叢集 ... 然後就 ...

總而言之就是這樣開始給它動工了 ... 首先 ! 我打算透過 DRBL-based ... 所以要先安裝好 DRBL

關於這個動作可以參考 DRBL 官網 或者是我陸續試過的文章 ....

***** 我安裝的是 drbl-2.4.17-drbl1.noarch.rpm *****
http://ftp.twaren.net/local-distfiles/drbl-core/x86_64/RPMS.drbl/drbl-2.4.17-drbl1.noarch.rpm

我的 OS 是 Cent OS 6.4 x86_64 核心是  2.6.32-358.18.1.el6.x86_64 

(安裝設定) 異質惡意程式行為分析架構-Heterogeneous Malware Behavior Analysis Architecture
應用 DRBL 和 CloneZilla 到 F102@ILT   或者是直接看全部  http://blog.twman.org/search/label/DRBL

接著第一個動作就是安裝


Java-1.7.0-openjdk-1.7.0.45.x86_64
# yum list \*java-1\* | grep open
# yum install java-1.7.0-openjdk.x86_64 -y
# yum install java-1.7.0-openjdk-devel.x86_64 -y


接著就是編輯一下這兩個檔案的內容

# vi /etc/java/java.conf (把原檔內 JAVA_HOME=$JVM_ROOT/java 前的 # 移除)

/etc/profiles 底下新增 ( 特別是 JAVA_HOME 很重要的 )

JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.45.x86_64/
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib
export PATH JAVA_HOME CLASSPATH


JAVA 在 " 大數據 Solr 4.5.1 with Tomcat6 on CentOS 6.4 x64 " 裡也是很重要的東西 !

安裝好了以後接著就是準備來安裝 Hadoop 了 ... 過程很簡單,所以我先整個列出來,然後再針對每個錯誤的地方來做說明解釋 ....

1. 新增 hadoop 使用者以及群組並切換為 hadoop
# useradd hadoop
# passwd hadoop
# chown -R hadoop:hadoop hadoop
# su - hadoop

2. 下載 及解壓縮 hadoop-1.2.1.tar.gz
$ wget https://www.apache.org/dist/hadoop/core/hadoop-1.2.1/hadoop-1.2.1.tar.gz
$ tar -zxf hadoop-1.2.1.tar.gz

3. 編輯 hadoop 相關設定檔 (黃底是特別重要的)
$ ls hadoop-1.2.1/conf/
capacity-scheduler.xml  hadoop-metrics2.properties  mapred-site.xml         taskcontroller.cfg
configuration.xsl       hadoop-policy.xml           masters                 task-log4j.properties
core-site.xml           hdfs-site.xml               slaves
fair-scheduler.xml      log4j.properties            ssl-client.xml.example
hadoop-env.sh           mapred-queue-acls.xml       ssl-server.xml.example


    <property>
        <name>fs.default.name</name>
        <value>hdfs://192.168.0.100:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/var/hadoop/tmp-${user.name}</value>
    </property>

fs.default.name 是用來指定你的 server 端的 IP (或者用 hostname),在這邊要注意的是編輯你的 /etc/hosts 檔案,讓它只存在 "IP hostname" 這樣的格式,建議刪掉 localhost 以及 127.0.0.1,以我為例就是像這樣:

192.168.0.100 KVM.TWMAN.ORG
192.168.0.1 KVM101
192.168.0.2 KVM102
192.168.0.3 KVM103

不然會出現像這樣的 error
Call to localhost/127.0.0.1:9000 failed on connection exception: java.net.ConnectException: 連線被拒絕

hadoop.tmp.dir 是用來指定你的 hadoop 的 資料夾,因為是使用 DRBL,所以如果把這個設定在 /home/hadoop 底下會造成全部都是同一個資料夾 .... 設在 /var/hadoop/tmp-${user.name} 是因為 DRBL 的 /var 資料夾是各自獨立的


    <property>
            <name>mapred.job.tracker</name>
            <value>192.168.0.100:9001</value>
    </property>

    <property>
    <name> mapred.map.tasks</name>
            <value> 1</value>
            <description> … </description>
    </property>

    <property>
    <name> mapred.reduce.tasks</name>
            <value> 1</value>
            <description> … </description>
    </property>


這行則跟上面講的一樣,我還是使用 IP,你也可以使用 hostname,但記得要全部機器都一樣


    <property>
            <name>dfs.replication</name>
            <value>2</value>
    </property>
最後這個就比較簡單了 ... 然後我不知道要怎樣解釋它 ! xD
這時請再編輯一下 conf/master 以及 conf/slave 把你全部機器的 hostname 分別填入吧 !

4. 最後就是設定一下設置自動對時
# chkconfig ntpd on
# ntpdate cn.pool.ntp.org

到這邊之後,差不多就是可以再回到 root 然後再下一次 # drblpush -c /etc/drblpush.conf,然後上面的三個設定檔就會因為 DRBL 的關係直接全部 copy 一份到 client 了 !

5. 設置 ssh 免密碼登入以及關閉 iptables

這邊就是直接切換到 hadoop 後,做 $ ssh-keygen 這樣的動作,然後做 ssh-copy-id ;還有在 root 底下關閉 # service iptables stop

6. 格式化 HDFS

$ hadoop-1.2.1/bin/hadoop namenode -format

基本上會像下面這樣的畫面

最後就是準備把全部的 Clients 都喚醒 ... 然後啟用 Hadoop 吧

$ hadoop-1.2.1/bin/start-all.sh
然後看一下這兩個頁面吧 !

http://Your IP:50070 跟 http://Your IP:50030

 如果一切平安順利那你應該會看到這樣的畫面 ....
最後試試能不能使用吧 ! 實做四: Hadoop 程式編譯:


剩下的就是準備等我最近再好好玩一下 nutch-1.6 及 Solr-4.5 還有 Mahout 0.8
NO ! 其實這次總計花了我大概 20 個小時有吧 ... 這邊當然要補充說明一下最後一個錯誤訊息怎解

Writing to file hdfs://192.168.0.100:9000/var/hadoop/hadoop-hadoop/mapred/system/jobtracker.info failed!

這個可能是因為我是使用 DRBL 的關係可能在 Client 端下 cat /var/hadoop/tmp-hadoop/dfs/data/current/VERSION 時看到 storageID 會是空的,這時請自己補上每台機器的 hostname 便可,同時這個也就是 50030 一直處於 INITIALIZING 很可能是因為 JobTracker 沒有辦法寫入 HDFS ...

#Fri Dec 06 01:24:56 CST 2013
namespaceID=231503482
storageID=KVM107
cTime=0
storageType=DATA_NODE
layoutVersion=-41


2013/12/07: TAAI 2013 (政治大學) 題外話補充說明
透過 DRBL 新增只要編輯 Server 上的 slave,新增 Client 的 hostname,接著在 Server 上 format hdfs,然後幫新增的 client 裡的 VERSION 檔加上 storage_ID,以及 注意原本已有的 Client 裡的 namespace 就可以了 !

參考:

Error Reference:
Hadoop在master查看live nodes为0解决方案:http://blog.csdn.net/shenlan211314/article/details/7414728
請教Hadoop起動後的問題?(已決解了,感謝jazz的指導):http://forum.hadoop.tw/viewtopic.php?f=4&t=90&view=next
請問HDFS的啟動問題:http://forum.hadoop.tw/viewtopic.php?t=2199&p=4425
ipc.Client: Retrying connect to server错误解决方案:http://blog.verypod.com/ipc-client-retrying-connect-to-server/
贴一个我遇到的hadoop错误【已解决】:http://hi.baidu.com/xiaomi/item/49d16a90720d16f629164727
[Hadoop] data node無法正常啟動:http://ciner945.pixnet.net/blog/post/30227542-%5Bhadoop%5D-data-node無法正常啟動

Reference:
Deploy Hadoop to PC Classroom using DRBL:http://trac.nchc.org.tw/grid/wiki/jazz/DRBL_Hadoop
探究Hadoop(一):CentOS6.4下Hadoop分布式安装:http://www.cryse.org/programming/centos6-4-hadoop-configuration
Centos6.4 +Hadoop1.2.1集群配置:http://pizibaidu.blog.51cto.com/1361909/1318684
[ 深入雲計算 ] Hadoop 的安裝和配置: Linux 配置 1 NameNode + 2 DataNode:http://puremonkey2010.blogspot.tw/2013/10/hadoop-linux-1-namenode-2-datanode.html
Hadoop安裝與設定:http://scar.simcz.tw/article/2013/08/13/hadoop-install-and-setup/
Hadoop cluster 超簡潔安裝分享:http://heartfairway.blogspot.tw/2013/09/hadoop-cluster.html