立即注册 登录
About云-梭伦科技 返回首页

pergrand的个人空间 https://www.aboutyun.com/?41686 [收藏] [复制] [分享] [RSS]

日志

通过源码看hadoop读取文件过程

热度 2已有 1483 次阅读2016-9-23 17:43 |个人分类:hadoop


个人看源码的思路:1.如果是项目中,就通过跟踪参数,很慢但对于问题排查会很准确,也可以了解源码
2.平时阅读源码:先抛出问题,找到入口,在抛弃问题由入口深入,到最后看通之后在结合问题,绘出每每一个过程,学习每个过程中用到的技术。
3.具体阅读方法:由入口类进入,看创建了什么对象,什么时候创建的,对象的作用,类中有什么集合,集合的作用,集合什么时候创建的。

对于hdfs的读写过程,很早之前通过网上各种资源也很“清楚”,感觉已经很了解过程,但是自己又懒得背别人写的那两段很长的过程,只能自己总结适合自己理解的一套。这里通过源码分析读取文件过程,顺便介绍其中用到的基础知识。
filesystem fs = filesystem.get(new URI("hdfs://0.0.0.0:90000"), new Configuration());
InputStream in = fs.open("/demo.txt");
OutputStream out = new FileOutputStream("/out.txt");
IOUtis.copyBytes(in ,out, 4096,true);

本想将自己分析过程写出来,怕会把人看晕,就宏观上从整个过程来记录。
第一句是创建个fs对象,什么时候创建的?
1.进入get()查看,get()方法返回一个getInternat()方法;这个过程是先进入类加载器,加载URI和Configuration(jvm过程虽然看过jvm精讲还是理解的不深,待以后研究的深入了在做记录);
2.getInternat()方法(当然是将uri,conf作为参数传入,为了简单就没写),创建fs,进入查看,里面使用了单例模式,懒汉(lazz)加载方法,懒汉加载就是时间换空间,这里为什么使用懒汉式呢,个人理解hadoop对内存的使用时精打细算的,就像中国人口一样,极小的数据也经不起海量的汇总,所以尽可能避免什么东西都往加载内存中,所以不使用饿汉式加载(用不用都加载到内存)。
加载配置文件后呢?配置文件中使用了filesystem的父类DistributedFileSystem;这里使用的技术是多态,调用父类的方法。所以进父类看
先不看DistributedFileSystem;先研究下创建fs的代码fs=Reflectionutils.newIstance(lazz,conf);这里使用的是反射技术,lazz上面已经分析了。
3.进入DistributedFileSystem,略过无关代码,看到new DFSClient(uri,conf,?);还有各参数忘记了也没细究含义,只关注uri和conf就行。
接下来就很不容易看了,说出主要的,创建代理对象namenodeProxies,作用是对RPC封装;RPC是什么?我曾经看源码分析过,只能说呵呵需要用到很多技术很深后面再总结。代理对象namenodeProxies.createProxy()创建代理参数还是有的没有去记。再后面就是获取服务端代理对象namenodeRPCServer 这是RPC做的,这里可以知道客户端和服务端原来是这么使用RPC通信的。以上就是DistributedFileSystem中的工作。
4.fs对象已经创建了,准备工作,通信也有了,下面就是第二句的工作了,读取文件。这个比较简单,里面有个技术点会尝试三次读文件,三次读不到就抛异常。为什么是三次:通过dfsClient.getconf().***获得的,然后每尝试一次减一。
5.读取文件的元数据信息,这步是发生在服务端去namenode去读取:代码就是在namenodeRPCServer中有个getblocklocation()方法。这里可以联想到namenode存放元数据信息和文件对应的数据库列表的含义。穿起来就是服务端对象namenoderpcserver和client端的服务端代理对象通过rpc通信,将获得的元数据信息给客户端建立通信。怎么获得元数据信息的没细看。

总结:简单点两行代码,牵扯出很多,这还只是简单的去了解整个过程,没细深入研究。
对于研究源码的意义?1.学习里面的技术应用。2.弄清过程,模仿实现过程。3.装。
这个是前几天总结的,绘出一个流程图,心中有图就不用记这一堆啰嗦的话了。


路过

雷人
2

握手

鲜花

鸡蛋

刚表态过的朋友 (2 人)

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

关闭

推荐上一条 /2 下一条