Skip to content

Commit d17310f

Browse files
author
lgh
committed
add Configuration dfs.heartbeat.reregister,interval
1 parent cf75d85 commit d17310f

File tree

5 files changed

+26
-12
lines changed

5 files changed

+26
-12
lines changed

hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSConfigKeys.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -972,6 +972,8 @@ public class DFSConfigKeys extends CommonConfigurationKeys {
972972
public static final boolean DFS_DATANODE_TRANSFERTO_ALLOWED_DEFAULT = true;
973973
public static final String DFS_HEARTBEAT_INTERVAL_KEY = "dfs.heartbeat.interval";
974974
public static final long DFS_HEARTBEAT_INTERVAL_DEFAULT = 3;
975+
public static final String DFS_HEARTBEAT_REREGISTER_INTERVAL_KEY = "dfs.heartbeat.reregister,interval";
976+
public static final long DFS_HEARTBEAT_REREGISTER_INTERVAL__DEFAULT = 9;
975977
public static final String DFS_DATANODE_LIFELINE_INTERVAL_SECONDS_KEY =
976978
"dfs.datanode.lifeline.interval.seconds";
977979
public static final String DFS_NAMENODE_PATH_BASED_CACHE_RETRY_INTERVAL_MS = "dfs.namenode.path.based.cache.retry.interval.ms";

hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/BPServiceActor.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ enum RunningState {
151151
fullBlockReportLeaseId = 0;
152152
scheduler = new Scheduler(dnConf.heartBeatInterval,
153153
dnConf.getLifelineIntervalMs(), dnConf.blockReportInterval,
154-
dnConf.outliersReportIntervalMs);
154+
dnConf.outliersReportIntervalMs, dnConf.heartBeatReRegisterInterval);
155155
// get the value of maxDataLength.
156156
this.maxDataLength = dnConf.getMaxDataLength();
157157
if (serviceId != null) {
@@ -1263,14 +1263,16 @@ static class Scheduler {
12631263
private final long lifelineIntervalMs;
12641264
private volatile long blockReportIntervalMs;
12651265
private volatile long outliersReportIntervalMs;
1266+
private final long heartBeatReRegisterIntervalMs;
12661267
private long reRegisterTime = 0;
12671268

12681269
Scheduler(long heartbeatIntervalMs, long lifelineIntervalMs,
1269-
long blockReportIntervalMs, long outliersReportIntervalMs) {
1270+
long blockReportIntervalMs, long outliersReportIntervalMs, long heartBeatReRegisterIntervalMs ) {
12701271
this.heartbeatIntervalMs = heartbeatIntervalMs;
12711272
this.lifelineIntervalMs = lifelineIntervalMs;
12721273
this.blockReportIntervalMs = blockReportIntervalMs;
12731274
this.outliersReportIntervalMs = outliersReportIntervalMs;
1275+
this.heartBeatReRegisterIntervalMs = heartBeatReRegisterIntervalMs;
12741276
scheduleNextLifeline(nextHeartbeatTime);
12751277
}
12761278

@@ -1450,7 +1452,7 @@ long getOutliersReportIntervalMs() {
14501452
}
14511453

14521454
private boolean shouldReRegister() {
1453-
return monotonicNow() - reRegisterTime > this.heartbeatIntervalMs * 3;
1455+
return monotonicNow() - reRegisterTime > this.heartBeatReRegisterIntervalMs;
14541456
}
14551457

14561458
public void setReRegisterTime(long reRegisterTime) {

hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DNConf.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_PROCESS_COMMANDS_THRESHOLD_KEY;
4040
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_OVERWRITE_DOWNSTREAM_DERIVED_QOP_DEFAULT;
4141
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_ENCRYPT_DATA_OVERWRITE_DOWNSTREAM_DERIVED_QOP_KEY;
42+
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_HEARTBEAT_REREGISTER_INTERVAL_KEY;
43+
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_HEARTBEAT_REREGISTER_INTERVAL__DEFAULT;
4244
import static org.apache.hadoop.hdfs.client.HdfsClientConfigKeys.DFS_CLIENT_SOCKET_TIMEOUT_KEY;
4345
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_MAX_LOCKED_MEMORY_DEFAULT;
4446
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_MAX_LOCKED_MEMORY_KEY;
@@ -105,6 +107,7 @@ public class DNConf {
105107

106108
final long readaheadLength;
107109
final long heartBeatInterval;
110+
final long heartBeatReRegisterInterval;
108111
private final long lifelineIntervalMs;
109112
volatile long blockReportInterval;
110113
volatile long blockReportSplitThreshold;
@@ -219,6 +222,9 @@ public DNConf(final Configurable dn) {
219222
heartBeatInterval = getConf().getTimeDuration(DFS_HEARTBEAT_INTERVAL_KEY,
220223
DFS_HEARTBEAT_INTERVAL_DEFAULT, TimeUnit.SECONDS,
221224
TimeUnit.MILLISECONDS);
225+
heartBeatReRegisterInterval = getConf().getTimeDuration(DFS_HEARTBEAT_REREGISTER_INTERVAL_KEY,
226+
DFS_HEARTBEAT_REREGISTER_INTERVAL__DEFAULT, TimeUnit.SECONDS,
227+
TimeUnit.MILLISECONDS);
222228
long confLifelineIntervalMs =
223229
getConf().getLong(DFS_DATANODE_LIFELINE_INTERVAL_SECONDS_KEY,
224230
3 * getConf().getTimeDuration(DFS_HEARTBEAT_INTERVAL_KEY,

hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/balancer/TestBalancerLongRunningTasks.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_LAZY_WRITER_INTERVAL_SEC;
7272
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_MAX_LOCKED_MEMORY_KEY;
7373
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_HEARTBEAT_INTERVAL_KEY;
74+
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_HEARTBEAT_REREGISTER_INTERVAL_KEY;
7475
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_NAMENODE_HEARTBEAT_RECHECK_INTERVAL_KEY;
7576
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_NAMENODE_LAZY_PERSIST_FILE_SCRUB_INTERVAL_SEC;
7677
import static org.apache.hadoop.test.PlatformAssumptions.assumeNotWindows;
@@ -561,6 +562,7 @@ public void testBalancerWithSortTopNodes() throws Exception {
561562
final Configuration conf = new HdfsConfiguration();
562563
initConf(conf);
563564
conf.setInt(DFS_HEARTBEAT_INTERVAL_KEY, 30000);
565+
conf.setLong(DFS_HEARTBEAT_REREGISTER_INTERVAL_KEY, 0);
564566

565567
final long capacity = 1000L;
566568
final int diffBetweenNodes = 50;

hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/TestBpServiceActorScheduler.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,16 @@
1818

1919
package org.apache.hadoop.hdfs.server.datanode;
2020

21-
import org.apache.hadoop.util.Time;
22-
import org.slf4j.Logger;
23-
import org.slf4j.LoggerFactory;
21+
import java.util.Arrays;
22+
import java.util.List;
23+
import java.util.Random;
2424
import org.apache.hadoop.hdfs.server.datanode.BPServiceActor.Scheduler;
25+
import org.apache.hadoop.util.Time;
2526
import org.junit.Rule;
2627
import org.junit.Test;
2728
import org.junit.rules.Timeout;
28-
29-
import java.util.Arrays;
30-
import java.util.List;
31-
import java.util.Random;
29+
import org.slf4j.Logger;
30+
import org.slf4j.LoggerFactory;
3231

3332
import static java.lang.Math.abs;
3433
import static org.hamcrest.core.Is.is;
@@ -52,6 +51,7 @@ public class TestBpServiceActorScheduler {
5251
public Timeout timeout = new Timeout(300000);
5352

5453
private static final long HEARTBEAT_INTERVAL_MS = 5000; // 5 seconds
54+
private static final long HEARTBEAT_REREGISTER_INTERVAL_MS = 5000*3; // 5 seconds
5555
private static final long LIFELINE_INTERVAL_MS = 3 * HEARTBEAT_INTERVAL_MS;
5656
private static final long BLOCK_REPORT_INTERVAL_MS = 10000; // 10 seconds
5757
private static final long OUTLIER_REPORT_INTERVAL_MS = 10000; // 10 seconds
@@ -209,7 +209,8 @@ public void testScheduleLifeline() {
209209
public void testScheduleLifelineScheduleTime() {
210210
Scheduler mockScheduler = spy(new Scheduler(
211211
HEARTBEAT_INTERVAL_MS, LIFELINE_INTERVAL_MS,
212-
BLOCK_REPORT_INTERVAL_MS, OUTLIER_REPORT_INTERVAL_MS));
212+
BLOCK_REPORT_INTERVAL_MS, OUTLIER_REPORT_INTERVAL_MS,
213+
HEARTBEAT_REREGISTER_INTERVAL_MS));
213214
long now = Time.monotonicNow();
214215
mockScheduler.scheduleNextLifeline(now);
215216
long mockMonotonicNow = now + LIFELINE_INTERVAL_MS * 2;
@@ -234,7 +235,8 @@ private Scheduler makeMockScheduler(long now) {
234235
LOG.info("Using now = " + now);
235236
Scheduler mockScheduler = spy(new Scheduler(
236237
HEARTBEAT_INTERVAL_MS, LIFELINE_INTERVAL_MS,
237-
BLOCK_REPORT_INTERVAL_MS, OUTLIER_REPORT_INTERVAL_MS));
238+
BLOCK_REPORT_INTERVAL_MS, OUTLIER_REPORT_INTERVAL_MS,
239+
HEARTBEAT_REREGISTER_INTERVAL_MS));
238240
doReturn(now).when(mockScheduler).monotonicNow();
239241
mockScheduler.setNextBlockReportTime(now);
240242
mockScheduler.nextHeartbeatTime = now;

0 commit comments

Comments
 (0)