hdfs获取输入流跟踪

测试代码如下:


从上面例子可以看出fs对象open方法获取输入流对象,那么获取输入流对象可以获取什么信息呢?通过跟踪我们可以看出输入流信息非常丰富,比如:namenode信息,block块信息,大小,是否完整,块信息,还有远程通信的代理对象信息等。那么就让我们跟踪了解其原理:

首先fs对象调用open方法,设置缓存大小为4096,相当于磁盘一个簇的大小,(我认为设置这样的大小速度效率应该为佳),返回FSDataInputStream对象,因为此方法为抽象则调用子类方法

子类方法如下图


我们可以进行debugger调试,执行docall方法,调用dfs的open方法(dfsClent),通过调试我们可以获取DFSInputStream创建时会获取相关信息如下:


此时会获取openInfo方法,这个方法就是根据我们设置的一些参数来获取namenode,block等信息


从上述代码追踪可知,当我们open时获取fs操作的很多相关信息。由上面图及解析现在可以知道获取流对象的相关信息及原理了吧,不过最好自己动下手这样更清晰一些。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值