大数据笔记之分布式文件系统HDFS笔记二

1. 通信协议

  • HDFS是一个部署在集群上的分布式文件系统,因此,很多数据需要通过网络进行传输 ,
  • 所有的HDFS通信协议都是构建在TCP/IP协议基础之上的,
  • 客户端通过一个可配置的端口向名称节点主动发起TCP连接,并使用客户端协议与名称节点进行交互
  • 名称节点和数据节点之间则使用数据节点协议进行交互
  • 客户端与数据节点的交互是通过RPC(Remote Procedure Call)来实现的。在设计上,名称
    节点不会主动发起RPC,而是响应来自客户端和数据节点的RPC请求

客户端

  • 客户端是用户操作HDFS最常用的方式,HDFS在部署时都提供了客户端
  • HDFS客户端是一个库,暴露了HDFS文件系统接口,这些接口隐藏了HDFS实现中的大部分复杂
  • 客户端可以支持打开、读取、写入等常见的操作,并且提供了类似Shell的命令行方式来访问
    HDFS中的数据
  • 此外,HDFS也提供了Java API,作为应用程序访问文件系统的客户端编程接口

2. HDFS体系结构的局限性

  • 命名空间的限制 : 名称节点是保存在内存中的,因此,名称节点能够容纳的对象
    (文件、块)的个数会受到内存空间大小的限制。
  • 性能的瓶颈:整个分布式文件系统的吞吐量,受限于单个名称节点的吞吐量。
  • 隔离问题:由于集群中只有一个名称节点,只有一个命名空间,因此,无法对不
    同应用程序进行隔离。
  • 集群的可用性:一旦这个唯一的名称节点发生故障,会导致整个集群变得不可用。

3.冗余数据保存

HDFS采用了多副本方式 对数据进行冗余存储,通常一个数据块的多个副本会被分布到不同的数据节点上
所具有的优点:

  • 加快数据传输速度
  • 容易检查数据错误
  • 保证数据可靠性

4.数据存取策略

4.1数据存放
  • 第一个副本:放置在上传文件的数据节点;如果是集群外提交,则随机挑选一台磁盘不太满、 CPU不太忙的节点
  • 第二个副本:放置在与第一个副本不同的机架的节点
  • 第三个副本:与第一个副本相同机架的其他节点上
  • 更多副本:随机节点
4.2数据读取
  • HDFS提供了一个API可以确定一个数据节点所属的机架ID,客户端也可以调用API获取自己 所属的机架ID
  • 当客户端读取数据时,从名称节点获得数据块不同副本的存放位置列表,列表中包含了副本 所在的数据节点可以调用API来确定客户端和这些数据节点所属的机架ID,当发现某个数 据块副本对应的机架ID和客户端对应的机架ID相同时,就优先选择该副本读取数据,如果没有发现,就随机选择一个副本读取数据

5 数据错误与恢复

HDFS出错的几种情形:名称节点出错,数据节点出错,数据出错。

5.1名称节点出错

名称节点保存了所有的元数据信息,其中,最核心的两大数据结构是FsImage和 Editlog,如果这两个文件发生损坏,那么整个HDFS实例将失效。因此,HDFS设置了 备份机制,把这些核心文件同步复制到备份服务器SecondaryNameNode上。当名称节 点出错时,就可以根据备份服务器SecondaryNameNode中的FsImage和Editlog数据进行恢复。

5.2数据节点出错
  • 每个数据节点会定期向名称节点发送“心跳”信息,向名称节点报告自己的状态
  • 当数据节点发生故障,或者网络发生断网时,名称节点就无法收到来自一些数据节点的心跳
    信息,这时,这些数据节点就会被标记为“宕机”,节点上面的所有数据都会被标记为“不 可读”,名称节点不会再给它们发送任何I/O请求
  • 这时,有可能出现一种情形,即由于一些数据节点的不可用,会导致一些数据块的副本数量
    小于冗余因子
  • 名称节点会定期检查这种情况,一旦发现某个数据块的副本数量小于冗余因子,就会启动数
    据冗余复制,为它生成新的副本
  • HDFS和其它分布式文件系统的最大区别就是可以调整冗余数据的位置
5.3数据出错
  • 客户端在读取到数据后,会采用md5和sha1对数据块进行校验,以确定读取到正确
    的数据
  • 在文件被创建时,客户端就会对每一个文件块进行信息摘录,并把这些信息写入到同
    一个路径的隐藏文件里面
  • 当客户端读取文件的时候,会先读取该信息文件,然后,利用该信息文件对每个读取
    的数据块进行校验,如果校验出错,客户端就会请求到另外一个数据节点读取该文件
    块,并且向名称节点报告这个文件块有错误,名称节点会定期检查并且重新复制这个
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Master_Yoda

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

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

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

打赏作者

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

抵扣说明:

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

余额充值