7

hadoop中namenode职责和hdfs读写

 1 year ago
source link: https://blog.51cto.com/u_15130867/5996157
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

hadoop中namenode职责和hdfs读写

精选 原创

執孒の掱,與 2023-01-08 00:26:32 博主文章分类:大数据 ©著作权

文章标签 客户端 元数据 数据 文章分类 Hadoop 大数据 yyds干货盘点 阅读数183

1、namenode职责:

1.1、管理各个datanode节点

1.2、管理分布式文件系统的元数据信息

比如 一个文件多大,文件名,文件被切成几块,每个文件块存到哪台datanode服务上

1.3、通过RPC心跳机制来监控datanode的状态。对于网络通信,http主外,rpc主内

1.4、为了确保数据存储的可靠性,采用冗余机制来实现,注意:副本数量不宜过多,因为会降低整个集群的磁盘利用率,一般采用3副本策略,

2、hdfs读写过程

2.1从HDFS上下载文件过程

hadoop中namenode职责和hdfs读写_客户端

①、Client向namenode发起Open file请求。目的是获取指定文件的输入流。

namenode收入请求之后,会检查路径 的合法性,此外,还会检查客户端的操作权限。如果检测未通过,则直接报错返回,后续过程不会发生

②、Client也会向namenode发起GetBlockLocation请求,获取指定文件的元数据信息。如果第一步的检测通过,namenode会将元数据信息封装到输入流里,返回给客户端。

③、客户端根据元数据信息,直接去对应的datanode读取文件块,然后下载到本地(或创建 本地的输出流,然后做流的对接)

④、读完后,关流

 2.2 往HDFS上写文件过程

hadoop中namenode职责和hdfs读写_数据_02

①、Client向namenode发起Create File请求,目的是获取HDFS文件的输出流,namenode收到请求后,会检测路径 的合法性和权限,如果检测未通过,直接报错返回。

如果通过检测,namenode会将文件的切块信息(比如文件被切成几块,每个文件块的副本存在哪台datanode上),然后把这些信息封装到输出流里,返回给客户端。

所以注意:文件块的输出(上传)是客户端直接和对应datanode交互的,namenode的作用是告诉Client文件块要发送给哪个datanode上。

②、Client通过输出流,发送文件块(底层会将一个文件块打散成一个一个的packet,每个packet的大小为64kb)。这个过程的机制,叫Pipeline(数据流管理机制), 这种机制的目的在于充分利用每台机器的带宽,避免网络瓶颈和高延时的连接,最小化推送所有数据的延时

③、通过数据流管道机制,实现数据的发送和副本的复制。每台datanode服务器收到数据之后,会向上流反馈ack确认机制,直到第五步的ack发送给Client之后,再发送下一个packet。依次循环,直到所有数据都复制完成。此外,在底层传输的过程中,会用到全双工通信

④、数据上传完成之后,关流

 2.3 从HDFS上删除文件的流程

①、客户端赂namenode发现删除文件指令,比如:hadoop fs -rm /park01/1.txt

②、namenode收到请求后,会检查路径 的合法性及权限

③、如果检测通过,会将对应的文件从元数据中删除。(注意:此时这个文件并没有真正从集群上被删除)

④、每台datanode会定期向namenode发送心跳,会领取删除的指令,批到对应的文件块,进行文件块的删除

  • 2
  • 2收藏
  • 评论
  • 分享
  • 举报

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK