HDFS设计思想

简介:

硬件故障是常态

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

流式数据访问

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

海量大文件存储

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

简单的一致性模型

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

迁移计算vs迁移存储

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

支持异构软硬件

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

全局中心节点

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

元数据持久化

NNfsimage的形式将集群内所有文件的元数据存储到本地,成,运行过程中NN会将文件系统的更改(如创建新的文件)记录到editlogNN启动时,加载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的三个副本在ABC上,客户端将数据推送给最近的AA收到数据后立即推送给BB推送给C,等所有副本写入成功后,向客户端返回写入成功,当文件所有的block都写入成功后,客户端向NS请求更新文件的元信息。

参考资料

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

目录
相关文章
|
4月前
|
存储 分布式计算 Hadoop
Hadoop系列HDFS详解
Hadoop系列HDFS详解
40 0
|
4月前
|
分布式计算 Java 大数据
【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)
【大数据技术Hadoop+Spark】HDFS Shell常用命令及HDFS Java API详解及实战(超详细 附源码)
161 0
|
5月前
|
存储 分布式计算 Hadoop
aws s3常用命令、hdfs dfs/hadoop fs常用命令
aws s3常用命令、hdfs dfs/hadoop fs常用命令
396 0
|
4月前
|
存储 分布式计算 Hadoop
【大数据技术Hadoop+Spark】HDFS概念、架构、原理、优缺点讲解(超详细必看)
【大数据技术Hadoop+Spark】HDFS概念、架构、原理、优缺点讲解(超详细必看)
108 0
|
5天前
|
分布式计算 Hadoop 测试技术
Hadoop【基础知识 05】【HDFS的JavaAPI】(集成及测试)
【4月更文挑战第5天】Hadoop【基础知识 05】【HDFS的JavaAPI】(集成及测试)
28 8
|
5天前
|
分布式计算 资源调度 Hadoop
Hadoop【基础知识 03+04】【Hadoop集群资源管理器yarn】(图片来源于网络)(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
【4月更文挑战第5天】Hadoop【基础知识 03】【Hadoop集群资源管理器yarn】(图片来源于网络)Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
31 9
|
6天前
|
分布式计算 Hadoop Shell
Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
【4月更文挑战第4天】Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
18 5
|
9天前
|
存储 分布式计算 Hadoop
【Hadoop】HDFS 读写流程
【4月更文挑战第9天】【Hadoop】HDFS 读写流程