KFS编译和安装

2024-02-02 09:18
文章标签 编译 安装 kfs

本文主要是介绍KFS编译和安装,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近看了一下 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这个类来完成的。最简单的创建 一个文件,并向其中写文件:

Java代码 复制代码
  1. <SPAN>KfsAccess kfsAccess = new KfsAccess("192.168.1.200",20000);   
  2. KfsOutputChannel outputChannel = kfsAccess.kfs_create("testfile");;   
  3. int length = outputChannel.write(ByteBuffer.wrap("testdata".getBytes()));   
  4. outputChannel.sync();   
  5. outputChannel.close();</SPAN>  
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解析。

这篇关于KFS编译和安装的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/670224

相关文章

如何在pycharm安装torch包

《如何在pycharm安装torch包》:本文主要介绍如何在pycharm安装torch包方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录在pycharm安装torch包适http://www.chinasem.cn配于我电脑的指令为适用的torch包为总结在p

在PyCharm中安装PyTorch、torchvision和OpenCV详解

《在PyCharm中安装PyTorch、torchvision和OpenCV详解》:本文主要介绍在PyCharm中安装PyTorch、torchvision和OpenCV方式,具有很好的参考价值,... 目录PyCharm安装PyTorch、torchvision和OpenCV安装python安装PyTor

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

如何解决mmcv无法安装或安装之后报错问题

《如何解决mmcv无法安装或安装之后报错问题》:本文主要介绍如何解决mmcv无法安装或安装之后报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mmcv无法安装或安装之后报错问题1.当我们运行YOwww.chinasem.cnLO时遇到2.找到下图所示这里3.

Python 安装和配置flask, flask_cors的图文教程

《Python安装和配置flask,flask_cors的图文教程》:本文主要介绍Python安装和配置flask,flask_cors的图文教程,本文通过图文并茂的形式给大家介绍的非常详细,... 目录一.python安装:二,配置环境变量,三:检查Python安装和环境变量,四:安装flask和flas

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa