C++实现的GFS--分布式文件系统KosmosFS的编译和简单部署
KosmosFS像Hadoop HDFS一样,是google GFS的开源实现,不过KFS是C++语言写成,目前只支持linux和solaris系统。由于使用了C++开发,所以必然比HDFS在性能和稳定性上有先天优势,在研究其源码之前,先看看如何编译部署它吧。很繁琐,因为KFS依赖了大量的第三方软件,而C++既依赖于操作系统又在软件工程上比java差,所以编译安装它要做大量准备工作。今天抽空装了个KFS,写下过程。
首先可以到这里下载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
如果需要编译支持java的client包,还需要安装ant工具,有了yum就简单了,在build的上一层目录执行:
- yum install -y ant
- ant jar
下面我们可以部署KFS了,这点KFS做得很好,上面它依赖了xfs就是为了支持自动部署的。但是,这个自动部署(它也只支持自动部署)需要从安装机器能够无密码的ssh登录到目标机器。所以,我们也要安装个openssh:
- yum install -y openssh*
安装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
安装命令如下:
- scripts$ Python kfssetup.py -f machines.cfg -b ../build -w ../webui -s
- python kfslaunch.py -f machines.cfg --start
- ./kfsping -c -s localhost -p 30000
- Meta-server: localhost 20100
- Total-space: 5190.17 (MB)
- Used-space: 0 (MB)