HDFS写入数据的流程图

1.客户端向namenode发送请求,请示写入数据

2.namenode接受请求后,判断这个用户是否有写入权限,如果不具备直接报错;如果有写入权限,接着判断在要写入的目录下是否已经存在这个文件,如果存在,直接报错,如果不存在,通知客户端可以上传

3.客户端对文件进行切分,形成block块

4.客户端请求第一个block块,存储在哪些地方

5.namenode根据机架感知原理,网络拓扑关系,副本机制找到相应的可以上传的datanode的连接列表,返回给客户端

6.在连接列表中选择第一台datanode进行连接并建立管道,让第一台与第二台连接,第二台与第三台连接形成一个管道

7.客户端通过数据包(64kb)的形式发送数据,当第一台接受数据后,然后将数据转发给第二台,第二台接受完,第二台数据再把数据发送给第三台

8.当最后一个接受请求后,建立一个反向的应答队列,当每个节点都将数据包接收以后,反向给予应答响应(ack确认机制)

9.数据开始源源不断的发送数据,当第一个block块发送完成之后,客户端重新请求namenode,获取第二个block块应该存放在哪些datanode中,接着从第五步开始执行,直到所有的block块全部写入完成

  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HDFSHadoop Distributed File System)是一个分布式文件系统,用于在普通硬件上存储大量数据,并提供高吞吐量的数据访问。HDFS 的架构设计使其特别适合于大规模数据集的应用程序。下面简要介绍 HDFS 的处理流程: 1. **写入数据(Write Data)** - 客户端向 NameNode 发送请求。 - NameNode 确定数据块应该存储在哪些 DataNode 上。 - 客户端直接与选定的 DataNode 进行数据传输,通常情况下,客户端会向多个 DataNode 发送数据(流水线式写入),同时与多个 DataNode 通信以提高写入效率。 2. **读取数据(Read Data)** - 客户端向 NameNode 请求读取文件。 - NameNode 返回文件数据块所在的 DataNode 列表。 - 客户端直接从列出的 DataNode 中选择一个或多个读取数据。 3. **数据块复制(Replication)** - HDFS 会根据配置的复制因子将数据块复制到多个 DataNode 上,以确保数据的可靠性。 - 当一个 DataNode 失败时,系统会自动从其他 DataNode 上复制数据,以确保数据不会丢失。 4. **数据块本地性(Data Locality)** - 为了提高效率,HDFS 优先在存储数据的节点上进行计算,这样可以减少网络传输的负载。 HDFS 架构图示例: ``` Client | | -- write/read request --> NameNode / \ DataNode DataNode (Data) (Replica) ``` HDFS 的设计允许它在硬件故障的情况下仍然保持高可用性和数据的完整性。HDFS 在后台执行各种维护任务,如数据块的复制和心跳监控,以确保系统的稳定运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值