大数据我爱编程大数据

hadoop(8)--下载数据源码解析(下)

2018-04-16  本文已影响51人  ROCK_杰哥

在这里说声sorry,由于最近事情很杂,所以更新的有些慢,请读者们多担待
下载数据中还有一句:
FSDataInputStream input = fs.open(new Path("/jdk-8u161-linux-x64.tar.gz"));
今天就这一句话进行源码的剖析
首先看到fs.open(),肯定是执行了DistributedFileSystem的open方法,这一点是毋庸置疑的,那么分析一下,一个输入流,jdk文件,因为jdk文件存到hdfs上是以切片的block形式存在,block又在DataNode上存着,所以肯定是通过DistributedFileSystem的namenode客户端拿到了block的位置信息,再通过RPC远程调用拿到NameNode的输入流,这样是想的清楚,那么来看看源码是不是这样的


image.png

进入到DistributedFileSystem的open方法


image.png
这里最重要的就是这一句话,这一句话返回了FSDataInputStream
继续进去看
image.png
调的是
image.png
这里是关键,将自己作为参数传进去,这是DFSClient
image.png

这个就是DFSInputStream的构造方法,重点就是这个openInfo()


image.png
这一句话就是openInfo的重点
进去看一下
image.png
这里看到了曙光
LocatedBlocks这就就是blocks的位置信息
OK!下载数据的源码分析就到这里,下次分享MapReduce
上一篇 下一篇

猜你喜欢

热点阅读