KFS是GFS的一个C++开源实现,基本原理可以参考中文版[url]http://www.codechina.org/doc/google/gfs-paper/introduction.html[/url],英文版[url]http://labs.google.com/papers/gfs-sosp2003.pdf[/url]
源码下载地址:[url]http://sourceforge.net/projects/kosmosfs/[/url]
KFS与HDFS的区别:[url]http://blog.youkuaiyun.com/cloudeep/archive/2009/08/20/4467238.aspx[/url]
源码下载下来之后在doc下有个COMPILING文档,照这上面的写的安装就行。
编译的时候有可能会遇到几个问题:
1.在cmake 之后找不到java路径,解决方法[color=#555555][font=Georgia][size=12px]在CMakeLists.txt在110行左右的位置添上Java路径,注意文件夹的路径根据不同机器可能要更改。
SET(JAVA_INCLUDE_PATH "/usr/lib/jvm/java-6-sun/include")
SET(JAVA_INCLUDE_PATH2 "/usr/lib/jvm/java-6-sun/include/linux")[/size][/font][/color]
2.make之后,在src/cc/common/properties.h提示error:[i]uint64_t[/i]' does [i]not[/i] name a type,解决方法:在properties.h里添加#include <stdint.h>
3.在src/cc/libkfsIO/IOBuffer.h提示error:'[i]EOF[/i]' was [i]not declared[/i] in this scope,解决方法:在IOBuffer.h里添加个#include <cstdio>
4在启动的时候没有启动起来,请在kfslauch.py的倒数第十行左右[p=30, 2, left]
cmd = "ssh-o StrictHostKeyChecking=no %s 'cd %s; scripts/kfsrun.sh %s %s ' " %/ 在scripts/kfsrun.sh的前面添加sh.[/p]
5找不到xfs/xfs.h,安装yum -y install xfsprogs xfsprogs-devel
编译客户端:
我是这么编的:创建了一个client文件夹,下面包含lib,include,main三个文件夹,将build下的lib拷到client下,将src/cc/下的 common和libkfsClient文件夹拷到include下,将examples/KfsSample_main
拷到client/main下,并更名为main.cc,在main.cc的[font=宋体][size=10.5pt]doMkdirs(basedir)[/size][/font]位置中的basedir,改为basedir.c_str()
最后敲入g++ -g -o -D_FILE_OFFSE_BITS=64 main main.cc -I./../include -L./../lib/static -lkfsClient -lkfsCommon -llog4cpp -lpthread -lssl -lkfsIO -lrt