Hadoop学习笔记(三)漫画解读HDFS读写原理

首先看看出场的角色,第一个是client客户端,用来发起读写请求,读取HDFS上的文件或往HDFS中写文件;第二个是Namenode,唯一的一个,会协调所有客户端发起的请求;第三个是DataNode,负责数据存储,跟Namenode不一样,DataNode有很多个,有时候能达到数以千计。

写数据流程

往HDFS中写数据的流程如下:

第1幅图:我们跟客户端说,你帮我写一个200M的数据吧,客户端说没问题啊,但是...

第2幅图:客户端不知道我们对数据有没有其他的要求啊,问我们是不是忘了什么东西呢?我们想起来我们还是有要求的,第一我们要把数据分成若干块,并且每块的大小是128M,第二,每个数据块应该复制3份。其实这就是我们说的HDFS的文件分块和多副本,如果你不说的话客户端怎么知道到底怎么分,复制多少份呢?

第3幅图:由上面的对话我们发现,如果对于每个文件客户端都要这么问一下,是不是太麻烦了?所以说一个好的客户端应该是,用户就算不说你也要知道有这两个属性:块的大小,一个文件应该按照怎样的大小切分(通常是64M或128M);复制因子,每个块应该复制多少份(通常是3份),也就是说如果用户不主动提供这些属性,那么就按照默认的来。

第4幅图:现在客户端已经知道了每个块的大小了,那么把200M的文件分成128M和72M两个块,一个长一个短。

第5幅图:切分后客户端就开始工作了,既然有两个块,那先上传第一个块,于是客户端请求Namenode帮它写一个128M的块,并且要复制3份。

第6幅图:Namenode接受到客户端的请求后,既然需要3个副本,那么就需要找到3个DataNode,Namenode就会想怎么去找到这3个DataNode呢?我该告诉客户端哪些信息呢?于是它就去它管理的DataNode中找一些满足要求的空闲节点。

第7幅图:Namenode找到了3个节点,现在把找到的节点发给客户端,表示:兄弟,你不是要我帮你写数据嘛,我给你找到了这3个合适的DataNode,并且已经按距离远近给你排过序了,第一个是最近的,你把数据给他们让他们帮你写吧。

第8幅图:客户端收到3个DataNode地址后,直接把数据发送到第一个节点(DataNode1)上,然后DataNode1开始把数据写到他的硬盘中。

第9、10、11幅图:DataNode1在接受数据的同时,会把刚刚收到的数据发送到第二个DataNode2上,同理DataNode2也是,接收的同时把数据立马发给DataNode3,到了DataNode3已经是最后一个DataNode了。整个过程跟流水线一样,接收一点就发一点。(个人感觉跟计算机网络中令牌环网的工作原理有些类似)

第12幅图:Namenode是所有DataNode的老大,所以DataNode在存完数据后要跟老大汇报,告诉他说,我第一个块的数据已经写完了。

第13幅图:3个DataNode都报告完成后,好,这样第一个数据块就写完了,下面对第二个块重复这个步骤。

第14幅图:所有的块都写完了之后,客户端关闭跟Namenode的连接。这时Namenode已经存储了文件的元数据,也就是文件被拆成了几块,复制了几份,每块分别存储在哪个DataNode上。

最后一幅图说明了每个角色在写数据过程中的作用:

  • Client:切分文件成数据块。
  • Namenode:对于每个数据块,找到存储的DataNode地址。
  • DataNode:多副本方式存储数据。

读数据流程

下面看看读文件的流程,同样还是这些角色。

第1幅图:写文件已经搞定了,那么怎么读文件呢?我们先跟客户端说,嘿兄弟!帮我读个文件呗!

第2幅图:客户端跟Namenode发了个请求,把文件名发送给Namenode,表示我想要这个这个文件的信息。

第3幅图:Namenode找了找,然后找到了一个结果,结果包含这个文件被拆成了多少块,每个块存储在哪些DataNode上的信息,并且DataNode同样是按照距离排序的。然后把这个结果发送给客户端,说,嘿兄弟!你要的文件在这些DataNode上,你去找吧。

第4幅图:现在客户端知道了文件的存储情况,所以就一个个去DataNode上访问就好了。

最后提出了一个问题:如果这个过程中DataNode挂了,或者数据在传输中出了问题怎么办?事实上

HDFS对于这些问题都是能够完美解决的。

错误处理

下面是出错处理的一些漫画,有不少是计算机网络的思想,英文也不是很难,就不一一详细解释了,这里只列出来。

其实很多思想跟计算机网络中信息传递的原理很类似,比如,在传送数据的时候怎么保证正确性?引入校验的概念,传数据的同时把校验的结果也一并发过去,接收方接收数据校验后与接收到的校验结果对比就可以确保发送的是正确的数据;至于怎样确认对方收到数据,使用的是ack应答机制,接收方接受到一个数据就发一个ack表示我已经收到了数据了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容