2

所以我正在学习CCDH认证,我在网上找到了一些示例问题,但老实说,我认为它们并不那么准确,所以我想在这里检查一下。

以下哪项最能描述 HDFS 上的读取操作?

A. 客户端向 NameNode 查询块位置。NameNode 将块位置返回给客户端。客户端从 DataNode(s) 中读取数据目录。

B. 客户端并行查询所有DataNode。包含请求数据的 DataNode 直接响应客户端。客户端直接从 DataNode 读取数据。

C. 客户端联系 NameNode 获取块位置。NameNode 然后向 DataNode 查询块位置。DataNode 响应 NameNode,NameNode 将客户端重定向到保存请求数据块的 DataNode。然后客户端直接从 DataNode 读取数据。

D. 客户端联系 NameNode 获取块位置。NameNode 联系持有所请求数据块的 DataNode。数据从 DataNode 传输到 NameNode,然后从 NameNode 传输到客户端。

我确定B和D。根据文档,正确答案是C。但我一直认为NameNode在RAM中已经有了块位置,不需要查询数据节点?所以我希望正确答案是 A。我错了还是文件错了?

4

3 回答 3

4

NameNode 不会查询 DataNodes 以获取块位置。block reports相反,它在DN 发送的帮助下动态构建它。请记住,DN 每隔几秒就会向 NN 发送块报告以及心跳。

所以,正确答案应该是选项A。

于 2013-06-26T12:30:18.630 回答
0

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

于 2014-05-30T19:15:32.743 回答
0

正确答案应该是选项A。

NN-> 客户端 - NN 将所有文件名、块位置存储在内存中,并以所需信息响应客户端。

NN->DN——这似乎无效,因为在 Hadoop(廉价硬件)中,DN 有时在集群中不可用(由于网络或硬件问题),因此 NN 不应依赖 DD 获取元数据。

希望这可以帮助。

于 2015-07-08T00:45:57.847 回答