From 916d27559e6e4ddfda58385ea408b8d1772dbaa9 Mon Sep 17 00:00:00 2001 From: zeekling Date: Sun, 21 Jul 2024 23:35:17 +0800 Subject: [PATCH] =?UTF-8?q?BPServiceActor=E8=AF=A6=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hdfs/BPServiceActor详解.md | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/hdfs/BPServiceActor详解.md b/hdfs/BPServiceActor详解.md index d27ba5d..217661a 100644 --- a/hdfs/BPServiceActor详解.md +++ b/hdfs/BPServiceActor详解.md @@ -9,7 +9,27 @@ BPServiceActor 主要在DataNode中用于和NameNode沟通的类。主要功能 # 核心功能 -## 预注册 +BPServiceActor的入口函数为start函数,当前类本身为runnable接口的实现类,所以在start函数里面新建了BPServiceActor线程,并且将其启动, +所以其真实的启动函数为run() + +在run函数里面主要做了连接NameNode并且注册当前DataNode的事。 + + +## 与NameNode握手 + +首先要做的就是和NameNode建立连接,核心代码如下: +```java +bpNamenode = dn.connectToNN(nnAddr); +``` +建立连接之后需要做的就是获取获取版本信息并且检查版本信息,如果单次获取失败会进行重试。失败之后每次的重试间隔为5s。 + +```java +NamespaceInfo nsInfo = retrieveNamespaceInfo(); +bpos.verifyAndSetNamespaceInfo(this, nsInfo); +``` + + +到此与NameNode之间的握手结束。开始注册当前的DataNode到NameNode。 ## 注册DataNode