hadoop日记2.1:hdfs设计思想和基础概念

已上传word
Hdfs
HDFS设计思想与基础概念
一、 概念:
HDFS是分布式文件系统,HDFS有高容错性的特点,并且设计用来部署在低廉的硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集的应用程序。
应用场景是海量数据(视频、网页)的可靠性存储、数据归档(视频监控领域)。
二、 Hdfs设计目标:
1. 将硬件故障当作常态而不是异常
错误检测和快速、自动的恢复是HDFS最核心的架构目标。
2. 适用于顺序数据访问
应用通常从头到尾读取文件数据
文件数据通常用于批处理任务,而不是用户交互任务
基于高度聚合的数据带宽实现了高数据吞吐量
3. 支持大规模海量数据存储
从GB级支持到EB级
支持集群的线性水平可扩展性
4. 一次写入,多次读取模型
文件在创建、写入并关闭之后不会被更改
5. 支持可移植性
除了Hadoop之外,HDFS还可以作为其它系统的存储基础设施
三、 Hdfs的特征
1. 高容错性
2. 高吞吐量
3. 适用于大文件存储
4. 适用于流式文件数据访问
5. 故障检测和自动恢复
6. 低成本——基于普通硬件集群构建
Hdfs体系结构:

一、 数据块:
1. 每个磁盘都是由大量的物理磁盘块组成,是读写文件的最小单位
2. 文件系统的块一般由多个物理磁盘块(512B)组成,
3. 系统使用fs和fsck来管理维护文件系统,直接针对文件系统块操作。
4. 在hdfs上文件被划成多个块,默认大小128M
二、 Namenode和Datanode
1. HDFS采用master/slave架构。
一个HDFS集群是由一个Namenode和一组Datanodes构成
2. Namenode是一个中心服务器,负责管理文件系统的命名空间(namespace)以及处理客户端对文件的访问请求,设置HDFS保存的文件的副本数目。
3. Datanode是数据节点,负责管理它所在节点上的数据存储,在Namenode的统一调度下进行数据块的创建、删除和复制。
三、 Hdfs经典物理拓扑

四、 基于块block的文件存储
1. HDFS中,文件被切分成固定大小的数据块进行存储
2. 默认的数据块大小为128M
3. 较大的文件块减少了寻址开销,提升了读写效率
4. 通过文件块,实现了对超大文件的支持
5. 文件块信息单独保存在元数据中,实现了文件的控制信息和数据存储的分离
五、 Hdfs命名空间(namespase)
1. HDFS支持传统的层次型文件组织结构
2. 用户或者应用程序可以创建目录,然后将文件保存在这些目录里
3. 文件系统命名空间的层次结构和大多数现有的文件系统类似:用户可以创建、删除、移动或重命名文件
4. HDFS不支持用户磁盘配额和访问权限控制,也不支持硬链接和软链接
六、 Hdfs的元数据
1. 元数据(Metadata):维护HDFS文件系统中文件和目录的信息,分为内存元数据和元数据文件两种。
2. 元数据包含了数据块到文件的映射信息以及文件系统的属性信息
3. NameNode维护整个元数据。
4. HDFS采用元数据镜像文件(FSImage)+日志文件(edits)的备份机制。
5. Namenode使用事务日志Editlog记录系统元数据的修改
例如:创建新文件、修改文件的副本设置
七、 Hdfs的体系结构特征
1. Namenode和Datanode可以在普通的PC机上运行
2. 操作系统通常是Linux
3. HDFS采用Java语言开发,因此任何支持Java的机器都可以部署Namenode或Datanode,可移植性强
4. 一个典型的部署场景是一台机器上只运行一个Namenode实例,而集群中的其它机器分别运行一个Datanode实例
5. Namenode是所有HDFS元数据的仲裁者和管理者,这样用户数据永远不会流过Namenode,由此避免了单点数据传输量过大导致的性能瓶颈
Hdfs的数据存储策略
一、 Hdfs metadata
1. HDFS metadata以树状结构存储整个HDFS上的文件和目录,以及相应的权限、配额和副本因子(replication factor)等。
2. HDFS metadata主要存储两种类型的文件
simage:记录某一永久性检查点(Checkpoint)时整个HDFS的元信息
Edits:所有对HDFS的写操作都会记录在此文件中
二、 Chrckpoint
HDFS会定期的对最近的fsimage和一批新edits文件进行Checkpoint(也可以手工命令方式),Checkpoint发生后会将前一次Checkpoint后的所有edits文件合并到新的fsimage中,HDFS会保存最近两次checkpoint的fsimage。Namenode启动时会把最新的fsimage加载到内存中。

三、 Namenode目录结构

四、 Datanode目录结构

五、 Hdfs的数据复制

