HDFS读写操作

数据读取请求将由 HDFS,NameNode和DataNode来服务。让我们把读取器叫 “客户”。下图描绘了文件的读取操作在 Hadoop 中。

HDFS读操作.png

1、客户端启动通过调用文件系统对象的 open() 方法读取请求;它是 **DistributedFileSystem **类型的对象。
2、此对象使用 RPC 连接到 namenode 并获取的元数据信息,如该文件的块的位置。 请注意,这些地址是文件的前几个块。
3、响应该元数据请求,具有该块副本的 DataNodes 地址被返回。
4、一旦接收到 DataNodes 的地址,FSDataInputStream 类型的一个对象被返回到客户端。 FSDataInputStream 包含 DFSInputStream 这需要处理交互 DataNode 和 NameNode。在上图所示的步骤4,客户端调用 read() 方法,这将导致 DFSInputStream 建立与第一个 DataNode 文件的第一个块连接。
5、以数据流的形式读取数据,其中客户端多次调用 “read() ” 方法。 read() 操作这个过程一直持续,直到它到达块结束位置。
6、一旦到模块的结尾,DFSInputStream 关闭连接,移动定位到下一个 DataNode 的下一个块
7、一旦客户端已读取完成后,它会调用 close()方法。

HDFS写操作
如何通过的文件将数据写入到 HDFS。

HDFS写操作.png

1、客户端通过调用 DistributedFileSystem对象的 create() 方法创建一个新的文件,并开始写操作 - 在上面的图中的步骤1
2、DistributedFileSystem对象使用 RPC 调用连接到 NameNode,并启动新的文件创建。但是,此文件创建操作不与文件任何块相关联。NameNode 的责任是验证文件(其正被创建的)不存在,并且客户端具有正确权限来创建新文件。如果文件已经存在,或者客户端不具有足够的权限来创建一个新的文件,则抛出 IOException 到客户端。否则操作成功,并且该文件新的记录是由 NameNode 创建。
3、一旦 NameNode 创建一条新的记录,返回FSDataOutputStream 类型的一个对象到客户端。客户端使用它来写入数据到 HDFS。数据写入方法被调用(图中的步骤3)。
4、FSDataOutputStream包含DFSOutputStream对象,它使用 DataNodes 和 NameNode 通信后查找。当客户机继续写入数据,DFSOutputStream 继续创建这个数据包。这些数据包连接排队到一个队列被称为 DataQueue
5、还有一个名为 DataStreamer 组件,用于消耗DataQueue。DataStreamer 也要求 NameNode 分配新的块,拣选 DataNodes 用于复制。
6、 现在,复制过程始于使用 DataNodes 创建一个管道。 在我们的例子中,选择了复制水平3,因此有 3 个 DataNodes 管道。
7、所述 DataStreamer 注入包分成到第一个 DataNode 的管道中。
8、在每个 DataNode 的管道中存储数据包接收并同样转发在第二个 DataNode 的管道中。
9、 另一个队列,“Ack Queue”是由 DFSOutputStream 保持存储,它们是 DataNodes 等待确认的数据包。
10、 一旦确认在队列中的分组从所有 DataNodes 已接收在管道,它从 'Ack Queue' 删除。在任何 DataNode 发生故障时,从队列中的包重新用于操作。
11、在客户端的数据写入完成后,它会调用close()方法(第9步图中),调用close()结果进入到清理缓存剩余数据包到管道之后等待确认。
12、一旦收到最终确认,NameNode 连接告诉它该文件的写操作完成。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • hadoop HDFS原理解析01 HDFS架构•NameNode•DataNode•Sencondary Nam...
    白菜青萝卜阅读 2,762评论 2 30
  • 思考问题 HDFS的架构 设计前提和目标 专为存储超大文件而设计:hdfs应该能够支持GB级别大小的文件;它应该能...
    Sakura_P阅读 653评论 0 2
  • 首先,我们在使用前先看看HDFS是什麽?这将有助于我们是以后的运维使用和故障排除思路的获得。 HDFS采用mast...
    W_Bousquet阅读 4,240评论 0 2
  • -1- 一辈子,不过就这样子 一辈子。好像很长很长,很远很远,可它又是你此时此刻正在经历着的。多年以后,你回顾如今...
    安筱酒阅读 659评论 2 9
  • 【微公益】【873】【每日经典】【20170914易经13】 同人卦 (天火同人)乾上离下 《同人》:同人于野,亨...
    北冥_鲲阅读 553评论 2 3