`
russelltao
  • 浏览: 157729 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

C++实现的GFS--分布式文件系统KosmosFS的编译和简单部署

 
阅读更多

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了。



分享到:
评论

相关推荐

    CCTC 2016 百度王耀-百度的分布式文件系统之路

    在2016年举办的中国云计算技术大会上,百度基础架构部架构师王耀分享了主题为“百度的分布式文件系统之路”的演讲,揭示了百度在分布式文件系统方面的探索和实践。以下是从会议文档中提取和总结的知识点: 1. ...

    GFS分布式文件系统

    - **设计初衷**:GFS(Google File System)是由Google设计并实现的一种分布式文件系统,旨在为大规模数据密集型应用提供一种可伸缩的解决方案。它通过运行在成本低廉的通用硬件上,不仅实现了灾难冗余能力,还能为...

    分布式文件系统 c++编写

    在这个场景下,"分布式文件系统 c++编写" 指的是一个用C++实现的分布式文件系统项目,可能是模仿或受到了Google的分布式文件系统GFS(Google File System)的启发。 GFS是Google为了处理大规模数据存储和处理而设计...

    分布式系统概念与设计(第五版)课后题答案

    - NFS(网络文件系统)和GFS(Google文件系统)的工作原理。 - HDFS(Hadoop分布式文件系统)的特点和架构。 6. **第六章:分布式命名服务** - DNS(域名系统)的层次结构和解析过程。 - 分布式命名服务的挑战...

    分布式文件系统-GFS1

    总的来说,GFS是为大规模、高性能的数据处理而设计的分布式文件系统,其核心在于通过简单的架构和精细的管理策略,实现对硬件故障的容忍、高效的文件操作和大数据的可靠存储。它在Google的众多服务中起到了关键作用...

    第九章-网络与分布式操作系统优秀文档.ppt

    例如,GFS(Google File System)和HDFS(Hadoop Distributed File System)是知名的分布式文件系统。 12. **动机与优势**:网络与分布式操作系统的主要动机包括资源共享、计算加速、负载均衡和提高系统可靠性。...

    分布式文件系统简要对比与分析.pdf

    本文将对比五种典型的分布式文件系统,包括HDFS、Ceph、MooseFS、GlusterFS和LustreFS,介绍其基本架构、数据分布和查询处理流程,然后对这些系统的优缺点进行分析,最后给出了在不同场景下如何对分布式文件系统进行...

    分布式文件系统综述.pdf

    分布式文件系统(Distributed File System, DFS)是计算机网络技术发展与个人计算机普及背景...未来,随着5G技术、物联网(IoT)的发展,分布式文件系统还将迎来新的挑战和机遇,其架构和实现机制也将不断完善和发展。

    分布式文件系统需求

    例如,Google的GFS(Google File System)和Facebook的Haystack都是知名的分布式文件系统,它们的成功实践为后来的HDFS等开源项目提供了灵感。 在实际部署和使用分布式文件系统时,我们需要考虑网络环境、硬件资源...

    GFS分布式文件系统实验包

    **GFS分布式文件系统实验包** GFS,全称为Google File System,是Google开发的一款分布式文件系统,主要用于处理大规模的数据存储和处理任务。这个实验包是针对GFS的一个学习资源,旨在帮助用户理解和掌握分布式...

    Hadoop分布式文件系统——翻译

    - **分布式名称空间**:一些分布式文件系统正在探索真正分布式的名字空间实现,例如Ceph和新一代的Google File System (GFS)。 - **性能优化**:随着硬件技术的进步和软件优化的不断推进,未来的HDFS将进一步提升其...

    分布式文件系统综述文档

    自20世纪70年代以来,分布式文件系统的发展经历了从早期的NFS(网络文件系统)到现代的StorageTank和Google File System (GFS)等多个阶段。这些系统在体系结构、规模、性能、可扩展性和可用性方面都有显著提升。...

    分布式文件系统试用比较

    在分布式文件系统中,元数据服务的实现方式会影响整个系统的性能和可靠性。例如,Google FileSystem采用中心化的元数据服务器模型,而MooseFS则支持多主元数据服务模型,以避免单点故障问题。 2. **故障转移群集与...

    04 Hadoop实现原理B - 分布式文件系统HDFS.pdf

    HDFS的设计受到了Google文件系统(GFS)的影响,其基本结构和设计思想与GFS保持一致。在探讨HDFS的实现原理之前,需要先了解文件系统的一般概念及其在分布式环境下的特殊需求。 文件系统是一种用于数据存储、检索和...

    Hadoop分布式文件系统的模型分析

    HDFS的设计理念源于Google的文件系统(Google File System, GFS),它是Google云计算基础设施的基础组成部分,为诸如MapReduce分布式计算模型和Bigtable分布式数据库等其他关键技术提供了底层支持。随着Hadoop项目的...

    GlusterFS分布式文件系统群集资源.rar

    "GlusterFS分布式文件系统群集.mp4"视频教程可能演示了如何部署和管理GlusterFS集群。通常,这会包括安装GlusterFS软件、配置节点间的信任关系、创建卷以及设置数据分布策略。节点如"node1"至"node4"代表了集群中的...

    分布式文件系统的一些论文

    分布式文件系统的实现和优化涉及到很多复杂的技术,如数据分片、元数据管理、一致性模型等。数据分片是将大文件拆分成小块并分散存储,便于并行访问和处理。元数据管理则负责跟踪文件位置、权限等信息,确保正确访问...

Global site tag (gtag.js) - Google Analytics