六、 基于数据块的数据存储
1. HDFS被设计成能够在一个大集群中跨机器可靠地存储超大文件。
2. 它将每个文件存储成一系列的数据块,除了最后一个,所有的数据块都是同样大小的。
3. 为了容错,文件的所有数据块都会有副本。每个文件的数据块大小和副本系数都是可配置的。
4. 应用程序可以指定某个文件的副本数目。
5. 副本系数可以在文件创建的时候指定,也可以在之后改变
七、 Hdfs的数据存储理念
1. Namenode全权管理数据块的复制
2. Namenode周期性地从集群中的每个Datanode接收心跳信号和块状态报告(Blockreport)
3. 接收到心跳信号意味着该Datanode节点工作正常
4. 块状态报告包含了一个该Datanode上所有数据块的列表
八、 Hdfs副本放置策略
1. 一个文件划分成多个block,每个block存多份,如何为每个block选择节点存储这几份数据?
2. Block副本放置策略:
副本1: 同Client的节点上
副本2: 同机架内其它节点上
副本3: 不同机架中的节点上
另一个节点上
其他副本:随机挑选
九、 Hdfs负载均衡
1. Hadoop的HDFS集群非常容易出现机器与机器之间磁盘利用率不平衡的情况,例如:当集群内新增、删除节点,或者某个节点机器内硬盘存储达到饱和值。
2. 当HDFS负载不均衡时,需要对HDFS进行数据的负载均衡调整,即对各节点机器上数据的存储分布进行调整。从而,让数据均匀的分布在各个DataNode上,均衡IO性能,防止热点的发生。
3. 进行数据的负载均衡调整,必须要满足如下原则:
数据平衡不能导致数据块减少,数据块备份丢失
管理员可以中止数据平衡进程
每次移动的数据量以及占用的网络资源,必须是可控的
数据均衡过程,不能影响namenode的正常工作
十、 安全模式
1. 当集群启动的时候,会首先进入到安全模式
-全模式是hadoop集群的一种保护方式
-个Datanode检查心跳信息和块报告Blockreport信息
-amenode校验每个数据块是否有足够的副本
2. 安全模式下不允许客户端进行修改文件的操作
3. 通过系统自检之后,Namenode退出安全模式
-amenode会按自检结果生成一份数据块复制列表
-后按列表执行数据备份
-断通过自检的最小副本率是可以设置的
十一、 存储空间回收
1. 文件删除
–户端删除一个文件时,HDFS将文件移动到/trash文件夹,并保存一段时间
–时间段内,客户可以恢复这个文件
–时间段之后,文件被彻底删除,并且磁盘空间得到释放
2. 减少数据副本系数
–据复制因子降低,Namenode会选择多余的可以删除的数据副本
–心跳信息heartbeat发送时,删除信息会发送到数据节点,然后相应的数据块会被删除
Hdfs数据流详解
一、 文件读取流程:

二、 Hdfs文件读取流程
1. 文件读取基本流程如下
–端发出打开文件请求
–Namenode查询到数据块的位置地址信息
–读取文件数据,从第一个数据块开始,顺序读取每个数据块的数据信息,直到完成读取
2. 备注
–遇到错误,自动尝试读取其它数据块副本
–之后会对每个数据块进行校验,如果校验错误,会自动尝试读取其它数据块副本
–错误后,会对出错数据节点进行标注,避免再次访问
3. 上述流程实现了数据的分布式读取,Namenode仅负责查询数据块地址,因此,HDFS支持高并发和高数据吞吐量
三、 Hdfs数据块读取策略
1. HDFS将网络看作一棵树
2. 网络中两个节点的距离是距离他们最近的共同祖先的总和
3. 为了降低整体的带宽消耗和读取延时,HDFS会尽量让读取程序读取离它最近的副本
4. HDFS的数据块读取优先级是:
本节点数据块
同一机架不同节点数据块
同一数据中心不同机架不同节点的数据块
其它数据中心的数据块
四、 文件读操作流程

五、 Hdfs文件写入流程

  1. 文件写入基本流程如下
    1) 客户端发出创建文件请求
    2) 向Namenode请求创建新文件
    3) 如果请求通过,Namenode生成新文件记录
    4) 将文件数据分块写入内部数据队列,然后按数据副本因子顺序写入到每个数据节点
    5) 数据块的数据已经写入全部数据节点之后,将会被移出队列
    6) 直到全部数据块写入完毕,文件写入完成

Hdfs的健壮性
一、 概述
1. HDFS的主要目标就是即使在出错的情况下也要保证数据存储的可用性及可靠性
2. 常见的三种出错情况:
Namenode出错,
Datanode出错
网络割裂(network partitions)
3. 一般情况下,Datanode出错或者局部网络故障,不会影响HDFS的正常工作,不过,一旦Namenode出现问题,HDFS系统将无法正常工作
二、 Namenode故障
1. HDFS主节点Namenode保存FsImage和Editlog数据
2. 一旦主节点的FsImage和Editlog数据出现故障,HDFS系统将无法正常工作
3. 为提升可用性,Namenode可以通过配置保存多份FsImage和Editlog数据,数据同步更新
4. 在HDFS2 中使用HA机制保证Namenode 的高可用
三、 Hdfs ha的体系结构

四、 Hdfs ha架构图

五、 Daatanode异常
1. 每个Datanode节点周期性地向Namenode发送心跳信号
2. 网络故障(或其它故障)可能导致一组Datanode无法连接到Namenode
3. Namenode一旦发现没有按时收到Datanode的心跳Heartbeat信息,就对这些Datanode进行宕机标注
4. Namenode不再向这些节点发送I/O请求,Datanode上的数据暂时变成不可用的状态
5. Datanode的异常也会导致数据块的副本数量不足,这时会触发数据重新复制的过程
六、 数据完整性校验
1. 有时候客户端读取的数据可能已经损坏
数据损坏可能由存储设备故障、网络故障和软件故障导致
2. HDFS的客户端计算数据块的checksum值,并与HDFS命名空间中存储的数值进行对比,以校验文件完整性
3. 如果checksum值校验错误,客户端将从其它数据副本重新读取数据
七、 Hdfs可靠性策略
1. 文件完整性
通过CRC32校验,来确定文件是否损坏;如损坏,用其他副本取代损坏文件。
2. Heartbeat
Datanode 定期向Namenode发heartbeat
3. 元数据信息
FSImage(文件系统镜像)、Editlog(操作日志)
多份存储
主备NameNode实时切换

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值