HDFS原理——HDFS就是一个情报组织(2)

声明:本博文图片来自于网络或者《Hadoop权威指南》,有关专业术语的标准解释参考《Hadoop权威指南》中文第二版。欢迎大家关注我的大数据专栏https://blog.csdn.net/column/details/23027.html

上一趴,简单的说明了这个情报组织的构成,客户端client,管理节点namenode,数据节点datanode。主要依靠namenode——datanode来进行文件系统的管理。这个组织有强大的容灾机制或者说容错机制,可以在任何一环出现故障时,能迅速的进行删除和替代,不让使用者发觉。
那日常这个组织怎么执行任务呢?
情报组织的任务只要分两种,第一种就是获取情报传递给上级,第二种就是及时传递上级的命令或情报。先说第一种,获取情报给上级组织client,那么从上级组织client的角度来说就是读取情报。步骤是这样的:client告知办公室主任DistributedFS我要情报,办公室主任是个厉害的角色,有自己隐秘的远程指挥基层组织的渠道(RPC)。他联系namenode,得到情报的存放地址(其实情报由每个特工存放,namenode管理)以及情报备份存放的地址。作为机要组织的办公室主任,如果再亲自去联系特工获得情报,也太掉面儿。所以主任要派一名自己的心腹FSDataInputStream(名字这么长,一看就是西域高手,笑!)去执行这项任务。情报工作想生存就要小心,这名心腹包装后化名DFSInputStream(相当于邦德,改名德邦)。
好吧暂且把DFSInputSteam称作为德邦吧,这个德邦要联系每个特工——datanode要情报啊。德邦做事有自己原则,他的原则就是就近原则啊,看起来比较懒,一次获取距离他近的特工的情报。万一有的特工正在执行任务不能亲自给,怎么办?那德邦就要自己去获取备份的情报了(副本中)。万一有的特工在送情报的路上,暴露被毙了咋办?德邦就要忍住剧痛,开心的向下一个距离近的特工获取情报(说起来,还挺感动呢!)。之后会检查被毙了那个特工的情报是否完全获取(从副本里获取),同时把这个噩耗通知给namenode。然后断开和最后一个特工的连接(每获取一个成功,都断开与之的联系)。德邦这一系列过程都在client的监视之下,当获取完毕的时候,client会发送一个终止命令close.
以下就是流程框图:
读取情报
要说明的是,这里block块的概念其实和磁盘中的存储单元块概念是一致的,只不过是对于块的大小不同。相对于磁盘块512byte来说,HDFS的块就大很多了,有128M。这么大的块也是为了减少寻址开销啊,比如找的人都在6号楼,总比10个人都不在同一栋楼省事多了。

下一趴要说说client发布命令或者分享情报给namenode时,这个情报组织是怎么运行的。

猜你喜欢

转载自blog.csdn.net/handoking/article/details/80680011