最近看了一下
Kosmos File
System
(KFS),
目前的版是
0.2.1
。现在总结一下。
KFS
是一个克隆
GFS
的文件系统,用
C++
编写,客户端支持
C++,pyton
和
JAVA
。主要也是用来存储大文件的,其中的
chunk
相当于
Hadoop
中的
block
,每个
chunk
都为
64M.
一、编译
从
SourceForge
上下载的源代码之后,按照网站上的说明进行编译。编译用到的包包括
Boost,Cmake,log4cpp,gcc,zlib
,
ssl
。这后就可以创建
build
,进行编译了。其中需要注意的是网站所说的
gmake
其实
就是
make
命令(以前不懂
)
,还会用到
gtar
,其实就是
tar
命令,可以做一个链接
sudo
ln -s /bin/tar /bin/gtar
。
我 们需要用
java
客户端,很简单,只要在
kfs
的目录下执行
ant
jar
命令就可了。之后把生成的
jar
包导入到自己的
project
中就可了。同时需要把
kfs/build/lib
添加到系统变量
LD_LIBRARY_PATH
中去
,
当通到
JAVA
客户端访问
KFS
时,会用到这里的链接库。
二、发布
(
安装
)
KFS
的结构包含一个
Meta-Server(
相当时
Hadoop
中的
NameNode)
,和多个
ChunkServer(
相当于
Hadoop
中的
DataNode)
。
MetaServer
维护一个全局文件命名空间(
global
NameSpace)
,
ChunkServer
用来存储实际的数据。
在发布时,先编辑
kfs/scripts
下的
machines.cfg
,这个配置文件用来配置整个
DFS
中
metaserver
和
chunkserver
的属性。对于
MetaServer,
包括:
[metaserver]
node
:
用来指定
metaserver
应该运行在哪台机器上
rundir
:
指定
metaserver
应该安装在该
node
中的哪个位置。
baseport
:
指定
metaserver
所监听的端口
backup_path
:
指定用来备份
metaserver
的
checkpoint
的位置,通常与
metaserver
在不同的机器上,
kfs
会定期的用
rsync
命令来将
metaserver
的
checkpoint
文件备份到该变量指定的目录。
clusterkey
:
当
KFS
运行在集群中时,需要指定这个值,用来确定
metaserver
和
chunkserver
是属于哪一个集群。为了简单,这里可以指定为一个普通的字符串,如
clusterkey:kfs-cluster1
对于
chunkserver
[chunkserver1]
node
:
rundir
:
baseport
:
这三个和
metaserver
的概念是一样的。同时,
chunkserver
还有另外的两项
chunkDir
:
用来指定
kfs
的
chunk
存放的目录,即数据文件的存储目前。可以指定多个,以空格分开。
space
:
指定该
chunkserver
所提供的存储容量。
我的用测试的配置如下:
[metaserver]
node:
192.168.1.200
rundir:
/home/kfs/meta
baseport:
20000
backup_path:
192.168.1.201:/home/kfs/meta_back
clusterkey:
kfs-cluster1
[chunkserver1]
node:
192.168.1.202
rundir:
/home/kfs/chunk
baseport:
30000
chunkDir:
/home/kfs/chunk/bin/kfschunk1 /home/kfs/chunk/bin/kfschunk2
space:
20 G
[chunkserver2]
node:
192.168.1.203
rundir:
/home/kfs/chunk
baseport:
30000
chunkDir:
/home/kfs/chunk/bin/kfschunk1 /home/kfs/chunk/bin/kfschunk2
space:
20 G
KFS
是通过
ssh
和
scp
来将
metaserver
,
chunkserver
所需要的文件拷贝过去的,所以用于发布的机器,要能不需要输入密码就可以通过
ssh
连接到
metaserver
和
chunkserver
中去。
进入
fks/scripts
目录
,通过
python
kfssetup.py -f machines.cfg -b ../build
就可以安装
metaserver
和
chunkserver
了。
-f
用于指定配置文件
,
-b
用于指定
build
目录。
要想御载
kfs,
则执行
python kfssetup.py -f machines.cfg -b ../build/bin -U
之后通过
python kfslaunch.py -f
machines.cfg -s
就可以启动所有的
metaserver
和
chunkserver
了。
python
kfslaunch.py -f machines.cfg -S
用于关闭所有的
server.
在启动后,如想查看是滞启动成功,可用
kfs/build/bin/tools
下的
fksping
这个命令。
如要检查
metaserver
是否启动成功,则
kfsping -m -s 192.168.1.200 -p 20000
其中的
-m
指定要
ping
的是
metaserver
,
-s
指定
server
的
IP
,
-p
指定
server
的监听端口。
要检查
chunkserver1
是否启动成功,则:
kfsping -c -s 192.168.1.201 -p 30000
如果想单独关闭某个
chunkserver
,则可以在
chunkserver
中执行以下命令:
sudo scripts/kfsrun.sh -S -c -f bin/ChunkServer.prp
这样只会关闭这个
chunkserver
,而不影响其他
server.
关闭后重新启动:
scripts/kfsrun.sh
-s -c -f bin/ChunkServer.prp
三、通过
JAVA
访问
KFS
下载的包中,
examples
目录下有一个通
JAVA
使用的例子。
所有的对文件的操作都是通过KfsAccess这个类来完成的。最简单的创建 一个文件,并向其中写文件:
KfsAccess kfsAccess = new KfsAccess("192.168.1.200",20000);
KfsOutputChannel outputChannel = kfsAccess.kfs_create("testfile");;
int length = outputChannel.write(ByteBuffer.wrap("testdata".getBytes()));
outputChannel.sync();
outputChannel.close();
更多的API可参考examples下面的示例。有一点注意,各个metaserver、client都要有相互的DNS解析。
分享到:
相关推荐
- **Makefile**:构建脚本,指导编译和链接过程,使开发者能够轻松构建和测试KFS。 - **kfsdebug.c**:调试相关代码,帮助开发者在开发过程中追踪和定位问题。 - **readme.txt**:通常包含项目简介、使用指南和...
KFS-0.5版本可能包含相关的配置示例、源代码、编译脚本以及用户文档,帮助用户快速理解和部署系统。 **应用场景** KFS常用于大规模数据处理、数据分析、流媒体服务、日志存储等场景,其中大数据处理工具如Hadoop...
《mkfs.jffs2安装源码包详解》 mkfs.jffs2是一款用于创建JFFS2(Journal Flash File System version 2)文件系统的工具。JFFS2是针对闪存设备的一种日志文件系统,广泛应用于嵌入式系统和Linux环境,尤其在物联网...
Go语言是Google开发的一种静态类型、编译型的编程语言,以其简洁的语法、并发支持和跨平台能力而受到广泛的欢迎,这使得kfs具备了良好的性能和易用性。 在kfs的设计中,它采用了分片存储的方式,将大文件分割成多个...
2. **规则编译**:将定义好的规则编译成中间格式,以便于运行时解析和执行。 3. **规则执行**:通过Drools提供的API将事实(Fact)对象插入工作内存(Working Memory),触发规则匹配和执行。 #### 三、Drools的新...
在上面的代码中,我们首先构建了一个 KieFileSystem 来存储规则文件,然后通过 KieBuilder 编译规则。一旦没有错误,我们创建一个 KieContainer 和 KieSession。将 `Person` 对象插入工作内存后,调用 `fireAllRules...
对于一些依赖廉价商用硬件的分布式文件系统,如HDFS、KFS等,它们在用户态提供了开放接口,允许应用层直接与存储层通信。 用户态的存储开放接口,如Posix和私有协议接口,提供了一系列优点:用户态文件系统与操作...
- 不足:kfs_fuse太慢,不可用;编译依赖多,脚本简陋; - 应用场景:主要用于Hadoop生态系统。 - **OpenAFS/Coda** - OpenAFS - 特点:成熟稳定,支持多种操作系统平台; - 不足:性能不够好; - 应用场景:...
保存并加载KFs&MapPoints地图 添加pcl查看器 ################################ ORB-SLAM2 作者: , , 和 ( ) 2017年1月13日:现在支持OpenCV 3和Eigen 3.3。 2016年12月22日:添加了AR演示(请参见第7节)...