C++實現的GFS--分布式文件系統KosmosFS的編譯和簡單部署

fmms 13年前發布 | 32K 次閱讀 分布式 分布式/云計算/大數據

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

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!