首先慶祝一下 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
接著就是編輯一下這兩個檔案的內容
/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 就可以了 !
參考:
(Storage_ID 為0)請問HDFS的啟動問題:http://forum.hadoop.tw/viewtopic.php?t=2199&p=4425
Automated Installation CD for Hadoop Cluster:https://github.com/jazzwang/haduzilla
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