HDFS 读写文件

HDFS  读文件

1)客户端显式调用 open()函数打开文件。
2)后台通过 RPC 调用 NN服务,获取欲打开文件的文件块信息和文件所
在的数据节点。

3)客户端显式调用 read()函数,从第一个数据块开始读取数据,并选择离
客户端最近的那个副本。
4)选择离客户端最近的副本后,客户端直接从 DN读取数据。
5)当前数据块读完后继续连接此文件下一个数据块最近副本所在的 DN。
6)读完数据时,客户端显式调用 close()函数。相对于读取本地文件系统数
据,HDFS 读取数据流程较复杂,但对客户端而言,需显式调用的函数仅为
open()、read()和 close(),与读取本地文件系统数据的方法基本相同。

HDFS  写文件

1)客户端调用 create()来创建文件。
2)后台通过 RPC 调用 NN服务,在文件系统的命名空间中创建新文件。
3)客户端开始写入数据。先将数据写到本地临时文件中,当累积到 1个数
据块大小时,客户端会从 NN获取 1 个 DN列表,同时后台会将该文件块切分
成多个数据包(packet)。
4)每个 packet 以流水线方式写入到 NN 返回的 DN。
5)最后一个 DN 针对每个 packet,朝着写入流水线的反方向返回 ACK,
确认 packet 成功写入所有 DN。
6)客户端调用 close()函数关闭文件,剩余所有数据将写入 DN,并关闭与
DN的连接。
7)通知 NN 写入完毕。
HDFS 写流程虽同样复杂,但客户端仅需操作 create()、write()和 close()函
数,与写入本地文件系统数据方法类似。

猜你喜欢

转载自blog.csdn.net/niuxikun/article/details/107715960
今日推荐