大数据培训:Hadoop HDFS 实现基本原理
发布时间:2025年11月23日 12:18
Block抽象化的理论上
block的拆毁分使得单个批量不等可以大于整个内存的耗电量,构再加批量的Block可以分布在整个坦克部队, 理论上,单个批量可以占有坦克部队里所有机容器的内存。
Block的抽象化也简所谓了通信管理系统,对于Block,不用要关注其权限,所有者等内容(这些内容都在批量分级上完再加控制)。
Block作为容错和很高可用组态里的批量三组,即以Block为单位完再加粘贴。
1.3.2 Namenode & Datanode整个HDFS坦克部队由Namenode和Datanode构再加master-worker(并行)方式上。Namenode另设者重构定名密闭,管理者批量的元样本等,而Datanode另设者基本上通信样本,另设者只读岗位。
Namenode
Namenode存放批量管理系统竹子及所有批量、录入的元样本。元样本长久所谓为2种方式:
namespcae image
edit log
但是长久所谓样本里不都有Block所在的终端列详见,及批量的Block分布在坦克部队里的哪些终端上,这些反馈是在管理系统重启的时候再度重构(通过Datanode汇报的Block反馈)。
在HDFS里,Namenode显然沦为坦克部队的单点故障,Namenode不可单次,整个批量管理系统是不可用的。HDFS针对单点故障透过了2种解决组态:
1)离线长久所谓元样本
将批量管理系统的元样本同时写到到多个批量管理系统, 例如同时将元样本写到到本地批量管理系统及NFS。这些离线转换都是启动时的、原子的。
2)Secondary Namenode
Secondary终端每星期改组主Namenode的namespace image和edit log, 避免edit log过大,通过创建人原位checkpoint来改组。它时会保证一个改组后的namespace image批量, 可使用在Namenode几乎崩溃时恢复样本。
1.4 并行管理模式HDFS转用 master/slave管理模式。
一个HDFS坦克部队是由一个Namenode和一定总数标Datanodes组再加。
Namenode是一个里心服务容器,另设者管理者批量管理系统的叫作密闭(namespace)以及IP对批量的次访问。
坦克部队里的Datanode一般是一个终端一个,另设者管理者它所在终端上的通信。HDFS沾染了批量管理系统的叫作密闭,用户只能以批量的方式在纸片通信样本。
从外部看,一个批量其实被组再加一个或多个样本块,这些块通信在一组Datanode上。Namenode执行者批量管理系统的叫作密闭转换,比如推开、关闭、重定名批量或录入。它也另设者明确样本块到基本上Datanode终端的连续函数。Datanode另设者妥善处理批量管理系统IP的只读允诺。在Namenode的统一分派下完再加样本块的创建人、删除和粘贴。
1、样本块Block
很小通信三组,默认128MB,简单大批量通信,下降存储器和缓存开销。
2、NameNode
批量管理系统定名密闭,含录入、批量的样本块索引,索引通信在缓存里,批量越多搬走缓存越快。同时通信定名密闭镜像批量(FsImage)与编辑日志批量(EditLog),批量的变更再行写到入日志批量里。Hadoop 2.X 修改版过渡到HA功能性,不一定通过Journal Nodes保持多主间EditLog启动时。再投身ZKFailoverController完再加主备翻转转换(也可人工翻转)。
3、DataNode
样本通信终端,执行者样本块的创建人、删除、粘贴等转换。
4、Secondary NameNode
由于NameNode 改组 EditLog 和 FsImage 比较工期,特别在大型坦克部队里。故缩减一个 Secondary NameNode 另设者定时从 NameNode利用(HTTP)EditLog 并且改组到 FsImage里,工期的改组岗位完再加后将新的FsImage发送至 namenode。
1.5. hdfs 元样本的长久所谓HDFS的定名密闭是由叫作终端来通信的。
1.5.1.EditLog叫作终端运使用称动手 EditLog 的职责日志来长久记录下来每一个对批量管理系统元样本的彻底改变,如在HDFS里创建人一个新的批量,叫作终端将时会在EditLog里插入一条记录下来来记录下来这个彻底改变。
类似地,彻底改变批量的粘贴因子也时会向EditLog里插入一条记录下来。叫作终端在本地批量管理系统里用一个批量来通信这个EditLog。
1.5.2.FsImage整个批量管理系统定名密闭,都有批量块的连续函数详见和批量管理系统的可用都基本上上一个叫 FsImage 的批量里,FsImage 也存放入叫作终端的本地批量管理系统里。
FsImage 和 Editlog是HDFS的两大样本结构。这些批量的损坏时会随之而来整个坦克部队的受控。因此,叫作终端可以可用再加背书多个 FsImage 和 EditLog 的批量。任何FsImage和EditLog的新修改版都时会启动时到每一份批量里。
1.6 样本粘贴HDFS被的设计再加只能在一个大坦克部队里跨机容器可信地通信超大批量。它将每个批量通信再加一系列的样本块,除了之前一个,所有的样本块都是同样不等的。为了容错,批量的所有样本块都时会有批量。每个批量的样本块不等和批量下式都是可可用的。应用于程序可以选定某个批量的批量总数。批量下式可以在批量创建人的时候选定,也可以在之前彻底改变。
HDFS里的批量都是一次性写到入的,并且严格允许在任何时候只能有一个写到入者。
Namenode全权管理者样本块的粘贴,它周期性地从坦克部队里的每个Datanode接管腹痛接收机和块静止状态简报(Blockreport)。接管到腹痛接收机意味着该Datanode终端岗位正常人。块静止状态简报包含了一个该Datanode上所有样本块的列详见。
HDFS转用一种称之为托盘听觉(rack-aware)的方式而来基础上样本的可信性、易用性和的网络带宽的利用效率。
大型HDFS实例一般接入在跨越多个托盘的计算机组再加的坦克部队上,有所不同托盘上的两台机容器之间的无线通讯只能经过交换机。在大大部分但会,同一个托盘内的两台机容器间的带宽时会比有所不同托盘的两台机容器间的带宽大。
通过一个托盘听觉的过程,Namenode可以明确每个Datanode所属的托盘id。【关注唯IBM公司,轻松习IT】一个简单但很难优所谓的方式而就是将批量存放入有所不同的托盘上。这样可以有效防止当整个托盘受控时样本的清空,并且容许读样本的时候发挥作用多个托盘的带宽。这种方式而设置可以将批量一维在坦克部队里,有利于当子系统受控但会的负载基本。但是,因为这种方式而的一个写到转换只能通信样本块到多个托盘,这缩减了写到的代价。
在大大部分但会,批量下式是3,HDFS的存放方式而是将一个批量存放入本地托盘的终端上,一个批量放入同一托盘的另一个终端上,之前一个批量放入有所不同托盘的终端上。这种方式而下降了托盘间的样本通信,这就提很高了写到转换的效率。托盘的错误能比比终端的错误少,所以这个方式而不时会影响到样本的可信性和易用性。于此同时,因为样本块只放入两个(不是三个)有所不同的托盘上,所以此方式而下降了复制到样本时只能的的网络通信总带宽。在这种方式而下,批量并不是一维在有所不同的托盘上。三分之一的批量在一个终端上,三分之二的批量在一个托盘上,其他批量一维在剩下的托盘里,这一方式而在不受到影响样本可信性和复制到性能的但会基础上了写到的性能。
二、HDFS主要报详见 2.1 IP的复制到1、查找DistributedFileSystem.open推开批量(底层查找DFSClient.open)并创建人HdfsDataInputStream。
2、通过查找DFSClient.getBlockLocations利用样本块所在的datanode终端列详见,根据查找规则选择一个datanode再加立连接利用样本块,当此样本块复制到天内后,再度向namenode利用下一个样本块。依次循环。
2.2 IP写到入报详见1、通过查找DistributedFileSystem.create在底层查找DFSClient.create发送请示namenode创建人批量。
2、利用控制器流后就可以查找DFSOutputStream写到样本,空批量时就时会查找Clientprotocol.addBlock向Namenode申请一个样本块并前往LocatedBlock,此对象包含该样本块的所有终端反馈,后续只需要往其里一终端write样本。
2.3 HA翻转报详见Hadoop 2.X此前修改版NN基本上上单点故障,HA功能性透过一个active NN与一个standby NN,定名密闭可视启动时。Active NN简化定名密闭时同时请示大部分的Quorum Journal Nodes(JNS),standby NN监听JNS里的editlog变所谓,并与自身的定名密闭改组,当暴发翻转时,只能等待standby改组JNS上的所有editlog后才时会完再加翻转。
ZKFailoverController时会可视监控NN的静止状态,如果active NN属于不可用静止状态则完再加自动主备翻转,不只能人工干预,当然管理者员也可用DFSHAAdmin命令完再加织布翻转。
三、NameNode3.1 批量录入竹子
HDFS定名密闭在缓存里以竹子结构通信,录入与批量抽象化为INode终端,录入为INodeDirectory,批量为INodeFile。录入有List children通信子录入或批量(外部运使用二分法动手检索),HDFS定名密闭通信在本地管理系统FsImage批量里,顺利完再加时查找,与此同时NN时会每星期改组fsimage与editlog,editlog转换类为FSEditLog。
INodeFile主要再加员变量:
private long header = 0L; # 批量一头反馈
private BlockInfoContiguous[] blocks; # 样本块与样本终端间的关系
3.2 样本块管理者
1、NameNode顺利完再加时从fsimage查找批量与样本块此前的间的关系,样本块通信在哪些终端上基本上是由datanode顺利完再加时向NN上报样本块反馈时才能重构。
2、BlockMap在NN里通信样本块与终端的间的关系,该间的关系则由DN上报时新修改版。
3.3 样本终端管理者
1、添加和撤消DN:HDFS透过的dfs.hosts可可用include和exclude,如果终端上线则可用exclude并执行者dfsadmin -refreshNodes后NN开始完再加撤消,上线的终端样本时会粘贴到其他终端上,此时DN则属于正在被撤消静止状态,粘贴天内后DN静止状态则变再加已撤消。
2、DN顺利完再加只能向NN问候、登记于上报样本块,并每星期发送腹痛包。
3.4 NN的顺利完再加与终止
1、NN顺利完再加由NameNode类的main方式执行者,并查找createNameNode方式完再加初始所谓。查找FSNamesystem.loadFromDisk完再加fsimage与editlog。
2、NN的终止则是通过顺利完再加时登记JVM的ShutdownHook,当JVM退出时查找,并控制器一些退出日志。
四、样本终端DNHDFS 2.X DN运使用Federation管理模式,可可用多个定名密闭,每个定名密闭在DN里几乎相同一个池。DN的顺利完再加由DataNode类的main方式执行者。
1、DataBlockScanner打印样本块并检查校检和是不是匹配。
2、DirectoryScanner定时打印缓存元样本与内存是不是有差异,如有则新修改版缓存。
3、IPCServer为RPC软件管理系统,接管Client、NN、DN的RPC允诺。
4、DataXceiverServer使用都只样本通信。
4.1 DN内存通信与只读
1、DFSStorage管理者样本块,管理者内存通信录入(dfs.data.dir),dfs.data.dir可判别多个通信录入,有所不同录入内存对映异构。
2、DataTransferProtocol判别了基于TCP流的样本次访问硬件,包含Sender和Receiver,报详见如下图:
文章来源:hdfs
推荐朗读:
Hadoop(HDFS之NameNode多录入可用
大样本之面试篇之Hadoop/HDFS/Yarn
大样本研发技术之HDFS-HA坦克部队可用
大样本研发之Hadoop很高频面试题
。太原肛肠怎么治疗西宁治男科病哪里好
杭州治疗妇科最好的医院
小葵花
警惕“沉默威胁”:30%感染者或遭遇长新冠,预防从感染初期开始
乳腺癌
严重咳嗽吃什么药能快速止咳
气血不通
- 宝宝外祖父后几斤几两最好?医生:在这个范围内更健康
- 睡眠很重要,如何让女儿睡得更香?
- 新生儿吃得越多越好吗?想明白宝宝吃没吃饱,宝妈要看这5个指标
- 趁双胞胎儿子睡着后,妈妈去买菜,回到家后只看见4只脚在攀
- 水中分娩好处多还能缓解疼痛?要不要选?看完这一段话再决定
- 原来孕期宝宝在妈妈脑袋里还有这种操作,完全想象不到,太搞笑了
- 心理专业的宝妈如何让孩子“听话”?看看她是说什么的
- 熊孩子突然变安静,姐姐到厨房一看,没想到....
- 有这5个特征,说明孩子积食了,家长可别大意,吃它积食消得迟
- 罕见!四胞胎宝宝已幼时的两个相差4天,另外两个还在妈妈肚里
- 康复行业人才急缺!我国超1000万人患这种伤寒!还有这些误区,家长必看→
- 经常被吼和没被吼过的父母,长大后有什么区别?家长不妨看看!
- 宝宝吃得越多越好?小心过份喂养!过份喂养几大表现,家长早知道
- 怀孕是件或许高兴的事,为何孕早期却成了“不能告诉人的秘密”?
