0
点赞
收藏
分享

微信扫一扫

进一步走近HDFS

彭维盛 2022-03-17 阅读 121

1.定义

HDFS是Hadoop Distribute File System的缩写,它是Google公司的GFS分布式文件系统的开源实现,是Apache Hadoop项目的一个子项目。支持海量数据的存储,成百上千的计算机组成存储集群,HDFS可以运行在低成本的硬件之上,具有的高容错、高可靠性、高可扩展性、高吞吐率等特征,非常适合大规模数据集上的应用。

1.1优点

  1. 数据冗余 ,高容错性 数据自动保存多个副本 副本丢失后,自动恢复 可构建在廉价机器上
  2. 流式文件访问 一次性写入,多次读取 保证数据一致性
  3. 适合大数据处理 GB、TB、甚至PB级数据
  4. 适合批处理 吞吐量高

1.2缺点

  1. 不适合低延迟数据访问 比如毫秒级 低延迟与高吞吐率
  2. 不适合小文件存取 占用NameNode大量内存 寻道时间超过读取时间
  3. 不适合并发写入、文件随机修改 一个文件只能有一个写入者 仅支持append

2.HDFS组成与架构

 1.NameNode的职责(Master)

管理维护HDFS

接收客户端的请求:上传、下载、创建目录等

维护了两个非常重要的文件:edits日志文件和fsimage镜像文件

2.Secondary NameNode的职责

工作:把edits中最新的状态信息合并到fsimage文件中

目的:防止edits过大

1)每隔60分钟 2)当edits文件达到100万条事务,即进行合并。

 3.DataNode的职责(Slave)

职责:保存文件内容(数据块,默认128M块大小)

例子:上传一个大于128M的文件(例子为206M)

hdfs dfs -put hadoop-2.7.3.tar.gz

上传完成,打印文件的Block报告

hdfs fsck /user/hadoop/hadoop-2.7.3.tar.gz -files -blocks

 数据块冗余存储

DataNode选择机制:

  • 第一个副本:放置在上传文件的数据节点;如果是集群外提交,则随机挑选一台磁盘不太满、CPU不太忙的节点
  • 第二个副本:放置在与第一个副本相同的机架的节点上
  • 第三个副本:与第二个副本不同机架的其他节点上
  • 更多副本:随机节点

 3.HDFS读写文件流程

3.1读文件流程

3.2写文件流程

 

 3.3HDFS容错

HDFS具有较高的容错性,可以兼容廉价的硬件,它把硬件出错看作一种常态,而不是异常,并设计了相应的机制检测数据错误和进行自动恢复,主要包括以下几种情形:

名称节点出错 数据节点出错 数据出错

1、NameNode出错:用Secondary NameNode备份的fsimage恢复

2、DataNode出错:DataNode与NameNode通过“心跳”报告状态(每个数据节点会定期向名称节点发送“心跳”信息,向名称节点汇报自己的状态;当数据节点发生故障或者网络断网,名称节点就无法收到来自数据节点的心跳信息),失效后会启动数据冗余复制。 3、数据出错:采用md5和sha1对数据块进行校验。

4.安全模式-Safe Mode

4.1安全模式下:

文件系统只接受读数据请求

不能对数据进行修改、删除等写的操作

command功能
get查看当前状态
enter进入安全模式
leave强制离开安全模式
wait一直等待直到安全模式结束

4.2回收站

4.3快照

快照:基于某时间点的数据的备份复制

作用:数据损坏时恢复到过去一个正确的时间点

4.4HA(High Availability高可用)

NameNode是集群的主,有单点失效的问题。

 配置两个NameNode,一个为活跃状态,一个为备用状态。故障时马上切换

 4.5联邦Federation

使用联邦的原因:

(1) 系统扩展性方面,元数据存储在NN内存中,受内存上限的制约。

(2) 整体性能方面,吞吐量受单个NN的影响。

(3) 隔离性方面,一个程序可能会影响其他运行的程序,如一个程序消耗过多资源导致其他程序无法顺利运行。HDFS HA本质上还是单名称节点。

举报

相关推荐

0 条评论