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从而启动服务进程。
六:图
- Hadoop笔记三之Hdfs体系架构及各节点之间的Rpc通信
- Hadoop学习笔记之:HDFS体系架构
- Hadoop学习之HDFS架构(三)
- Hadoop学习<四>--HDFS的RPC通信原理总结
- HDFS的体系架构
- HDFS的体系架构
- 【Hadoop】HDFS笔记(一):Hadoop的RPC机制
- 初识Hadoop之HDFS体系
- Hadoop之——HDFS的RPC机制
- Hadoop之HDFS(三)
- Hadoop笔记一之Java中Rpc通信
- 【Hadoop】HDFS笔记(三):HDFS的Shell操作
- 大数据学习篇:hadoop深入浅出系列之HDFS(八) ——RPC通信
- Hadoop之HDFS的Java Interface(三)
- Hadoop之RPC架构分析
- 大数据1-hadoop架构体系中的【Hadoop】HDFS的运行原理
- Hadoop笔记4--hdfs架构
- Hadoop 之HDFS笔记
- java与xml之DOM4J生成和解析XML文档
- Best Time to Buy and Sell Stock III
- 教你玩转HelloWorld
- 关于MAC下mysql配置环境时丢失mysql.sock而自身无法生成问题的解决方案
- seo学习
- Hadoop笔记三之Hdfs体系架构及各节点之间的Rpc通信
- Android配置----Eclipse+BlueStacks调试Android应用
- 枚举+前缀和...
- 202. Happy Number --LeetCode Record
- Qt-观察者模式
- iOS Core Graphics手写板
- 欢迎使用CSDN-markdown编辑器
- Python打印print函数深入解析
- 两个下拉列表进行选项传递操作