先从SVN中checkout代码,我checkout的是trunk中的代码。听说trunk中的代码merge了ha-branch,详细都merge了哪些jira会商的工具出认真看。 Federation中存正在多个定名空间,若何划分和办理那些定名空间十分闭头。例如查看某个目次下里的文件,若是采取文件名hash的圆式寄存文件,则那些文件大概被放到差别namespace中,HDFS需要拜候所有namespace,价格过年夜。为了便利办理多个定名空间,HDFS NameNode Federation采取了经典的Client Side Mount Table。 下图就是Checkout出的代码构造。那个和之前的版根源代码构造有很年夜的差别。全部项目采取maven作为项目办理对象。我对maven也是新脚,不中BUILDING.txt会报告我们年夜部门想要知道的工具。 那张图可以清楚的看出,Block Storage的两部门功效划分正在NameNode和DataNode中完成。正在本来的单NameNode架构中,一个NameNode对应一个Namespace,对应多个DataNode构成的存储池空间,真现和理解起来十分轻易。然则跟着单NameNode碰到愈来愈多的题目,例如跟着集群范围的扩年夜NameNode的内存已不克不及容纳所有的元数据;单NameNode造约文件元数据操作的吞吐量使得今朝的只能撑持60K的MapReduce task;还有就是差别用户的断绝性题目。 如上图所示,下里四个蓝色三角形代表一个的Namespace,上圆灰色的三角形代表从客户角度往拜候的逻辑Namespace。各个蓝色的Namespace mount到灰色的表中,客户可以经过拜候差别的挂载点来拜候差别的namespace,那就犹如正在Linux系统中拜候差别挂载点的磁盘一样。那就是HDFS NameNode Federation中定名空间办理的根本道理。然则那类体例轻易造成差别Namespace下文件数目和存储量的不屈衡,需要野生参与已到达幻想的负载仄衡。 2, 编译源代码 正在产业界也有几种其他的集布式NameNode的真现体例,例如正在百度内部利用的就是把NameNode做成一主多从的集群的情势,构造以下图所示。Namespace server负责全部集群的 文件?à独一的块集开ID 映照,physicaladdrHadoop 023x从道理详解到安拆体验然后把差别的 块集开ID分派到对应的FMS server上(相似于数据库里的sharding,可以采取hash相似的战略)。然后每一个FMS server负责一部门块集开的办理和操作。那末那类圆式隐然client的每次文件操作都市颠末Namespace server和此中的一个FMS server的处置。详细是怎样做的,百度也出开源出来。 注:若是你只存眷怎样安拆和利用,对Hadoop的源代码编译不是很感乐趣,可以直接从民网上download安拆包,然后跳过那一节,直接进进第两节:安拆与摆设。 HDFS NameNode Federation并出有完整办理单点故障题目。固然namenode/namespace存正在多个,然则从单个namenode/namespace看,依然存正在单点故障:若是某个namenode挂得降了,其办理的响应的文件就弗成以拜候。所以对此中的任何一个namenode仍然存正在SPOF题目,而那个题目的办理要依靠于HA的真现。就是给每一个NameNode装备一个对应的BackupNode和CheckpointNode。 那末社区为何会选择NameNode federation那类圆案呢?由于从系统设计的角度看,ceph的动态分区看起来更开适集布式NameNode的需求。那里就不能不说正在系管辖域学术界和产业界的区分了。Ceph的设计当然比力进步前辈,然则不变性十分欠好。而对一个像Hadoop如许范围的存储系统,不变性当然十分主要,并且开辟本钱和兼容性也要思索。NameNode federation那个圆案对代码的改动年夜部门是正在DataNode那块,对NameNode的改动很小。那使得NameNode的鲁棒性不会遭到影响,同时也兼容本来的版本。
|