HDFS设计思想

硬件故障是常态

HDFS的目标是在有机器故障时仍能保证数据可靠,并自动进行故障恢复。

流式数据访问

HDFS主要为批处理应用设计,而非交互式应用,看重数据访问的吞吐量而非访问延迟。

海量大文件存储

HDFS主要针对大文件存储设计,一个典型的HDFS文件大小在数G到数T之间,由多个64M的block组成,一个集群内能支持海量的文件(百万至千万级别)。

简单的一致性模型

HDFS提供一次写多次读(write-once-read-many)的访问模型,文件只允许在末尾追加数据,这种模型简化了多副本一致性问题,提供高的数据访问吞吐量,非常适合做map/reduce。

迁移计算vs迁移存储

【把计算调度到数据所在的位置远】比【把数据迁移到计算所在位置】成本低,HDFS提供了接口将应用移到离数据近的位置。

支持异构软硬件

 HDFS基于跨平台的java语言开发,能方便的兼容各种异构的软硬件。

全局中心节点

NameNode(NN)是HDFS里的中心管理节点,NN上的元数据全内存化,元数据主要分为两个部分:(1) 文件的元信息,如大小、时间戳、包含的block等;(2) block到DataNode(DN)的映射关系。前者持久化在NN本地,而后者则是在集群里DN启动时,由DN汇报上来。

元数据持久化

NN以fsimage的形式将集群内所有文件的元数据存储到本地,成,运行过程中NN会将文件系统的更改(如创建新的文件)记录到editlog。NN启动时,加载fsimage,并合并editlog的更改日志,在内存里建立整个文件系统的目录树结构;

存储节点管理

DN在启动时,会向NN汇报存储的block信息,并周期性的向NN发送心跳信息,NN超过一定时间没有收到DN的心跳,就认为DN发生故障。 

副本放置策略

HDFS通常配置3个副本,在创建block时,会将其中二个副本存储到离客户端近的机架里,将第三个副本存储到另外的机架;由于机架内部的网络带宽远大于机架间的网络带宽,HDFS的策略实际上是数据安全(所有副本分散在不同机架)与写数据效率(所有副本分散在同一机架)的折中方案。

故障恢复

当DN机器发生故障时(通常是磁盘坏掉),该磁盘上存储block的副本都会出现副本不足,NN会复制这批block,让其副本达到安全值。

安全模式

HDFS集群刚启动时,所有的DN都会向NN汇报block,当集群规模较大时汇报时间也会较长。NN启动后会先以安全模式运行一段时间(如30s),等待DN汇报block完毕,待安全模式时间过后,一旦NN检测到block副本数不足,就会对block进行复制。

负载均衡

当集群内某个DN空闲的存储空间太少时,NN会主动将该DN的一些数据(block)迁移到其他的DN上;另外,当某个block的数据访问量较大时,NN会主动创建该block额外的副本,用于分担访问请求。

数据完整性

用户从DN读取文件数据时,因DN磁盘或网络问题、软件bug等原因,客户端可能读到错误的数据。HDFS在写入文件时,为文件的每个block计算校验和,当读取文件数据时,客户端通过对数据计算校验和来确认读到数据的完整性。

流水线复制

客户端在写入时,为保证最大吞吐量,客户端会将数据先缓存到本地文件,当客户端缓存的数据超过一个block大小时,会向NN申请创建block,将数据写到block里。在往block的多个副本写入数据时,HDFS采用流水线复制的方式,比如block的三个副本在A、B、C上,客户端将数据推送给最近的A、A收到数据后立即推送给B、B推送给C,等所有副本写入成功后,向客户端返回写入成功,当文件所有的block都写入成功后,客户端向NS请求更新文件的元信息。

参考资料

http://hadoop.apache.org/docs/r0.18.0/hdfs_design.pdf

时间: 2024-09-17 04:27:47

HDFS设计思想的相关文章

HDFS设计思路,HDFS使用,查看集群状态,HDFS,HDFS上传文件,HDFS下载文件,yarn web管理界面信息查看,运行一个mapreduce程序,mapreduce的demo

26 集群使用初步 HDFS的设计思路 l 设计思想   分而治之:将大文件.大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析:   l 在大数据系统中作用: 为各类分布式运算框架(如:mapreduce,spark,tez,--)提供数据存储服务   l 重点概念:文件切块,副本存放,元数据 26.1 HDFS使用 1.查看集群状态 命令:   hdfs  dfsadmin –report 可以看出,集群共有3个datanode可用 也可打开web控制台查看

Android 3.0设计思想规范和UI设计规范

