没有合适的资源?快使用搜索试试~ 我知道了~
首页Hadoop源代码分析之HDFS篇.
资源详情
资源评论
资源推荐
Hadoop 源代码分析之 HDFS 篇
前言:
网上已经有了一些技术博客来分析 ,这里的分析基于以下的技术博客,并感谢,本文的源代码分
析结合了技术博客和 版本的源代码,并融入了自己的理解。汇总如下,
侧 重 的 分 析 , 是 我 学 习 的 重 要 参 考 资 料 和 起 点 。
侧重 的分析,暂时还没有深入学习。
!"有部分 ,也有 # 的分析。暂时还没有深入学习。
!" 的官方 $%& 说明
本文的分析以 为基础,但侧重点不同。本文分析的目标如下:
, 删繁就简,考虑一个最简单、能跑起来的 是如何实现的,对于一些系统升级等细节不涉及。
', 理清系统的主要模块之间的交互关系,便于从整体上把握系统。对模块采用内外两种方式分析。先搞
明白模块的外部接口,干什么用,怎么用。再考虑模块的内部是如何怎么实现的。技术博客中对模块
内部是如何实现的解释比较多,本文更多的从如何使用模块的角度讲
(, 从改进和研究的角度去看系统,重点关注有研究价值部分的代码(例如,块的放置策略,
的调度策略)实现,找到相关的代码,搞清楚修改代码需要使用哪些 $%&,目前的实现策略是什么。
目前状况:分析了部分代码,)) 的分析只完成了部分,很多细节还没有看明白。
整体概览
*主要的包与功能介绍
%+! "
提供一些命令行工具,如 ",,
的 实现
-
提供 文件的本地缓存,用于加快 的数据访
问速度
-"
文件系统的抽象,可以理解为支持多种文件系统实现的统一文
件访问接口
-"
, 的分布式文件系统实现
一个简单的 &%, 的实现,依赖于 提供的编解码功能
参考:.!/(01!/2(2
表示层。将各种数据编码解码,方便于在网络上传输。
完成对象的序列化与反序列化。
封装部分网络功能,如 ),"+
"
用户和用户组信息
-
系统的配置参数
"
系统统计数据的收集,属于网管范畴
工具类
根据 #(数据描述语言)自动生成他们的编解码函数,目前
可以提供 ,33和 4
基于 4 的 55%,用户通过浏览器可以观察文件系统
的一些状态信息和日志
!
提供 55% 访问日志的 55%
HDFS 的设计概述:
NameNode 的设计
维护名字空间,是 中文件目录和文件分配的管理者。
保存的重要信息如下:
文件名————6数据块,)) 在其本地磁盘上保存为文件(持久化)
对目录树和文件名的更新——6数据块,使用操作日志来保存更新。
数据块————6) 列表,)) 不存,通过 ) 上报建立起来。
一 个 集 群 上 可 能 包 含 成 千 个 ) 节 点 , 这 些 ) 定 时 和 )) 通 信 , 接 受
)) 的指令。为了减轻 )) 的负担,)) 上并不永久保存那个 ) 上有那些数据
块的信息,而是通过 ) 启动时的上报,来更新 )) 上的映射表。
) 和 )) 建立连接以后,就会不断地和 )) 保持心跳。心跳的返回其还也包含了
)) 对 ) 的一些命令,如删除数据库或者是把数据块复制到另一个 )。应该注意的
是:)) 不会发起到 ) 的请求,在这个通信过程中,它们是严格的客户端服务器架构。
) 当然也作为服务器接受来自客户端的访问,处理数据块读写请求。) 之间还会相互通信,
执行数据块复制任务,同时,在客户端做写操作的时候,) 需要相互配合,保证写操作的一致性。
下面我们就来具体分析一下 ) 的实现。) 的实现包括两部分,一部分是对本地数据块的管
理,另一部分,就是和其他的实体打交道。我们先来看本地数据块管理部分。
安装 的时候,我们会指定对应的数据块存放目录,当我们检查数据块存放目录目录时,我们回发
现下面有个叫 -" 的目录,所有的数据就存放在 -" 里面。
其中有两个文件,"! 里存的东西是一些出错信息,貌似是版本不对…云云。7"+ 是一个空文件,
它的作用是如果需要对整个系统做排斥操作,应用应该获取它上面的一个锁。
接下来是 ( 个目录, 存的是当前有效的数据块, 存的是快照("",目前没有实现),
保存的是一些操作需要的临时数据块。
但我们进入 目录以后,就会发现有一系列的数据块文件和数据块元数据文件。同时还有一些子目录,
它们的名字是 " 到 "2(,子目录下也有数据块文件和数据块元数据。这是因为 限定了每个
目录存放数据块文件的数量,多了以后会创建子目录来保存。
数据块文件显然保存了 中的数据,数据块最大可以到 21。每个数据块文件都会有对应的数据块元
数据文件。里面存放的是数据块的校验信息。下面是数据块文件名和它的元数据文件名的例子:
+7(1/0/'2(021(((
+7(1/0/'2(021(((7'1'/'
上面的例子中,(1/0/'2(021((( 是数据块的 & 号,'1'/' 是数据块的版本号,用于一致性检查。
在 目录下还有下面几个文件:
89&:),保存了一些文件系统的元信息。x
7+7-! 和 7+7-!,它记录了一些 ) 对文件系定时
统做一致性检查需要的信息。
DataNode 的设计
存储数据块,一个数据块在多个 ) 上有备份,而一个 ) 上对于一个数据块最多只有一个备
份。
NameNode 和 DataNode 的实现
HDFS 的包的结构图:
!-"
;<
;<=+
;<=+#"$"#!"
;<=+">#"
;<,)%
;<,%
;<)&
;<)&-
;<5"-%
;<,""
;<#=+
;<#=+"
;<"
;<
;<?
;<-",""
;<!
;<!&-
;<@! 相关的
;<
;<!"
;<%
;<)%
;<)"&-
;<)"%
;<&%
;<,
;;<=+&-
;<,
;<=+">#"
;<
;<=+
;<=+
;<=+5"-5
;<)
;<=+&-
;<!
;<A
;<A
;<&-
;<
;<
;<
;<
;<
;<
;<
;<
;<
;<
;<
;<
;<
;<
;<
;<
;<
;<
;<
;<
;<
;<
;<
NameNode 的实现
INode 相关的类
我们先分析 &)B,类 &)B抽象了文件层次结构。如果我们对文件系统进行面向对象的抽象,一
定会得到和下面一样类似的结构图(类 &)B):
剩余49页未读,继续阅读
cycccj2002
- 粉丝: 2
- 资源: 14
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 27页智慧街道信息化建设综合解决方案.pptx
- 计算机二级Ms-Office选择题汇总.doc
- 单链表的插入和删除实验报告 (2).docx
- 单链表的插入和删除实验报告.pdf
- 物联网智能终端项目设备管理方案.pdf
- 如何打造品牌的模式.doc
- 样式控制与页面布局.pdf
- 武汉理工Java实验报告(二).docx
- 2021线上新品消费趋势报告.pdf
- 第3章 Matlab中的矩阵及其运算.docx
- 基于Web的人力资源管理系统的必要性和可行性.doc
- 基于一阶倒立摆的matlab仿真实验.doc
- 速运公司物流管理模式研究教材
- 大数据与管理.pptx
- 单片机课程设计之步进电机.doc
- 大数据与数据挖掘.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0