温馨提示×

温馨提示×

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

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

Java大数据开发中Hadoop的HDFS内部原理是什么

发布时间:2021-12-09 09:46:47 来源:亿速云 阅读:133 作者:小新 栏目:大数据

这篇文章将为大家详细讲解有关Java大数据开发中Hadoop的HDFS内部原理是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。



HDFS写数据流程  

Java大数据开发中Hadoop的HDFS内部原理是什么


1、客户端向NameNode请求上传文件,NameNode会检查目标文件是否已存在,父目录是否存在。所以NameNode起到了统一管理的作用。

2、NameNode返回是否可以上传,NameNode知道每一个数据节点的情况。

3、客户端请求第一个块( block)上传到集群上哪几个DataNode服务器上。

4、NameNode返回3个DataNode节点,分别为dn1、dn2、dn3三个节点。集群在启动的时候NameNode就已经知道DataNode节点了、

5、客户端请求dn1上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信管道建立完成。

6、dn1、dn2、dn3依次逐级应答客户端。

7、客户端开始往dn1上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位,dn1收到一个packet就会传给dn2,dn2传给dn3;dn1每传一个packet会放入一个应答队列等待应答。

8、当一个block传输完成之后,客户端再次请求NameNode上传第二个block的服务器。(重复执行3-7步)。

网络拓扑概念

在数据处理中,两个节点间的带宽作为距离的衡量标准。

节点距离:两个节点到达最近的共同祖先的距离总和。

例如,假设有数据中心d1(d1为集群)机架r1中的节点n1。该节点可以表示为/d1/r1/n1。利用这种标记,这里给出四种距离描述。

Range(/d1/r1/n1, /d1/r1/n1)=0(同一节点上的进程)

Range(/d1/r1/n1, /d1/r1/n2)=2(同一机架上的不同节点)

Range(/d1/r1/n1, /d1/r3/n2)=4(同一数据中心不同机架上的节点)

Range(/d1/r1/n1, /d2/r4/n2)=6(不同数据中心的节点)

注意:

对于n0 n1 n2 ,机架r1是共同祖先
对于机架r1 机架r12 机架r13,集群d1是共同祖先

依次类推......

Java大数据开发中Hadoop的HDFS内部原理是什么

举例:为什么Range(/d1/r1/n1, /d2/r4/n2)=6?

Java大数据开发中Hadoop的HDFS内部原理是什么

副本存储节点选择

Java大数据开发中Hadoop的HDFS内部原理是什么

第一个副本在集群节点上,随机选一个。

第二个副本和第一个副本位于相同机架上,但节点是随机的。

第三个副本位于不同机架的随机节点上。

HDFS读数据的流程

Java大数据开发中Hadoop的HDFS内部原理是什么

1、客户端向NameNode请求下载文件,NameNode会通过查询元数据,找到DataNode地址,即文件块所在的地址。

2、挑选一台DataNode服务器,至于选哪一台机器是就近原则,然后随机 ,请求读取数据。

3、DataNode开始传输数据给客户端,从磁盘里面读取数据输入流,以packet为单位来做校验。

4、客户端以packet为单位接收,先在本地缓存,然后写入目标文件。

关于“Java大数据开发中Hadoop的HDFS内部原理是什么”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

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

AI