Hadoop笔记三之Hdfs体系架构及各节点之间的Rpc通信

来源:互联网 发布:二代身份证相片 软件 编辑:程序博客网 时间:2024/05/01 04:03

前言:

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

介绍:

        Hdfs是分布式部署的,分为nameNode,secondaryNameNode,dataNode,DFSClient四部分,每个节点之间都遵守RPC通信协议。

 

一:NameNode与DataNode通信,DatanodeProtocol

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

      第一张表存放文件名与数据块序列的对应关系,就是namenode节点中的fsimage文件。    

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

2:NameNode实现了三个接口。

      org.apache.hadoop.hdfs.protocol.ClientProtocol

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

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

3:DataNode用来存放数据块,可以有一个至多个DataNode。DataNode中存放一张数据块于字节流对应关系的表,终其一生他会不断的询问NameNode有什么任务需要完成,而NameMode不能直接联系DataNode他只能给DataNode返回一个简单的值。

4:DatanodeProtocol

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

      DatanodeProtocol中声明了registerDatanode方法和sendHeartbeat方法。

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

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

      注:我们Hadoop上通过配置文件告诉DataNode与自己对应的NameNode的位置。

   总结:

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

 

二:DFSClient与NameNode通信,ClientProtocol

1:DFSClient

       DFSClient可以连接hdfs文件系统并执行一些基本的文件任务,它使用ClientProtocol与NameNode建立通信另外它也可以直接连接DataNode并读取或更改上面的数据块。 我们在程序中使用不能直接使用DFSClient对象,我们通过FileSystem对象来使用DFSClient对象(org.apache.hadoop.fs.FileSystem)。

2: ClientProtocol

      NameNode实现了ClientProtocol, ClientProtocol中提供了很多操作hdfs数据的方法,通过FileSystem对象来调用DFSClinet对象并调用ClientProtocol声明的方法从而访问NameNode。

  总结:

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

 

三:NameNode与secondaryNameNode通信,NamenodeProtocol

1:secondaryNameNode是NameNode的助手,他获取edits文件来获取NameNode的状态,将edits和fsimage文件合并。他们二者通过NamenodeProtocol通信。

 

四:其他节点通信

1:DataNode之间的通信使用InterDatanodeProtocol协议通信

 

2:DFSClient与DataNode之间通信使用ClientDatanodeProtocol协议通信

 

五:RPC Server

在NameNode中有个main方法,通过此方法创建RPC Server从而启动服务进程。

 

六:图



0 0
原创粉丝点击