HDFS中的读写数据流

1.文件的读取:

    首先、客户端铜鼓调用FileSystem对象中的open()函数读取它需要的数据。FileSystem是HDFS中DistributeFileSystem的一个实例。DistributeFileSystem会通过RPC协议调用NameNode来确定请求文件所在的位置,对于每个返回的块都包换块所在的DataNode地址,随后这些返回的DataNode会按照Hadoop定义的集群拓扑结构得出客户端的距离。然后再进行排序,如果客户端本身就是一个DataNode那么它将从本地读取文件。这里要关注的一个设计要点是,客户端通过NameNode引导获取最合适的DataNode地址,然后直接连接DataNode读取数据。这种设计的好处,这可以使HDFS扩展到更大规模的客户端并行处理。这是因为数据的流动所有的DataNode之间分散进行的,同时NameNode的压力也变小。

2.文件写入

①客户端通过调用DistributeFileSystem对象中的Create()创建一个文件,通过RPC()调用在NameNode的文件系统命名空间中创建一个新文件。

②NaneNode会通过多种验证保证新的文件不存在文件系统中,并且确保请求客户端有创建按文件的权限。如果成功distributeFileSystem返回一个FSDataOutputStream给客户端写人数据

③当客户端写入数据时,DFSoutputStream会将文件分割成包,然后放入内部队列,DataStreamer,作用是请求NameNode为新的文件包分配合适的DataNode存放副本。

④DFSoutputStream同时也会保存在一个包的内部队列,用来等待管道中的DataNode返回确认信息。

《hadoop实战第二版》… 机械工业出版社 ….. 陆嘉恒著;

转载于:https://my.oschina.net/u/782865/blog/126504

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值