hdfs 中的接口类型

Rpc协议就是Server实现一个声明了很多方法的接口并对外暴露此接口,Client通过调用此接口中声明的方法向server发送信息从而实现了与server的通信

HDFS 中的接口主要包括三种类型:

  • 客户端相关接口:

    • ClientProtocol(client 与 namenode)

    • ClientDataNodeProtocol(client 与 datanode)

  • 服务器端相关接口:

    • DataNodeProtocol(namenode 与 datanode)

    • IntelDataNodeProtocol(datanode 之间)

    • NameNodeProtocol(namenode 与 secondary namenode)

  • 安全相关接口(具体不清楚)

客户端(DFSClient):

  • DFSClient 可以连接 hdfs 文件系统并执行一些基本的文件任务,使用 ClientProtocol 与 namenode 建立通信,另外它也可以通过 ClientDataNodeProtocol 连接 datanode 读取或更改上面的数据,在程序中不能直接使用 DFSClient 对象,我们使用 FileSystem 来使用 DFSClient 对象

  • NameNode 相当于 server,它实现了接口 ClientProtocol,而 DFSClient 相当于 client,它通过调用 ClientProtocol 来访问 NameNode

NameNode:

  • NameNode 是 DFS 中的目录空间管理者,整个 hdfs 系统中只有一个活跃的NameNode节点,NameNode 中存放了两张表

    • 第一张表存放文件名与数据块的对应关系,就是 NameNode 节点中的 fsImage 文件

    • 第二张表存放的是数据块与 datanode 的对应关系,此表是在程序运行时加载进内存中的

  • NameNode 实现了三个接口:

    • org.apache.hadoop.hdfs.protocol.ClientProtocol

    • org.apache.hadoop.hdfs.server.protocol.DatanodeProtocol

    • org.apache.hadoop.hdfs.server.protocol.NamenodeProtocol

  • NameNode 实现了 DataNodeProtocol,而 DataNode 通过调用此接口与 NameNode 建立并保持通信,将自己的块信息和负载信息上传给 NameNode

  • DataNodeProtocol 中声明了 registerDataNode 方法和 sendHeartBeat 方法

    • 集群启动时 DataNode 会调用 registerDataNode 方法将自己的信息注册到 NameNode 上

    • DataNode 还会不断重复周期性的调用 sendHeartBeat 方法将自己的注册信息,磁盘信息,缓存等节点状态信息发送给 NameNode

  • NameNode 相当于 server 它实现了接口 DataNodeprotocol,而 DataNode 相当于 client,它通过调用 DataNodeProtocol 来访问 NameNode

-----------本文结束感谢您的阅读-----------
0%