进一步走近HDFS

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镜像文件

HDFS的元信息:fsimage文件

就跟edits文件在一起

记录:数据块的位置、冗余信息、文件属性等

二进制-Protobuf编码格式

HDFS提供一个 image viewer ----> 文本或者xml


edits记录了HDFS的操作日志

最新的操作日志:edits_inprogress****

都是二进制

HDFS提供一个工具:edits viewer 日志查看器 ----> XML

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安全模式下:

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

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

NameNode 主节点启动进入安全模式

离开安全模式,需要满足以下条件:     

1. 达到副本数量要求的block比例满足要求;   

 2. 可用的datanode节点数满足配置的数量要求;     

3. 1、2 两个条件满足后维持的时间达到配置的要求

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

4.2回收站

HDFS为每一个用户都创建了回收站,这个类似操作系统的回收站。

位置是/user/用户名/.Trash/。

操作演示:

1、列出某目录下的文件:hdfs dfs -ls

2、把其中的一个文件file1删除:hdfs dfs -rm file1

3、到回收站可看到刚才删除的file1 hdfs dfs -ls /user/hadoop/.Trash/Current/tmp

4、把file1从回收站移动到/home/haoop/目录下

hdfs dfs -mv   /user/hadoop/.Trash/Current/tmp/file1   /home/hadoop/

5、到/home/hadoop/查看即可看到恢复的文件file1 hdfs dfs -ls /tmp/sqoop1

4.3快照

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

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

4.4HA(High Availability高可用)

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

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

 4.5联邦Federation

使用联邦的原因:

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

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lambda33

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值