【发布时间】:2015-12-12 13:59:47
【问题描述】:
DataNode 配置了两个 NameNode 的位置,并向两者发送块位置信息和心跳。
但是为什么这些信息会被发送到 namenode 和它的 fallback 兄弟呢?我认为这个信息已经包含在 namenode 的 fs 图像中。 namenode 应该知道他把块放在哪里。
【问题讨论】:
DataNode 配置了两个 NameNode 的位置,并向两者发送块位置信息和心跳。
但是为什么这些信息会被发送到 namenode 和它的 fallback 兄弟呢?我认为这个信息已经包含在 namenode 的 fs 图像中。 namenode 应该知道他把块放在哪里。
【问题讨论】:
Name Node 包含整个集群的元数据。它包含每个文件夹、文件、复制因子、块名称等的详细信息。名称节点还在内存中存储有关每个文件的块位置的信息(此信息由数据节点发送的块报告构成) .
数据节点存储每个块的以下信息:
它们会定期向名称节点发送心跳和阻塞报告。
心跳:
dfs.heartbeat.interval(在 hdfs-site.xml 中)确定。默认设置为 3 秒。BlockRecoveryCommand(恢复指定块),BlockCommand(用于将块传输到另一个数据节点,用于使某些块无效),Cache/Uncache(用于缓存/取消缓存块的命令)阻止报告:
dfs.blockreport.intervalMsec(在 hdfs-site.xml 中)确定。默认设置为 21600000 毫秒。【讨论】:
Datanodes 不能从集群外部直接访问,它位于专用网络中。 Hadoop 集群容易出现节点故障,NameNode 跟踪不同 DataNode 上的所有数据。因此,对集群的任何查询都由 NN 处理,并提供 DN 上的块地址。
【讨论】: