在Hadoop集群上运行MapReduce作业时,我正在寻找有关事件链的一些特定信息。
让我们假设我的Reduce任务即将完成。在我的最后一个reducer将其输出写入输出文件之后,输出文件的副本数量是多少? 在最后一个reducer完成写入输出文件后到底发生了什么。 NameNode何时请求相应的数据节点复制输出文件?名称节点如何通知输出文件已准备好?谁将该信息传达给NameNode? p>
谢谢!
答案 0 :(得分:3)
Reduce任务将输出写入HDFS。他们通过首先与名称节点通信来请求块来完成此操作。然后,名称节点告诉reducer要写入哪些数据节点,然后reducer实际上将数据直接发送到第一个数据节点,然后第一个数据节点将数据发送到第二个数据节点,第二个数据节点将数据发送到第三个节点。通常,名称节点会将内容保持为本地,因此第一个数据节点可能与运行reduce任务的机器相同。
一旦减速器完成输出写入,并且数据节点已经确认了这一点,减速器本身将通过定期心跳通信告诉作业跟踪器它已经完成。
答案 1 :(得分:1)
要了解HDFS复制的基础知识,请在HDFS架构文档中读取replica placement。简而言之,NameNode将尝试使用相同的机架来最小化延迟。