namenode读取操作上的datanode通信

x8diyxa7  于 2021-06-04  发布在  Hadoop
关注(0)|答案(3)|浏览(432)

所以我在学习ccdh认证,我在网上发现了一些问题样本,但老实说,我不认为它们都是准确的,所以我想在这里检查。
以下哪项最能描述hdfs上的读取操作?
答。客户机向namenode查询块位置。namenode将块位置返回给客户端。客户机从数据节点读取数据目录。
b。客户端并行查询所有数据节点。包含请求数据的datanode直接响应客户机。客户机直接从datanode读取数据。
c。客户机联系块位置的namenode。然后namenode查询datanodes中的块位置。datanode响应namenode,namenode将客户机重定向到保存请求的数据块的datanode。然后,客户机直接从datanode读取数据。
d。客户机联系块位置的namenode。namenode联系保存请求的数据块的datanode。数据从datanode传输到namenode,然后从namenode传输到客户机。
我确信b和d。根据文件,正确答案是c。但我一直认为namenode在ram中已经有了块位置,不需要查询datanodes?所以我希望正确的答案是a。是我错了还是文件错了?

wpcxdonn

wpcxdonn1#

namenode很少与datanodes通信的原因是,它的主要工作是向客户机提供读/写请求并更新datanodes中的元数据,因此它不会浪费从datanodes获取数据的资源和时间。相反,datanodes与namenode通信,namenode是简单的基于套接字的通信,用于提供心跳和块报告。参考http://hashprompt.blogspot.com/2014/05/multi-node-hadoop-cluster-on-oracle.html.

rwqw0loc

rwqw0loc2#

namenode不查询datanodes以获取块位置。相反,它在 block reports 由dns发送。请记住,dns每隔几秒钟就会将阻止报告与心跳一起发送到nn。
所以,正确的答案应该是选项a。

cbjzeqam

cbjzeqam3#

正确答案应该是选项a。
nn->client-nn将所有文件名、块位置存储在内存中,并用所需信息响应客户端。
nn->dn——这似乎是无效的,因为在hadoop(廉价硬件)中,dn有时在集群中不可用(由于网络或硬件问题),所以nn不应该依赖dd获取metdata。
希望这有帮助。

相关问题