赞
踩
HDFS 全称是Hadoop Distributed File System hadoop分布式(cluser)文件存储系统。适合一次写入,多次读出的场景。
HDFS不需要单独安装,安装Hadoop的时候带了HDFS系统。
Hadoop安装可以参考:
HDFS中的文件再物理上是分块存储,块的大小可以通过配置参数(dfs.blocksize)来规定,默认大小在Hadoop2.x/3.x版本中是128M,1.x版本中是64M
注:寻址时间为传输时间的1%时,为最佳状态
思考:为什么块的大小不能设置太小,也不能设置太大?
(1)HDFS的块设置太小,会增加寻址时间
(2)块太大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间。导致程序处理块数据时,会非常慢。
总结:HDFS块的大小设置主要取决于磁盘的传输速率。
HDFS是一个主/从体系结构(经典的Master和Slave架构)。
HDFS由四部分组成,HDFS Client,NameNode,DataNode和Secondary NameNode。
每一个HDFS集群包括一个NameNode和多个DataNode
通过Client来访问文件系统,然后由Client与NameNode和DataNode进行通信。Client对外作为文件系统的接口
相当于一个Master,管理者。 用于存储和管理文件元数据、维护文件系统的目录结构树,记录写入的每个数据块(Block)与其归属文件的对应关系。
DataNode会通过心跳和NameNode保持通信。DataNode负责存储文件的数据(block块),并提供block的读写,并且定期的向NameNode汇报该DataNode存储的数据块信息
Secondary NameNode的作用是消费EditsLog,定期地合并FsImage和EditsLog,生成新的FsImage文件,并推送给NameNode,降低了NameNode的压力。 在紧急情况下,可辅助恢复NameNode。
SecondaryNameNode机制:
SecondaryNameNode工作过程:
注:
1、FsImage(文件系统镜像二进制)
存储某一个时间点(checkPoint)的NameNode镜像数据
默认存储位置 : /opt/install/hadoop-2.5.2/data/tmp/dfs/name
dfs.namenode.name.dir
2、EditsLog
可编辑日志二进制 记录(检查点以后的所有写操作)
默认存储位置 :dfs.namenode.edits.dir
数据存储故障容错:
磁盘在存储数据可能会出现错乱。HDFS对于存储在DataNode上的数据块,计算并存储校验和(CkeckSum)。在读取数据的时候,重新计算读取出来的数据的校验和,如果校验不正确就抛出异常,应用程序捕获异常后就到其他DataNode上读取备份数据。
磁盘故障容错:
如果DataNode检测到本机的磁盘损坏,就将磁盘上存储的BlockID报告给NameNode, NameNode检查这些数据块的备份,通知相应的DataNode服务,将对应的数据恢复到其他服务器上,以保证数据块备份数满足要求。
DataNode故障容错:
DataNode会通过心跳和NameNode保持通信,偌DataNode超时未发送心跳,NameNode就认为该DataNode已经宕机,并立即查找DataNode上的数据块,以及这些数据块所在的服务器,随后通知这些服务器再复制一份数据到其他服务器上,以保证HDFS存储的数据块备份数符合要求。
NameNode故障容错:
NameNode是整个HDFS的核心, 记录这所有文件的分配信息,以及所有文件路径和数据块存储信息。如果NameNode故障, 整个HDFS系统集群都无法使用,如果NameNode的数据丢失,整个集群的所有DataNode数据也就无用了。所以NameNode采用主从热备的方式提供高可用服务。如下图:
文件按字节线性切割成block块, 具有offset、id
一个文件除了最后一个block, 其它block大小一致
block大小依据硬件的I/O 特性调整
block被分散在集群的节点中,具有location
block具有副本(replication), 没有主从概念,副本不能出现在同一个节点
副本是满足可靠性和性能的关键
文件上传可以指定block大小和副本数,上传后只能修改副本数
一次写入多次读取,不支持修改,只支持追加数据
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。