淘了一臺二手Dell C1100玩:
CPU: L5639*2
MEM: 4GB*18
HDD: SATA 1G
簡單記錄一下部署過程:
1. 爲了給OpenStack打好基礎,選擇安裝rhel 6.4
下載完[紅帽企業Linux.6.4.服務器版].rhel-server-6.4-x86_64-dvd.iso,用ultralISO刻錄到U盤上安裝,由於是空機器,一路默認就好
2. 啓動系統,發現不能自動配置DNS和IP,手動配上(這裏有個坑,下面會提到)
3. 由於沒有licence,只能配置源centos的源,不過網上很多源都失效了,最後還是靠胖大人搞定
[base]
name=CentOS-5 - Base
#baseurl=http://ftp.redhat.com/redhat/linux/enterprise/6Server/en/os/SRPMS
baseurl=http://ftp.sjtu.edu.cn/centos/6.4/os/x86_64/
gpgcheck=0
enabled=1
4. 到hadoop官方站點上下載合適的版本,這裏選擇最新穩定版本1.2.1:
http://mirrors.cnnic.cn/apache/hadoop/common/hadoop-1.2.1/(給的默認鏡像太慢,還是選CNNIC比較快)
rpm或者tar.gz都很方便,建議新手下tar.gz,解壓後直接按照官方指南就能配置好使用:
http://hadoop.apache.org/docs/r1.2.1/single_node_setup.html(單機、僞分佈式)
http://hadoop.apache.org/docs/r1.2.1/cluster_setup.html (集羣)
三種方式的配置也可以參考hadoop權威指南的附錄A,有比較詳細的介紹
5. 以前用虛擬機跑過分佈式環境,以爲單機和僞分佈式也很簡單,結果job卡在reduce上遲遲完成不了,察看job的日誌提示reduce.Fetcher找不到map out的host:web30.bbn.com.cn,上網一查這個北京聯通的一個地址,當本地DNS找不到某個host的時候就會向上去請求更高層DNS,最後到聯通也不認識了就給這麼個host,真是坑爹==!由於DNS是手動配的,結果就載到這坑裏了。至於未知的host是哪來,還不得而知,據說和360等掃描局域網有關...解決方案有兩個:
打開防火牆:service iptables start
在/etc/hosts裏給web30.bbn.com.cn配上本機ip,再跑job順利完成。
6. mahout也裝最新版本:http://mirrors.cnnic.cn/apache/mahout/0.8/
下載tar.gz,本地解壓
測試比較簡單,完全參考官方指南即可:https://cwiki.apache.org/confluence/display/MAHOUT/Quickstart
需要注意的是如果沒配好HADOOP_HOME,運行examples會自動選擇單機模式,此時會把數據也下載到本地,如果再要使用hadoop模式,需要把數據手動從本地上傳導HDFS纔可跑起example job
這裏值得注意的是,單機模式和分佈式模式下跑出來的結果並不一樣,以分類爲例:
單機結果:
Statistics
-------------------------------------------------------
Kappa 0.8728
Accuracy 90.1657%
Reliability 85.6396%
Reliability (standard deviation) 0.2159
分佈式結果:
Statistics
-------------------------------------------------------
Kappa 0.8686
Accuracy 89.6502%
Reliability 85.1966%
Reliability (standard deviation) 0.2283
這可能是分佈式算法爲了能實現分佈式存儲和計算而做了一定的效果取捨,具體原因有待進一步研究