HDFS源码解析(0)-----源码阅读技巧

刚开始学习HDFS源码,写篇博客加深下印象

在写这篇博客之前,我们先参考董西成的文章http://dongxicheng.org/mapreduce-nextgen/how-to-read-hadoop-code-effectively/,先了解下前人在阅读hadoop源码时积攒下的经验。根据个人学习的感受,比较赞同董西成的看法,学习hadoop源码应分为以下三个阶段。

源码阅读准备阶段-----从参考书了解hadoop的运行原理

如果是小白读者,只懂一些java语法,对大数据、分布式毫无概念,那么首先应在不看源码的前提下参考一些书籍和博客来了解hadoop的运行机制,个人看的第一本书是《深入理解大数据:大数据处理与编程实践》http://item.jd.com/11506726.html电子档下载地址为http://download.csdn.net/detail/yjwffgip456/8359867,个人认为这本书写的还是比较好的,具体介绍了hadoop的整体机制以及编程思想。《hadoop权威指南》是每个初学者必读的书籍,个人觉得这本书写的比较抽象,建议读者需要下些功夫研究这本书。接下来在了解了什么是 mapreduce  hdfs  partition,shuffle,sort 以后,可以把mapreduce的流程舒畅的画出来时,就应该试着写一些分布式程序,最经典的莫过于hadoop入门程序 wordcount ,在写程序这个时候就是验证读这些书籍成果最好的方式。最初也许程序会有很多bug,此时不要太灰心,解决bug的过程正是对之前阅读书籍的提升和补充,也许这个过程会很痛苦,但是当完成这个过程就会对hadoop的理解有一个质的提升。

尝试阅读源码阶段--- -不断补充知识

也许这个阶段是最为困苦和艰难的,在没有任何基础的情况下阅读源码个人感觉就像是面对一座大山,需要补充的太多了。笔者建议,应该将hadoop分成模块,一个模块一个模块的去阅读,于此同时应学习大数据的设计模式,架构算法等知识,笔者使用的是《大数据日知录-架构与算法》,在阅读完一个模块的时候应该画一个类图将这个模块完全表示出来。个人认为学习一个架构最好的方式莫过于花类图了。画类图笔者使用过starUML和visio,根据个人看法,推荐使用visio,因为starUML只能将图放大至200%,而我们的类图会很大starUML满足不了我们的需求。这也就意味作为准备工作需要学习visio的使用以及UML统一建模语言。

再接下来,就是选择一个模块进行阅读分析。笔者建议向董西成学习,首先,要摸清hadoop的代码模块,知道client,master,slave各自对应的模块(hadoop中核心系统都是master/slave架构,非常类似),并在阅读源代码过程中,时刻谨记当前阅读的代码属于哪一个模块,会在哪个组件中执行;之后你需要摸清各个组件的交互协议,也就是分布式中的RPC,这是hadoop自己实现的,需要对hadoop RPC的使用方式有所了解,然后看各模块间的RPC protocol,到此,你把握了系统的骨架,这是接下来阅读源代码的基础;接着,要选择一个模块开始阅读,一般会选择Client,这个模块相对简单些,会给自己增加信心,为了在阅读代码过程中,不至于迷失自己,在纸上画出类的调用关系。这是一个非常科学的学习方式。在这个学习过程,建议多看一些博客,多看别人是怎样做的。

实现阅读分析过的模块-----根据自己的想法修改源代码

在这个阶段,正是验证你阅读源代码成效的时候。你根据自己对这个模块的理解在做一些改动,修改相关代码完成功能模块的开发。在修改源代码过程中,你发现之前阅读源代码任然不够细致,这时候你再进一步深入阅读相关代码,弥补第二个阶段中薄弱的部分。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值