时序图解析Hadoop HDFS 文件读取访问流程(未完待续)

  最近有一个优化HDFS读取访问的需求,需要根据访问者的位置计算得到最佳的datanode返回给client,工作中,搜索了各种文章和材料,但是几乎没有太深入的,对我这个初学者来说,信息量不大够,所以就自己动手深入的看了一下源码,对相关的机制进行了一定的探索。根据自己的体会写一点心得,文中部分术语不够准确的希望能够留言予以指正。

  • HDFS文件访问的机制

无论那种情形(CLI、Java、REST…),HDFS文件系统最终都是通过在节点上的HDFS Client来实现对文件的访问,在逻辑上来讲,是这样的:

《时序图解析Hadoop HDFS 文件读取访问流程(未完待续)》 client

在实际的物理拓扑中,是这样的:

  • JAVA API client

    《时序图解析Hadoop HDFS 文件读取访问流程(未完待续)》 javaclient

  • REST API client

    《时序图解析Hadoop HDFS 文件读取访问流程(未完待续)》 REST

    担负着Client角色的是org.apache.hadoop.hdfs.DFSClient这个类,它提供了一系列访问HDFS的接口和工具。
    第一幅图是我手动画的,为了熟悉ubuntu下的dia绘图工具,加上删选和操作关联比较紧密的类,前后花了将近4个小时。。。第二幅图是用eclipse的插件Objectaid辅助生成的,手动调整了个别的函数调用,虽然这厮功能强大,但是也有不够完善的地方,不过瑕不掩瑜,毕竟比dia方便很多。

  • Java API 方式文件读取时序图一(Using dia):

《时序图解析Hadoop HDFS 文件读取访问流程(未完待续)》 Hadoop HDFS open文件操作时序图

  • Java API 方式文件读取时序图二(Using Objecaid for eclipse):

《时序图解析Hadoop HDFS 文件读取访问流程(未完待续)》 Java API sequence

  • webHDFS Client get操作时序图(Using Objecaid for eclipse):

《时序图解析Hadoop HDFS 文件读取访问流程(未完待续)》 REST sequence

  待续

    原文作者:耗子在简书
    原文地址: https://www.jianshu.com/p/aaa9169552be
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