2HDFS读操作
2016-02-17 21:44:27 3 举报
HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,它是一个高度容错性的系统,设计用于在廉价硬件上部署在大规模节点上。HDFS提供了高度容错性、高吞吐量和可扩展性的数据存储解决方案。HDFS的读操作是通过客户端程序发起的,客户端程序会向NameNode发送请求,NameNode会返回数据块的位置信息,客户端程序再根据这些信息从DataNode上读取数据。HDFS支持多种文件类型,包括文本文件、二进制文件等。HDFS还提供了一些高级功能,如数据压缩、数据加密等。总之,HDFS是一个强大而灵活的数据存储解决方案,适用于各种大数据应用场景。
作者其他创作
大纲/内容
读流程
DistributedFileSystem
6.close
3.read
DataNode
NameNode
datanode
5 read
4 read
1. 客户端通过调用FileSystem对象的open()方法来打开希望读取的文件,对于HDFS来说,这个对象时分布文件系统的一个实例;2. DistributedFileSystem通过使用RPC来调用NameNode以确定文件起始块的位置,同一Block按照重复数会返回多个位置,这些位置按照Hadoop集群拓扑结构排序,距离客户端近的排在前面;3. 前两步会返回一个FSDataInputStream对象,该对象会被封装成DFSInputStream对象,DFSInputStream可以方便的管理datanode和namenode数据流,客户端对这个输入流调用read()方法;4. 存储着文件起始块的DataNode地址的DFSInputStream随即连接距离最近的DataNode,通过对数据流反复调用read()方法,可以将数据从DataNode传输到客户端;5. 到达块的末端时,DFSInputStream会关闭与该DataNode的连接,然后寻找下一个块的最佳DataNode,这些操作对客户端来说是透明的,客户端的角度看来只是读一个持续不断的流;6. 一旦客户端完成读取,就对FSDataInputStream调用close()方法关闭文件读取。
FSDataInputStream
client
namenode
1 open
HDFSClient
2. get block location
0 条评论
回复 删除
下一页