前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大数据开发:HDFS数据写入流程详解

大数据开发:HDFS数据写入流程详解

作者头像
成都加米谷大数据
修改2021-01-15 18:03:14
3.1K0
修改2021-01-15 18:03:14
举报
文章被收录于专栏:大数据开发大数据开发

HDFS作为Hadoop的分布式文件系统,其在大数据平台当中的地位是显而易见的。面对越来越大规模的数据存储任务,HDFS的高可靠性和高性能依然值得称赞,这也与HDFS的数据读写机制有关。今天的大数据开发分享,我们具体来讲讲HDFS数据写入流程。

大数据学习:HDFS数据写入流程详解
大数据学习:HDFS数据写入流程详解

HDFS数据写入

客户端要向HDFS写数据,首先要跟namenode通信以确认可以写文件并获得接收文件block的datanode,然后客户端按顺序将文件逐个block传递给相应datanode,并由接收到block的datanode负责向其他datanode复制block的副本。

大数据学习:HDFS数据写入流程详解
大数据学习:HDFS数据写入流程详解

HDFS数据写入步骤

1)客户端向namenode发送上传文件请求,namenode对要上传目录和文件进行检查,判断是否可以上传,并向客户端返回检查结果。

2)客户端得到上传文件的允许后读取客户端配置,如果没有指定配置则会读取默认配置(例如副本数和块大小默认为3和128M,副本是由客户端决定的)。向namenode请求上传一个数据块。

3)namenode会根据客户端的配置来查询datanode信息,如果使用默认配置,那么最终结果会返回同一个机架的两个datanode和另一个机架的datanode。这称为“机架感知”策略。这种策略设置可以将副本均匀分布在集群中,有利于当组件失效情况下的负载均衡。

4)客户端在开始传输数据块之前会把数据缓存在本地,当缓存大小超过了一个数据块的大小,客户端就会从namenode获取要上传的datanode列表。之后会在客户端和第一个datanode建立连接开始流式的传输数据,这个datanode会一小部分一小部分(4K)的接收数据然后写入本地仓库,同时会把这些数据传输到第二个datanode,第二个datanode也同样一小部分一小部分的接收数据并写入本地仓库,同时传输给第三个datanode,依次类推。

这样逐级调用和返回之后,待这个数据块传输完成客户端后告诉namenode数据块传输完成,这时候namenode才会更新元数据信息记录操作日志。

5)第一个数据块传输完成后会使用同样的方式传输下面的数据块直到整个文件上传完成。

大数据学习:HDFS数据写入流程详解
大数据学习:HDFS数据写入流程详解

HDFS数据写入细节

a.请求和应答是使用RPC的方式,客户端通过ClientProtocol与namenode通信,namenode和datanode之间使用DatanodeProtocol交互。在设计上,namenode不会主动发起RPC,而是响应来自客户端或datanode的RPC请求。客户端和datanode之间是使用socket进行数据传输,和namenode之间的交互采用nio封装的RPC。

b.HDFS有自己的序列化协议。

c.在数据块传输成功后但客户端没有告诉namenode之前如果namenode宕机那么这个数据块就会丢失。

d.在流式复制时,逐级传输和响应采用响应队列来等待传输结果。队列响应完成后返回给客户端。

c.在流式复制时如果有一台或两台(不是全部)没有复制成功,不影响最后结果,只不过datanode会定期向namenode汇报自身信息。如果发现异常namenode会指挥datanode删除残余数据和完善副本。如果副本数量少于某个最小值就会进入安全模式。

关于大数据开发,HDFS数据写入流程详解,以上就为大家做了详细的介绍了。HDFS的数据读写机制,是学习HDFS需要重点搞懂的一块内容,对于其读写流程和实现细节都需要尽可能地掌握。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HDFS数据写入
  • HDFS数据写入步骤
  • HDFS数据写入细节
相关产品与服务
大数据处理套件 TBDS
腾讯大数据处理套件(Tencent Big Data Suite,TBDS)依托腾讯多年海量数据处理经验,基于云原生技术和泛 Hadoop 生态开源技术对外提供的可靠、安全、易用的大数据处理平台。 TBDS可在公有云、私有云、非云化环境,根据不同数据处理需求组合合适的存算分析组件,包括 Hive、Spark、HBase、Flink、presto、Iceberg、Alluxio 等,以快速构建企业级数据湖、数据仓库。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档