hdfs如何选择要存储的datanode

use*_*035 9 hadoop hdfs

正如标题所示,当客户端请求将文件写入hdfs时,HDFS或名称节点如何选择存储文件的datanode?hdfs是否尝试将此文件的所有块存储在同一节点或同一机架中的某个节点(如果它太大)?hdfs是否为应用程序提供任何API以将文件存储在他喜欢的某个datanode中?

Pra*_*ati 12

HDFS或名称节点如何选择存储文件的datanode?

HDFS有一个BlockPlacementPolicyDefault,请查看API文档以获取更多详细信息.应该可以扩展BlockPlacementPolicy以实现自定义行为.

hdfs是否为应用程序提供任何API以将文件存储在他喜欢的某个datanode中?

放置行为不应特定于特定的datanode.这就是使HDFS能够适应故障并具有可扩展性的原因.


小智 8

选择datanode的代码正在运行ReplicationTargetChooser.chooseTarget().

评论说:

副本放置策略是,如果编写器位于datanode上,则第一个副本将放置在本地计算机上,否则将是随机数据节点.第二个副本放置在另一个机架上的datanode上.第三个副本放置在与第一个副本位于同一机架上的datanode上.

它没有为应用程序提供任何API来将文件存储在他们想要的datanode中.


www*_*www 5

如果有人喜欢图表,这里有一张图片(来源):
在此输入图像描述