updatePipeline这个RPC一般都会配合updateBlockForPipeline RPC一起使用。
先updateBlockForPipeline、然后再updatePipeline。
建议先阅读【HDFS】一天一个RPC系列–updateBlockForPipeline
本文目标是弄清楚以下问题:
- 弄清updatePipeline这个RPC的作用。
- 弄清updatePipeline RPC的使用场景,代码里的调用点。
一、updatePipeline这个RPC的作用是什么?
看代码注释,为处于under construction状态的block更新pipeline信息(更新在namenode侧)。
参数含义如下:
- clientName:客户端的名字
- oldBlock:更新GS和access token之前的block对象,也即没有updateBlockForPipeline之前
- newBlock:更新GS之后的block对象,此时已经调用完了updateBlockForPipeline RPC
- DatanodeID[] newNodes:存储新block副本的datanode节点
- String[] newStorageIDs:datanoe节点对应的storageID
/*** Update a pipeline for a blo