b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

java分布式文件系统_分布式小文件系统 开源_分布式文件系统有哪些(7)

电脑杂谈  发布时间:2017-04-08 00:11:46  来源:网络整理

对于数据服务器而言,它们会通过一些手段,迅速得知顶头上司的更迭消息。它们会立刻转投新东家的名下,在新东家旗册,并开始向其发送心跳消息,这个机制,可能用分布式协同服务来实现,这里不说也罢。。。

在HDFS的实现中,FSEditLog类是整个日志体系的核心,提供了一大堆方便的日志写入API,以及日志的恢复存储等功能。目前,它支持若干种日志类型,都冠以OP_XXX,并提供相关API,具体可以参见这里。为了保证日志的安全性,FSEditLog提供了EditLogFileOutputStream类作为写入的承载类,它会同时开若干个本地文件,然后依次写入,防止日志的损坏导致不可估量的后果。在FSEditLog上面,有一个FSImage类,存储文件镜像并调用FSEditLog对外提供相关的日志功能。FSImage是Storage类的子类,如果对数据块的讲述有所印象的话,你可以回忆起来,凡事从此类派生出来的东西,都具有版本性质,可以进行升级和回滚等等,以此,来实现产生镜像是对原有日志和镜像处理的复杂逻辑。。。

目前,在HDFS的日志系统中,有些地方与GFS的描述有所不同。在HDFS中,所有日志文件和镜像文件都是本地文件,这就相当于,把日志放在自家的保险箱中,一旦主控服务器挂了,别的后继而上的服务器也无法拿到这些日志和镜像,用于重振雄风。因此,在HDFS中,运行着一个SecondaryNameNode服务器,它做为主控服务器的替补,隐忍厚积薄发为篡位做好准备,其中,核心内容就是:定期下载并处理日志和镜像。SecondaryNameNode看上去像客户端一样,与NameNode之间,走着NamenodeProtocol协议。它会不停的查看主控服务器上面累计日志的大小,当达到阈后,调用doCheckpoint函数,此函数的主要步骤包括:

首先是调用startCheckpoint做一些本地的初始化工作;

然后调用rollEditLog,将NameNode上此时操作的日志文件从edit切到edit.new上来,这个操作瞬间完成,上层写日志的函数完全感觉不到差别;

接着,调用downloadCheckpointFiles,将主控服务器上的镜像文件和日志文件都下载到此候补主控服务器上来;

并调用doMerge,打开镜像和日志,将日志生成新的镜像,保存覆盖;

下一步,调用putFSImage把新的镜像上传回NameNode;

再调用rollFsImage,将镜像换成新的,在日志从edit.new改名为edit;

最后,调用endCheckpoint做收尾工作。

整个算法涉及到NameNode和SecondaryNameNode两个服务器,最终结果是NameNode和SecondaryNameNode都依照算法进行前的日志生成了镜像。而两个服务器上日志文件的内容,前者是整个算法进行期间所写的日志,后者始终不会有任何日志。当主控服务器牺牲的时候,运行SecondaryNameNode的服务器立刻被扶正,在其上启动主控服务,利用其日志和镜像,恢复文件目录,并逐步接受各数据服务器的注册,最终向外提供稳定的文件服务。。。

同样的事情,GFS采用的可能是另外一个策略,就是在写日志的时候,并不局限在本地,而是同时书写网络日志,即在若干个远程服务器上生成同样的日志。然后,在某些时机,主控服务器自己,生成镜像,降低日志规模。当主控服务器牺牲,可以在拥有网络日志的服务器上启动主控服务,升级成为主控服务器。。。

GFS与HDFS的策略相比较,前者是化整为零,后者则是批量处理,通常我们认为,批量处理的平均效率更高一些,且相对而言,可能实现起来容易一些,但是,由于有间歇期,会导致日志的丢失,从而无法100%的将备份主控服务器的状态与主控服务器完全同步。。。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-40093-7.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...