
KosmosFS
文章平均质量分 63
turinglife
家中带娃,闲着没事,记录点小东西。
展开
-
kfs代码研究(磁盘异步IO)
磁盘IO在[qcdio/qcdiskqueue.h]和[qcdio/qcdiskqueue.cc]中实现,基于线程池和消费者/生产者模型。在这两个源文件中实现了基于成块读写的异步磁盘IO。[qcdio/qcdiskqueue.cpp] class QCDiskQueue::Queue,实现了磁盘文件的异步IO。文件读写的单位是块(支持direct-io)。它会启动给定数量(inThread转载 2012-02-21 00:14:09 · 496 阅读 · 0 评论 -
分布式文件系统KFS源码阅读与分析(三):RPC实现机制(MetaServer端)
分布式文件系统KFS的MetaServer和Client采用服务器/客户端模型,MetaServer和Client之间的通讯是通过RPC机制来实现的。这里介绍下KFS中MetaServer端的RPC实现机制。1. RPC相关类下图所示为MetaServer端的RPC相关实现类:1、NetDispatch(1)启动MetaServe转载 2012-02-20 18:29:44 · 1070 阅读 · 0 评论 -
kfs代码研究(七、网络部分)
与网络异步IO关联的类有5个:[libkfsIO/NetManager.h] clsss NetManager;[libkfsio/NetConnection.h] class NetConnection;[libkfsio/NetConnection.h] class NetConnection::NetManagerEntry;[libkfsio/TcpSocket.h] cl转载 2012-02-21 00:13:45 · 644 阅读 · 0 评论 -
kfs代码研究(六、ChunkManager分析)
ChunkManager.cc:ChunkManager主要是对chunk操作的具体实现。ChunkManager::WriteChunk:1、计算要写的数据长度+chunk已经使用的量是否超过了一个chunk的大小,如果超过则截断2、如果要写入的长度大于64k,则写入的长度必须有64k的整数倍3、如果写入长度小于64k,则读取从当前偏移量开始64k的数据,计算校验和。(这个逻转载 2012-02-21 00:13:15 · 649 阅读 · 0 评论 -
kfs代码研究(五、chunk server处理流程)
ChunkServer_main.cc:这个是chunkserver的主函数,处理流程如下1、computeMD5()计算二进制文件的md5值2、gChunkServer.Init()初始化ChunkServer对象,主要是设置ip和端口3、gChunkManager.Init初始化ChunkManager对象,主要是计算chunk目录的总可用空间,使用量,剩余量等信息4、gM转载 2012-02-21 00:12:49 · 609 阅读 · 0 评论 -
kfs代码研究(四、LayoutManager分析)
LayoutManager.cc:介绍几个主要的函数LayoutManager::AddNewServer:添加新chunk server到chunk server的数组中1、如果发现chunkserver数组中和新加入到server相同,调用ServerDown把老的标志为down2、ServerDown会更新rank数组的信息3、接着吧chunk server信息放转载 2012-02-20 18:41:06 · 430 阅读 · 0 评论 -
分布式文件系统KFS源码编译与安装过程
Kosmos distributed file system (KFS)是一个专门为数据密集型应用(搜索引擎,数据挖掘等)而设计的存储系统,类似于Google的GFS和Hadoop的HDFS分布式文件系统。 KFS使用C++实现,支持的客户端包括C++,Java和Python。以前曾在开源KFS基础上做过开发,这里介绍一下如何进行KFS的源码编译与安装过程(以kfs-0.5为例)。转载 2012-02-20 18:28:23 · 929 阅读 · 0 评论 -
分布式文件系统KFS源码阅读与分析(二):MetaServer元数据持久化
KFS文件系统的MetaServer元数据的持久化采用的是checkpoint + log方式,下面将结合其源码,对KFS MetaServer中元数据的持久化机制及其实现细节进行分析。1. 相关源码文件KFS MetaServer元数据持久化所涉及的代码所在目录为kfs-[version]/src/cc/meta,其中,KFS元数据持久化的相关源码如下:(1)meta/statup.转载 2012-02-20 18:26:23 · 784 阅读 · 0 评论 -
分布式文件系统KFS源码阅读与分析(四):RPC实现机制(KfsClient端)
上一篇博客介绍了KFS中RPC实现机制MetaServer端的实现,下面接着介绍一下KfsClient端的实现框架。KfsClient是为应用程序暴露的接口类,它是在应用程序代码和KFS Servers(MetaServer和Chunkserver)之间起着桥梁的作用,对于一个MetaServer,只能有一个KfsClient。KfsClientFactory单态工厂类负责为不同的Meta转载 2012-02-20 18:30:31 · 927 阅读 · 0 评论 -
分布式文件系统KFS基础知识介绍
Kosmos distributed file system,简称KFS,是一个类GFS的分布式文件系统,被设计用于分布式的结构化存储。下面将对KFS的体系结构进行简单介绍,最后给出一个使用KFS C++ API的示例。1. KFS体系结构KFS和GFS的整体结构类似,图中所示为GFS的体系结构图(来自于Sanjay Ghemawat, Howard Gobioff, and Sh转载 2012-02-20 18:29:09 · 2365 阅读 · 0 评论 -
kfs代码研究(三、meta server具体消息处理)
Request.cc:这个文件实现了每个命令具体的操作ParseCommand:根据命令字查找处理函数parseHandlerLookup、parseHandlerLookupPath、parseHandlerCreate、parseHandlerRemove、parseHandlerMkdir、parseHandlerRmdir、parseHandlerReaddir、parseHa转载 2012-02-20 18:40:41 · 517 阅读 · 0 评论 -
kfs代码研究(二、meta server处理流程)
二、meta server代码Metaserver_main.cc:这个就是metaserver的main函数所在的文件,main函数在读取输入参数和配置文件并且初始化日志模块后,就进入了kfs_startup函数,这个函数就是meta server的启动过程,位置在startup.cc中。kfs_startup:1、首先调用setup_initial_tree重新建立metatr转载 2012-02-20 18:40:14 · 659 阅读 · 0 评论 -
kfs代码研究(一、kfs代码目录结构)
一、kfs代码目录结构src目录下包含cc、java、python几个文件夹,其中cc文件夹是kfs的主要实现部分和一些小工具,包括客户端等;java和python文件夹是kfs客户端的java和python实现版本,这里主要分析cc文件夹中的代码。chuck:chuck server的实现common:日志模块和hash函数的实现Emulator:metaerver和ch转载 2012-02-20 18:39:38 · 588 阅读 · 0 评论 -
分布式文件系统KFS源码阅读与分析(一):MetaServer元数据组织结构
KFS文件系统的MetaServer元数据管理采用的是B+树方式,下面将结合其源码,对KFS MetaServer中元数据的组织形式及有关实现细节进行分析。1. 相关源码文件KFS MetaServer元数据管理的代码所在目录为kfs-[version]/src/cc/meta,其中,相关的源码文件有:(1)meta/base.h:KFS元数据metadata中各节点的基础类,包括的类转载 2012-02-20 18:27:36 · 1150 阅读 · 0 评论