一、概述

二、实现

DistributedFileSystem.append() 方法调用了 DFSClient.calAppend() 方法获取输出流对象。

callAppend() 方法首先通过 ClientProtocol.append() 方法获取文件最后一个数据块的位置信息,如果文件的最后一个数据块已经写满则返回 null。然后 callAppend() 方法会调用 DFSOutputStream.newStreamForAppend() 方法创建到文件最后一个数据块的输出流对象。获取文件租约,并将新构建的 DFSOutputStream 包装为 HdfsDataOutputStream 对象,然后返回。