文章描述:Android 3.0(蜂巢)交互&UI设计规范. Android OS自上市以来,由于缺乏统一规划,使得不同设备在 1.5.1.6.2.0.2.1.2.2.2.3几大版本徘徊,本人用的HTC Hero(俗称G3)也是从1.5~2.3一个个版本,10多个rom手动刷机试过来的,过程及其纠结 ~.多系统版本带来的问题就是缺乏交互.UI的一致性,外加硬件厂商HTC.摩托罗拉.三星.夏普(创新工场点心OS).小米(MIUI)等公司热衷于UI的个性化发挥,以及民间高手的DIY rom 等因素,

从网站抄袭谈民间设计思想匮乏

设计  网易学院:蓝色你好,很高兴能约你作这期关于设计的访谈.中国有句老话,叫"盗亦有道",但在互联网上,很多人显然忘记了这句古训.如今在网上有很多网站都跟你的网站是一样的.说的好听是模范.借鉴,说得不好其实性质就是抄袭甚至是照搬.您是怎么看这个问题的. 蓝色:这个问题是由来以久的,现在的网络开发者,有大致三种,一种是半道出家,一种是程序员出身,一种是设计师出身. 有很多人是半路出家的,不是程序师,也不是设计师出身,他们有自己做网站的优势,比如对某个专业了解.有兴趣.有精力,所以选择了

jQuery设计思想 读书笔记

jQuery是目前使用最广泛的javascript函数库.据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库.微软公司甚至把jQuery作为他们的官方库. 对于网页开发者来说,学会jQuery是必要的.因为它让你了解业界最通用的技术,为将来学习更高级的库打下基础,并且确实可以很轻松地做出许多复杂的效果. 虽然jQuery上手简单,比其他库容易学会,但是要全面掌握,却不轻松.因为它涉及到网页开发的方方面面,提供的各种方法和内部变化有上千种之多.初学者常常感到,入门很方便,

Draw2D--1. 设计思想和相关模式

设计 1.  Draw2d 设计思想 Draw2d是一个宿主在SWT Composite控件中的轻量级的构件(widge)系统.一个Draw2d应用程序由一个 SWT Composite控件, 一个轻量级系统, 以及其内容(figures)组成.Figures是Draw2d的建造块.下面的"Hello World"例子程序演示了如何实现一个最简单的draw2d程序.Listing for "Hello World" import org.eclipse.swt.wi

面向对象设计思想(C#)

       有了翅膀才能飞,欠缺灵活的代码就象冻坏了翅膀的鸟儿.不能飞翔,就少了几许灵动的气韵.我们需要给代码带去温暖的阳光, 让僵冷的翅膀重新飞起来.结合实例,通过应用OOP.设计模式和重构,你会看到代码是怎样一步一步复活的. 为了更好的理解设计思想,实例尽可能简单化.但随着需求的增加,程序将越来越复杂.此时就有修改设计的必要, 重构和设计模式就可以派上用场了.最后当设计渐趋完美后,你会发现,即使需求不断增加,你也可以神清气闲,不用为代码设计而烦恼了.       假定我们要设计一个媒体播放

设计思想:产品的成功都有三个必备要素

文章描述:设计思想:产品的成功都有三个必备要素. 对于流行的"敏捷发布"概念,我的感情很复杂.一方面我自己就是敏捷发布的忠实支持者,但又看到了对它大量的滥用,甚至我自己也有可能滥用. 前些日子看见一个典型案例,一同行说,自己的新浪微博应用,从提出创意到发布只用了6天,6天!这款应用叫"APP汇",思路上挺带感的APP社交推荐服务.从正面的意义讲,尽早拿出一个可用原型来接受市场检验,再根据真实数据与反馈来调整产品,远比隔靴搔痒的"用户建模.竞品分析"

简单分析网易网首页的设计思想

原文:http://www.ued163.com/?p=369 很多人可能认为门户网站首页设计只是把一些导航.资讯内容和广告堆积起来摆放得好看就可以了,虽然这个观点也并不是完全错误的,确实门户网站首页是由这三方面内容组织而成,但随着互联网的快速发展,用户对访问网站的要求也越来越高,在互联网行业,因为很多东西是免费和相似的,用户转移成本会比较低,在这个网站有的东西去其他网站基本都能找到,只是输入个网址就可以了.网站营运商如果想留住用户和吸引更多的用户浏览自己的网站,那这个时候就是需要提高网站的用户

以用户为中心的设计思想不完全正确

长期以来,中国的教育都是"填鸭子"式的应试教育,不管是什么样的学生,都采用的是同样的教程同样的教学方式,所以造成了很多从学校走出来的学生缺乏应有的生存技能.正是因为存在这样的情况,所以很多学校都开始打出"因材施教"的口号,虽然很多时候这只是一个口号而已,但起码也是一种进步,起码开始区分不同的"材". 其实这就犹如是WEB设计的进步,从最初的以产品设计者为中心的设计,到现在的以用户为中心的设计,只有本质上的改变才是真正的改变. 自从跨入WEB2.0