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了。
分享到:
相关推荐
在2016年举办的中国云计算技术大会上,百度基础架构部架构师王耀分享了主题为“百度的分布式文件系统之路”的演讲,揭示了百度在分布式文件系统方面的探索和实践。以下是从会议文档中提取和总结的知识点: 1. ...
- **设计初衷**:GFS(Google File System)是由Google设计并实现的一种分布式文件系统,旨在为大规模数据密集型应用提供一种可伸缩的解决方案。它通过运行在成本低廉的通用硬件上,不仅实现了灾难冗余能力,还能为...
在这个场景下,"分布式文件系统 c++编写" 指的是一个用C++实现的分布式文件系统项目,可能是模仿或受到了Google的分布式文件系统GFS(Google File System)的启发。 GFS是Google为了处理大规模数据存储和处理而设计...
- NFS(网络文件系统)和GFS(Google文件系统)的工作原理。 - HDFS(Hadoop分布式文件系统)的特点和架构。 6. **第六章:分布式命名服务** - DNS(域名系统)的层次结构和解析过程。 - 分布式命名服务的挑战...
总的来说,GFS是为大规模、高性能的数据处理而设计的分布式文件系统,其核心在于通过简单的架构和精细的管理策略,实现对硬件故障的容忍、高效的文件操作和大数据的可靠存储。它在Google的众多服务中起到了关键作用...
例如,GFS(Google File System)和HDFS(Hadoop Distributed File System)是知名的分布式文件系统。 12. **动机与优势**:网络与分布式操作系统的主要动机包括资源共享、计算加速、负载均衡和提高系统可靠性。...
本文将对比五种典型的分布式文件系统,包括HDFS、Ceph、MooseFS、GlusterFS和LustreFS,介绍其基本架构、数据分布和查询处理流程,然后对这些系统的优缺点进行分析,最后给出了在不同场景下如何对分布式文件系统进行...
分布式文件系统(Distributed File System, DFS)是计算机网络技术发展与个人计算机普及背景...未来,随着5G技术、物联网(IoT)的发展,分布式文件系统还将迎来新的挑战和机遇,其架构和实现机制也将不断完善和发展。
例如,Google的GFS(Google File System)和Facebook的Haystack都是知名的分布式文件系统,它们的成功实践为后来的HDFS等开源项目提供了灵感。 在实际部署和使用分布式文件系统时,我们需要考虑网络环境、硬件资源...
**GFS分布式文件系统实验包** GFS,全称为Google File System,是Google开发的一款分布式文件系统,主要用于处理大规模的数据存储和处理任务。这个实验包是针对GFS的一个学习资源,旨在帮助用户理解和掌握分布式...
- **分布式名称空间**:一些分布式文件系统正在探索真正分布式的名字空间实现,例如Ceph和新一代的Google File System (GFS)。 - **性能优化**:随着硬件技术的进步和软件优化的不断推进,未来的HDFS将进一步提升其...
自20世纪70年代以来,分布式文件系统的发展经历了从早期的NFS(网络文件系统)到现代的StorageTank和Google File System (GFS)等多个阶段。这些系统在体系结构、规模、性能、可扩展性和可用性方面都有显著提升。...
在分布式文件系统中,元数据服务的实现方式会影响整个系统的性能和可靠性。例如,Google FileSystem采用中心化的元数据服务器模型,而MooseFS则支持多主元数据服务模型,以避免单点故障问题。 2. **故障转移群集与...
HDFS的设计受到了Google文件系统(GFS)的影响,其基本结构和设计思想与GFS保持一致。在探讨HDFS的实现原理之前,需要先了解文件系统的一般概念及其在分布式环境下的特殊需求。 文件系统是一种用于数据存储、检索和...
HDFS的设计理念源于Google的文件系统(Google File System, GFS),它是Google云计算基础设施的基础组成部分,为诸如MapReduce分布式计算模型和Bigtable分布式数据库等其他关键技术提供了底层支持。随着Hadoop项目的...
"GlusterFS分布式文件系统群集.mp4"视频教程可能演示了如何部署和管理GlusterFS集群。通常,这会包括安装GlusterFS软件、配置节点间的信任关系、创建卷以及设置数据分布策略。节点如"node1"至"node4"代表了集群中的...
分布式文件系统的实现和优化涉及到很多复杂的技术,如数据分片、元数据管理、一致性模型等。数据分片是将大文件拆分成小块并分散存储,便于并行访问和处理。元数据管理则负责跟踪文件位置、权限等信息,确保正确访问...