在HDFS中,追加(Append)数据是指向一个已经存在且已关闭的文件末尾继续写入数据的过程。 HDFS最初的设计是“一次写入,多次读取”(WORM),不支持修改和追加。但在后来的版本中(Hadoop 2.x及以后),为了支持HBase的WAL(预写日志)和Flume等流式数据写入场景,HDFS引入并完善了Append功能。 HDFS追加数据的核心难点在于处理文件的最后一个数据块(Block)。追加数据的整体流程可以分为四个主要阶段:请求追加、建立/恢复流水线、数据传输、完成与关闭。 以下是详细的流程步骤: 第一阶段:请求追加(NameNode交互) 1. 客户端发起请求:客户端(Client)调用 方法,向 NameNode 发起 Append 的 RPC 请求。 2. NameNode 校验: NameNode 检查文件是否存在。如果文件不存在或是一个目录,则报错。 检查客户端是否有对该文件的写权限。 检查文件的租约(Lease)。HDFS保证同一时刻只有一个客户端能写入文件。如果文件当前被其他客户端打开(持有租约),则请求失败。NameNode 会将该文件的租约分配给当前请...