注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

淘尽网 官方博客

淘尽网http://www.tao3w.com做最好的比价网站

 
 
 

日志

 
 
关于我

淘尽网 http://www.tao3w.com 做最好的比价网站,做最好的数据抓取专家。

网易考拉推荐

分布式文件系统--Hadoop基础学习  

2012-09-26 15:37:34|  分类: 推荐系统 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
所谓分布式,在这里,很狭义的指代以Google的三驾马车,GFSMap/ReduceBigTable为 框架核心的分布式存储和计算系统。通常如我一样初学的人,会以Google这几份经典的论文作为开端的。它们勾勒出了分布式存储和计算的一个基本蓝图,已 可窥见其几分风韵,但终究还是由于缺少一些实现的代码和示例,色彩有些斑驳,缺少了点感性。幸好我们还有Open Source,还有Hadoop。Hadoop是 一个基于Java实现的,开源的,分布式存储和计算的项目。作为这个领域最富盛名的开源项目之一,它的使用者也是大牌如云,包括了 Yahoo,Amazon,Facebook等等(好吧,还可能有校内,不过这真的没啥分量…)。Hadoop本身,实现的是分布式的文件系统 HDFS,和分布式的计算(Map/Reduce)框架,此外,它还不是一个人在战斗,Hadoop包含一系列扩展项目,包括了分布式文件数据库HBase(对应Google的BigTable),分布式协同服务ZooKeeper(对应Google的Chubby),等等。。。
如此,一个看上去不错的黄金搭档浮出水面,Google的论文 + Hadoop的实现,顺着论文的框架看具体的实现,用实现来进一步理解论文的逻辑,看上去至少很美。网上有很多前辈们,做过Hadoop相关的源码剖析工作,我关注最多的是这里,目前博主已经完成了HDFS的剖析工作,Map/Reduce的剖析正火热进行中,更新频率之高,剖析之详尽,都是难得一见的,所以,走过路过一定不要错过了。此外,还有很多Hadoop的关注者和使用者贴过相关的文章,比如:这里这里。也可以去Hadoop的中文站点(不知是民间还是官方…),搜罗一些学习资料。。。
我个人从上述资料中受益匪浅,而我自己要做的整 理,与原始的源码剖析有些不同,不是依照实现的模块,而是基于论文的脉络和实现这样系统的基本脉络来进行的,也算,从另一个角度给出一些东西吧。鉴于个人 对于分布式系统的理解非常的浅薄,缺少足够的实践经验,深入的问题就不班门弄斧了,仅做梳理和解析,大牛至此,可绕路而行了。。。

一. 分布式文件系统

分布式文件系统,在整个分布式系统体系中处于最低层最基础的地位,存储嘛,没了数据,再好的计算平台,再完善的数据库系统,都成了无水之舟了。那么,什么是分布式文件系统,顾名思义,就是分布式+文件系统。 它包含这两个方面的内涵,从文件系统的客户使用的角度来看,它就是一个标准的文件系统,提供了一系列API,由此进行文件或目录的创建、移动、删除,以及 对文件的读写等操作。从内部实现来看,分布式的系统则不再和普通文件系统一样负责管理本地磁盘,它的文件内容和目录结构都不是存储在本地磁盘上,而是通过 网络传输到远端系统上。并且,同一个文件存储不只是在一台机器上,而是在一簇机器上分布式存储,协同提供服务,正所谓分布式。。。
因此,考量一个分布式文件系统的实现,其实不妨 可以从这两方面来分别剖析,而后合二为一。首先,看它如何去实现文件系统所需的基本增删改查的功能。然后,看它如何考虑分布式系统的特点,提供更好的容错 性,负载平衡,等等之类的。这二者合二为一,就明白了一个分布式文件系统,整体的实现模式。。。

I. 术语对照

说任何东西,都需要统一一下语言先,不然明明说 的一个意思,却容易被理解到另一个地方去。Hadoop的分布式文件系统HDFS,基本是按照Google论文中的GFS的架构来实现的。但是,HDFS 为了彰显其不走寻常路的本性,其中的大量术语,都与GFS截然不同。明明都是一个枝上长的土豆,它偏偏就要叫山药蛋,弄得水火不容的,苦了我们看客。秉承 老好人,谁也不得罪的方针,文中,既不采用GFS的叫法,也不采用Hadoop的称谓,而是另辟蹊径,自立门户,搞一套自己的中文翻译,为了避免不必要的 痛楚,特此先来一帖术语对照表,要不懂查一查,包治百病。。。
文中所用翻译HDFS中的术语GFS中的术语术语解释
主控服务器NameNodeMaster整个文件系统的大脑,它提供整个文件系统的目录信息,并且管理各个数据服务器。
数据服务器DataNodeChunk Server分布式文件系统中的每一个文件,都被切分成若干个数据块,每一个数据块都被存储在不同的服务器上,此服务器称之为数据服务器。
数据块BlockChunk每个文件都会被切分成若干个块,每一块都有连续的一段文件内容,是存储的基恩单位,在这里统一称做数据块。
数据包Packet客户端写文件的时候,不是一个字节一个字节写入文件系统的,而是累计到一定数量后,往文件系统中写入一次,每发送一次的数据,都称为一个数据包。
传输块Chunk在每一个数据包中,都会将数据切成更小的块,每一个块配上一个奇偶校验码,这样的块,就是传输块。
备份主控服务器SecondaryNameNode备用的主控服务器,在身后默默的拉取着主控服务器 的日志,等待主控服务器牺牲后被扶正。
  评论这张
 
阅读(196)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017