C++實現的GFS--分布式文件系統KosmosFS的編譯和簡單部署
KosmosFS像Hadoop HDFS一樣,是google GFS的開源實現,不過KFS是C++語言寫成,目前只支持linux和solaris系統。由于使用了C++開發,所以必然比HDFS在性能和穩定性上有先天優勢,在研究其源碼之前,先看看如何編譯部署它吧。很繁瑣,因為KFS依賴了大量的第三方軟件,而C++既依賴于操作系統又在軟件工程上比java 差,所以編譯安裝它要做大量準備工作。今天抽空裝了個KFS,寫下過程。
首先可以到http://code.google.com/p/kosmosfs/downloads/list上下載0.5版本的源碼。我的Linux版本是CentOS 5.3 Final,linux kernel版本是2.6.18,大家可以參考。
這個項目依賴的東東非常多,強烈建議一定要裝yum工具,減少我們的工作量。必須預先安裝哪些包呢?列一下:
openssl
openssl-devel
xfsprogs
xfsprogs-devel
e2fsprogs
e2fsprogs-devel
log4cpp
boost
boost-devel
大家執行下yum install -y [上面的包名],把以上必須裝的包先裝好。然后我們開始編譯kosmosFS。假定我們把源碼放在~/code/kfs目錄下。
cd ~/code/kfs mkdir build cd build cmake -D CMAKE_BUILD_TYPE=RelWithDebInfo ~/code/kfs/ make make install如果以上步驟都沒有錯誤,將會在build目錄下生成bin和lib目錄。
如果需要編譯支持java的client包,還需要安裝ant工具,有了yum就簡單了,在build的上一層目錄執行:
yum install -y ant ant jar檢查是否生成了build/kfs-0.5.jar 和build/class目錄,確認是否成功。
下面我們可以部署KFS了,這點KFS做得很好,上面它依賴了xfs就是為了支持自動部署的。但是,這個自動部署(它也只支持自動部署)需要從安裝機器能夠無密碼的ssh登錄到目標機器。所以,我們也要安裝個openssh:
yum install -y openssh*當A機器需要無密碼的訪問B機器時,我們需要先在B機器上用ssh-keygen -t rsa命令生成公匙id_rsa.pub,然后拷貝到A機器相應用戶的.ssh目錄下,覆蓋authorized_keys文件。之后就不用再輸入ssh 密碼了,這樣我們的安裝程序可以往下走了。
安裝kfs一般只需要準備好一個文件即可,我們進入kfs/scripts目錄,建立machines.cfg文件,文件內容可以如下:
[metaserver] node: localhost rundir: /home/leon/kfsRun/meta baseport: 20000 clusterkey: test-cluster [chunkserver1] node: localhost rundir: /home/leon/kfsRun/chunk1 baseport: 30000 space: 10 G [chunkserver2] node: localhost rundir: /home/leon/kfsRun/chunk2 baseport: 40000 space: 10000 M這樣就只有一個node結點,chunk和meta都在這個server上。必須保證ssh登陸本機也是無密碼的,KFS沒那么智能,安裝本機也會試圖ssh本機的。
安裝命令如下:
scripts$ python kfssetup.py -f machines.cfg -b ../build -w ../webui -s成功后啟動命令如下:
python kfslaunch.py -f machines.cfg --start查看運行狀態可以到kfs/build/bin/tools目錄下,執行:
./kfsping -c -s localhost -p 30000查看指定IP和端口上的服務是否正常。結果類似下面:
Meta-server: localhost 20100 Total-space: 5190.17 (MB) Used-space: 0 (MB)這樣一個最簡單的KFS就已經部署成功了。研究其源碼的話,可以在這上面gdb了。
來自: http://blog.csdn.net/russell_tao/article/details/7207093