Hadoop 如何浏览百万行 的源码

  • 电脑网络维修
  • 2024-11-15

一、浏览 HDFS 源码的缘由

HDFS 是大数据的最基础的设备了,简直一切的离线存储都在 HDFS 上。

然而在大规模 HDFS 集群中,上方的疑问通常会让咱们无比头疼:

以上种种疑问,都须要咱们浏览源码,甚至要修正它的源码能力处置。

所以虽然浏览源码十分痛苦,然而这个坎还是得过的。

二、如何浏览 Hadoop 这样的百万行代码的开源名目

首先 hadoop 是用 java 写的,所以一些 java 基础常识必无法少,比如锁,线程,设计形式,java 虚构机,javaio,不求很深化,基础得悉道。

其次,不能一行行的读代码,这样很容易迷失在无际际的代码中,逃不出来,最后很容易就丢弃了。

最后,以详细场景来驱动代码浏览。比如本文就是以 NameNode 的启动环节,来驱动代码浏览的。并且把关键的流程节点和类用流程图记载上去。

三、源码走读

找到 NameNode 类

从 main 方法开局,创立 NameNode

进入这个方法:

有很多的 switch case ,因为咱们启动命令是 hadoop-daemon.sh start namenode,所以间接运转到 default外面:

这是个比拟关键的方法,实例化:

实例化方法里,有个比拟关键的操作,startHttpServer(conf),启动 50070 端口,就是咱们 50070 那个界面:

出来,经常使用 ip 和 端口创立了 HttpServer

再来看这个 start 方法

进入 start 方法,发现创立了一个 HttpServer2,这是 Hadoop 自己封装的服务

然后绑定了很多 Servlet,每个 Servlet 都是一特性能

可以看到画红线的,就是每特性能的地址。假构想看每特性能怎样成功的,可以点出来 Servlet,看它的 doGet 或许 doPost 或许 doPut方法。

看完了这个,再退回到 NameNode 类中,然后就是去加载元数据(先不细看)

然后是创立 RPC 服务端,启动一个服务端,给别的组件调用

看这个方法:

看这个中央,这个就是经常使用 hadoop 的 RPC ,来创立一个 RPC 服务端了。此时咱们在 NameNodeRpcServer 类中。

创立了之后,再回到 NameNode 中,发现这个 NameNodeRpcServer 是 NameNode 类的一个属性,意思是,NameNode委托这个类去启动了 NameNodeRpcServer,在设计形式中,属于组合。

然后咱们再来看这个 NameNodeRpcServer ,成功了很多的协定:

咱们尝试在 ClientProtocol 中,找一找能否有创立目录的方法。

发现是有的,所以 NameNodeRpcServer 会去成功这个方法的。

到时刻 NameNode 启动之后,就会往外提供服务了。

然后咱们再回到 NameNode 类,看最后一些性能:

startCommonServices,关键做了两件事情,启动资源监察,审核磁盘够不够;审核能否可以分开安保形式。

这个方法会审核性能文件中 fsimage 的目录 和 editlog 的目录磁盘资源能否短缺。

最终会把磁盘能否足够的布尔值赋值给这个变量。

然后会判别能否进入安保形式:

进入这个方法中:

这个 getCompleteBlocksTotal() 前往的是能反经常常使用的 Block 个数。

这个是怎样算的呢?

在 HDFS 中,存在两种类型的 Block,一种是 Complete 类型,即为反常可用的 Block;另一种是 underconstruction类型,处于正在构建的 Block,相减,就是反常可用的 Block 个数了。

然后进入 checkMode 方法

出来之后,有一个 needEnter() 方法,这个方法里,判别了能否进入安保形式

这外面有三个进入安保形式的条件:

咱们来看第一个条件:

threshold 自动性能是 0.999 ,不等于0;

blockSafe 可以在类中搜查一下。

这个就示意,DataNode 每次心跳都要和 NameNode 汇报 自己的 Block 个数,每次汇报,这个值都会加 1.

假设>

  • 关注微信

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://duobeib.com/diannaowangluoweixiu/8041.html

猜你喜欢

热门标签

洗手盆如何疏浚梗塞 洗手盆为何梗塞 iPhone提价霸占4G市场等于原价8折 明码箱怎样设置明码锁 苏泊尔电饭锅保修多久 长城画龙G8253YN彩电输入指令画面变暗疑问检修 彩星彩电解除童锁方法大全 三星笔记本培修点上海 液晶显示器花屏培修视频 燃气热水器不热水要素 热水器不上班经常出现3种处置方法 无氟空调跟有氟空调有什么区别 norltz燃气热水器售后电话 大连站和大连北站哪个离周水子机场近 热水器显示屏亮显示温度不加热 铁猫牌保险箱高效开锁技巧 科技助力安保无忧 创维8R80 汽修 a1265和c3182是什么管 为什么电热水器不能即热 标致空调为什么不冷 神舟培修笔记本培修 dell1420内存更新 青岛自来水公司培修热线电话 包头美的洗衣机全国各市售后服务预定热线号码2024年修缮点降级 创维42k08rd更新 空调为什么运转异响 热水器为何会漏水 该如何处置 什么是可以自己处置的 重庆华帝售后电话 波轮洗衣机荡涤价格 鼎新热水器 留意了!不是水平疑问! 马桶产生了这5个现象 方便 极速 邢台空调移机电话上门服务 扬子空调缺点代码e4是什么疑问 宏基4736zG可以装置W11吗 奥克斯空调培修官方 为什么突然空调滴水很多 乐视s40air刷机包 未联络视的提高方向 官网培修 格力空调售后电话 皇明太阳能电话 看尚X55液晶电视进入工厂形式和软件更新方法 燃气热水器缺点代码

热门资讯

关注我们

微信公众号