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了。
分享到:
相关推荐
HBase 是 Google Bigtable 的开源实现,类似 Google Bigtable 利用 GFS 作为其文件存储系统,HBase 利用 Hadoop HDFS 作为其文件存储系统。 HBase 技术介绍 ---------------- HBase 是一个高可靠性、高性能、面向...
例如,Hadoop包之间依赖关系复杂,这是因为HDFS提供了一个分布式文件系统的API,该API需要屏蔽本地文件系统和分布式文件系统之间的差异,甚至可以兼容在线存储系统,比如Amazon S3。这种抽象层次导致了在分布式文件...
- **Lustre/GFS/AFS**:分布式文件系统。 #### 进程间多线程共享资源 - **共享资源**:堆(全局堆)、全局变量、静态变量、文件等。 - **独享资源**:栈、寄存器、局部堆。 #### 数据结构 - **逻辑结构**:反映...
10. **实验与项目**:通过实际编程项目,如构建分布式文件系统或实现一致性哈希,巩固理论知识并提升实践能力。 课程中,学生将接触到各种分布式系统的真实案例,通过对这些案例的研究,能更好地理解和应用所学知识...
Impala 是参照谷歌的新三篇论文(Caffeine、Pregel、Dremel)中的 Dremel 实现而来,其中旧三篇论文分别是(BigTable、GFS、MapReduce)分别对应我们即将学的 HBase 和已经学过的 HDFS 以及 MapReduce。 Impala 是...
在Windows环境下使用Eclipse调试Hadoop云计算环境,是一项结合了多种技术领域的高级操作,涉及到操作系统、集成开发环境、云计算框架以及分布式系统等多个方面。本文将深入解析这一过程中的关键知识点,帮助读者理解...