写在前面
本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!
本专栏目录结构和文献引用请见1000个问题搞定大数据技术体系
解答
客户端在删除HDFS上的文件时,会通过和元数据节点进行交互来执行命令,存储在数据节点上的文件内容的数据块(Block)也需要删除。
由于元数据节点不存储实际的数据,所以元数据在执行 delete() 函数时,只需标记哪些数据块需要删除。
元数据节点(NameNode)不会主动联系数据节点(DataNode), NameNode 节点和 DataNode 节点之间的联系都是通过心跳,由 DataNode 节点定期主动向元数据节点发送心跳。
当标记删除的数据块的 DataNode 节点向 NameNode 节点发送心跳时, NameNode 节点会给当前的 DataNode 节点下达删除命令,删除 DataNode 节点中对应的数据块,整个流程如图所示。