大数据系列之HdFS(一) 概述及架构设计

一.分布式文件系统HDFS

1.特点介绍

1.高容错性和高可用性

硬件错误是常态而不是异常 HDFS设计为运行在普通硬件上,所以硬件故障是很正常的。HDFS提供文件存储副本策略,可以实现错误自检并快速自动恢复。个别硬件的损坏不影响整体数据完整性和计算任务的正常执行。
2.流式数据访问

HDFS主要采用流式数据读取,做批量处理而不是用户交互处理,因此HDFS更关注数据访问的高吞吐量。流式数据特点:是连续的 但连续式相对的不是绝对的 比如 有一百兆数据 可能会被分成两个五十兆的数据来读取而不是 分成100个 1兆的数据进行读取
3. 弹性存储,支持大规模数据集
弹性存储的最大挑战是减小在修改存储节点时的数据震荡问题
4.单一致性模型
HDFS文件 一次写多次读 高吞吐量

5.移动计算而非移动数据

6. 协议和接口多样性

7. 多样的数据管理功能

对于数据压缩、数据加密、数据缓存和存储配额等提供了多样的管理功能

二.HDFS机构设计

1.HDFS是什么:

是Hadoop 分布式文件系统

2.HDFS组件角色

1.NameNode(简称NN)

  • HDFS是元数据的管理者
    元数据是描述数据的数据 HDFS管理Namespace(文件系统命名空间) 记录数据的各种属性 以及 分别存储在那些数据节点上 HDFS是管理者 相当于人的大脑

2.DataNode(简称DN)

  • DataNode是文件系统的工作节点。根据客户端或者NameNode发送的管理指令,负责HDFS的数据块的读写和检索操作。

  • 通过心跳机制定期向NameNode发送他们的存储块的列表

    • 心跳机制: 心跳机制就是主从模式 类似于生活中上下级汇报任务进度 比如 : 小组组长给组员分配任务 每天 需要知道任务 进度 而任务进度通过 组员 向 组长 反馈
  • Client

    • 客户端Client代表用户与NameNode或者DataNode交互来访问整个文件系统的对象。
  • 开发人员面向Client API来编程实现,对NameNode、DataNode来说透明无感。

3.HDFS架构设计

1.基本架构

在这里插入图片描述
1.首先(读) 从最左边的client看 客户端向NN提出请求(Metadata ops) 来获取相应的元数据存储路径就是右上角的方框 获得路径之后 客户端直接操作相应的DN 而不是通过NN
2.其次(写)
从最下边的Client看这个 图少了一条线就是写的时候也是由CLient指向NN获得路径 之后操作相应的DN来写入数据 也是 不经过NN操作

读写两个过程NN 只是提供 Client 请求元数据的路径 而真正操作 DN是 获得 元数据路径之后 Client直接操作DN

2.读文件流程

在这里插入图片描述

详细步骤:

  • 第一步:Client向NameNode发送数据请求后,寻找数据对应的数据块的位置信息。

  • 第二步:NameNode返回文件对应的数据块元数据信息,如所属机器、数据块的block_id、数据块的先后顺序等。

  • 第三步:由Client与DataNode直接通信,读取各个block数据块的信息。过程为并行读取,由客户端合并数据。

3写文件流程

在这里插入图片描述

详细步骤:

  • 第一步:

    1. Client向NameNode发送写数据请求后,寻找可以写入的数据块block信息的机器位置。

    2.若文件过大,写入可能会分成很多block数据块,实际上是通过一个block一个block的申请。

    3.若副本为3,则每次请求后返回一个block的对应的3个副本的block的存放位置。

  • 第二步:

  1. Client获取到对应的block数据块所处的DataNode节点位置后,Client开始写操作。

2.Client先写入第一个DataNode,以数据包package的方式逐个发送和接收。如64K大小的package包大小来发送和接收。

3.存在多个副本时,package包的写入是依次进行的。写入到第一个DataNode后,第一个向第二个DataNode传输。第二个写完后,由第二个向第三个DataNode传输package。以此类推。

4.写完一个block数据块后,如果还有则反复进行第一步和第二步。

  • 第三步:
  1. 待所有的数据块block均写完后,Client接收到全部写完的ack答复,告诉NameNode数据已写完,Client关闭socket流。

  2. DataNode也会向NameNode报告新增block数据块的信息。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值