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为了处理大规模数据存储和处理而设计...
GFS 的设计和实现对分布式文件系统的发展产生了深远的影响。 在设计 GFS 时,Google 的工程师们面临着许多挑战,例如: 1. 如何提供灾难冗余的能力? 2. 如何处理大量的数据访问请求? 3. 如何实现高性能的存储? ...
从早期的NFS到如今的Hadoop HDFS和S3,分布式文件系统经历了从简单的资源共享到复杂的数据处理流程的变化。通过对比不同分布式文件系统的特点和技术实现,我们可以更深入地理解这一领域的技术发展脉络。未来,随着...
- NFS(网络文件系统)和GFS(Google文件系统)的工作原理。 - HDFS(Hadoop分布式文件系统)的特点和架构。 6. **第六章:分布式命名服务** - DNS(域名系统)的层次结构和解析过程。 - 分布式命名服务的挑战...
总的来说,GFS是为大规模、高性能的数据处理而设计的分布式文件系统,其核心在于通过简单的架构和精细的管理策略,实现对硬件故障的容忍、高效的文件操作和大数据的可靠存储。它在Google的众多服务中起到了关键作用...
例如,GFS(Google File System)和HDFS(Hadoop Distributed File System)是知名的分布式文件系统。 12. **动机与优势**:网络与分布式操作系统的主要动机包括资源共享、计算加速、负载均衡和提高系统可靠性。...
- 随着大数据时代的到来,出现了像Google File System (GFS) 和 Hadoop Distributed File System (HDFS)这样的分布式文件系统,它们专门针对大规模数据处理进行了优化。 - 这些DFS能够支持PB级的数据存储,并且...
本文将对比五种典型的分布式文件系统,包括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"代表了集群中的...
分布式文件系统的实现和优化涉及到很多复杂的技术,如数据分片、元数据管理、一致性模型等。数据分片是将大文件拆分成小块并分散存储,便于并行访问和处理。元数据管理则负责跟踪文件位置、权限等信息,确保正确访问...