1、 DataNode启动流程 19:00
![](https://i-blog.csdnimg.cn/blog_migrate/c84af5df1d4c94b51a76dc652b1f8586.png)
DataNode.png
本节入口:
DataNode类main方法
/* DataNode类注释说明:
- TODO (1)
- DataNode存储hdfs上block文件块。在一个文件系统里面可以有多个dataNode
- 每个DataNode周期性的跟NameNode进行通信,客户端也可以跟DataNode进行交互
- 或者DataNode之间也可以进行相互通信。
- TODO (2)
- DataNode存储一系列block,DataNode允许客户端去读写block。
- DataNode也会去响应NameNode,响应NameNode发送过来的一些指令
- 比如:删除block,复制block等操作。
- TODO (3)
- datanode管理了一个重要的表:
- block -》 stream of bytes 看起来像是一些元数据的信息。
- TODO (4)
- 这个信息是存储在本地磁盘,DataNode启动的时候会把这些信息
- 汇报给NameNode,启动了以后也会再去不断的汇报。
- TODO(5)
- DataNode启动了以后会一直去问namenode自己需要干些什么?心跳
- NameNode是不能直接去操作DataNode的。DataNode启动了以后,会跟NameNode
- 进行心跳,NameNode接收到了心跳了以后,如果需要这个DataNode做什么事,
- 就会给DataNode一个返回值(指令),DataNode接收到这些指令以后就知道NameNode
- 想让他做什么事了
- TODO(6)
- DataNode开放了Socket服务,让客户端或者别的DataNode来进行读写数据。
- DataNode启动的时候会把自己的主机名和端口号汇报给NameNode.
- 也就是说如果Client和DataNode想要去访问某个DataNode.首先要跟NameNode进行通信
- 从NameNode那儿获取到目标DataNode的主机名和端口号。
- 这样才可以访问到对应的DataNode了。
- 客户端:hell0.txt -> namenode: block01(hadoop1:50010,hadoop2,hadoop3),block02(hadoop4,hadoopxx)
- 客户端:hadoop1:50010 hadoop4:50010
- TODO 总结:
- 1)一个集群里面可以有很多个DataNode,这些DataNode就是用来存储数据的。
- 2)DataNode启动了以后会周期性的跟NameNode进行通信(心跳,块汇报)
- 3)NameNode不能直接操作DataNode.而是通信心跳返回值指令的方式去操作的DataNode.
-
-
DataNode启动了以后开放了一个socket的服务(RPC),等待别人去调用他。
*/
-