hdfs工作原理是什么

发布时间:2021-12-03 10:37:17 作者:柒染
来源:亿速云 阅读:102

本篇文章为大家展示了hdfs工作原理是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

一,当用client向hdfs中写入数据的时候.

           当我们向hdfs 写数据的时候,客户端要做两件事.首先,将数据文件划分不同的数据块,划分的标准默认是64MB或128MB,这个是可以配置的.其次是向namenode请求一批(实际上就是默认的3个)datanode以存放数据块.当然namenode不是随便的选出三个datanode给client,它会选择三个最靠近client的三个datanode,那么这个距离是怎么计算的呢,是这样的,它会去计算两个节点与父节点带宽之和来计算两个节点的距离,在得到三个最近的datanode之后,namenode会先按与client的距离对datanode排下序,然后返回给客户端.

           下面client要做的就是向namenode返回的3个datanode中传输数据了.当它在写第一个数据块时,它会先向离它最近的那个datanode写数据.那么client如何知道它向第一个datanode写入数据是否成功了呢?是这样的,client在向datanode传数据的同时,会计算下数据快的校验和,这个校验和也会传给datanode,datanode 在存储完数据后,会对数据块取下校验和与client的校验和进行比对,如果一致的话说明数据保存成功,然后它会向client进行ack,告诉client数据已经成功保存了,同时它也会告诉namenode数据块保存成功了.剩下的数据块保存到下两个datanode的过程和第一个过程是相似的,只是数据的传输不是都是client去传递的,而是datanode之间进行传递的,每个datanode成功保存完数据后都会向client进行ack并通知namenode保存数据完毕.当client接受到所有的datanode的ack后,client会告诉namenode数据块全部写入完毕.当namenode接受到client的消息后,namenode要做的就是维护两张表,一张表是每个数据块对应的datanode地址,另一张表是存储数据副本的时候经过了那些管线.

      二,当从hdfs中读数据的时候.

             当client要从hdfs中读取数据的时候,首先客户端要知道数据存储在哪吧,怎么才能知道啊,谁知道啊?当然是namenode啊,namenode存储了所有的数据块元数据信息.client会给namenode请求数据的文件地址,namenode会返回给client关于数据块的相关信息即数据块存放在哪些datanode上了,每个datanode存放了哪些数据块,当然这些datanode也是按照与client距离排过序的.当client拿到这些信息后,它会先到离它最近的那个datanode上下载数据.

         三,故障的规避.

              因为是分布式文件系统,网路中什么事情都有可能发生,如datanode挂掉,datanode不能返回客户端想要的数据,datanode在保存数据的时候数据损毁,或者最严重的namenode挂掉.

              下面看看这个四个问题,hadoop是如何规避的呢。

              首先是datanode挂掉,当hdfs启动后每个datanode节点会定期上报自己的健康状况,每个datanode会每三秒向namenode发送心跳,证明自己还或者,假如namenode是秒钟没有收到datanode发送的心跳,namenode会认为这个datanode已经挂掉了.

              下一个问题datanode不能返回客户端想要的数据,当客户端datanode请求数据或写入数据的时候,datanode无相应怎么办呢,当客户端长时间没有接收到datanode的ack后,client也为认为这个datanode已经挂掉了,于是会跳过这个datanode,请求下个datanode.    

              第三个问题,datanode保存的数据发生损坏,这个该怎么办呢,datanode会定期上报自己所存的数据快健康状况,健康状况是通过校验和来判断的,当nomenode收到datanode发送的数据块健康状况的报告后它就知道那些数据块损毁,然后它就会去更新它维护的两张表,即数据块在哪些datanode上存着,每个datanode上存放了哪些数据块,如果namenode发现哪个数据块的副本没有达到标准,它会通知其它的datanode从已有数据块的datanode上copy相应的数据块.

              第四个问题,namenode挂掉,这个问题是最严重的,目前的最好的解决办法就是加一个辅助namenode即secondNamenode,以备分数据块的元数据信息,尽可能的避免数据丢失.

上述内容就是hdfs工作原理是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. HDFS副本放置策略是什么
  2. HDFS产生背景是什么

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

hdfs

上一篇:Logtail的工作原理是什么

下一篇:tk.Mybatis插入数据获取Id怎么实现

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》