From 123342cd0759ff88801d4f5ab10987f6e3f344b0 Mon Sep 17 00:00:00 2001 From: Lei Xu Date: Tue, 12 Sep 2017 18:12:07 -0700 Subject: [PATCH] HDFS-12412. Change ErasureCodingWorker.stripedReadPool to cached thread pool. (Lei (Eddy) Xu) --- .../java/org/apache/hadoop/hdfs/DFSConfigKeys.java | 2 -- .../datanode/erasurecode/ErasureCodingWorker.java | 14 +++++++------- .../src/main/resources/hdfs-default.xml | 9 --------- .../src/site/markdown/HDFSErasureCoding.md | 1 - 4 files changed, 7 insertions(+), 19 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSConfigKeys.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSConfigKeys.java index d06e378c71..322cae4eca 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSConfigKeys.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSConfigKeys.java @@ -571,8 +571,6 @@ public class DFSConfigKeys extends CommonConfigurationKeys { "dfs.namenode.ec.system.default.policy"; public static final String DFS_NAMENODE_EC_SYSTEM_DEFAULT_POLICY_DEFAULT = "RS-6-3-1024k"; - public static final String DFS_DN_EC_RECONSTRUCTION_STRIPED_READ_THREADS_KEY = "dfs.datanode.ec.reconstruction.stripedread.threads"; - public static final int DFS_DN_EC_RECONSTRUCTION_STRIPED_READ_THREADS_DEFAULT = 20; public static final String DFS_DN_EC_RECONSTRUCTION_STRIPED_READ_BUFFER_SIZE_KEY = "dfs.datanode.ec.reconstruction.stripedread.buffer.size"; public static final int DFS_DN_EC_RECONSTRUCTION_STRIPED_READ_BUFFER_SIZE_DEFAULT = 64 * 1024; public static final String DFS_DN_EC_RECONSTRUCTION_STRIPED_READ_TIMEOUT_MILLIS_KEY = "dfs.datanode.ec.reconstruction.stripedread.timeout.millis"; diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/ErasureCodingWorker.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/ErasureCodingWorker.java index 72c224f2f7..d3de82e50f 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/ErasureCodingWorker.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/erasurecode/ErasureCodingWorker.java @@ -53,19 +53,19 @@ public ErasureCodingWorker(Configuration conf, DataNode datanode) { this.datanode = datanode; this.conf = conf; - initializeStripedReadThreadPool(conf.getInt( - DFSConfigKeys.DFS_DN_EC_RECONSTRUCTION_STRIPED_READ_THREADS_KEY, - DFSConfigKeys.DFS_DN_EC_RECONSTRUCTION_STRIPED_READ_THREADS_DEFAULT)); + initializeStripedReadThreadPool(); initializeStripedBlkReconstructionThreadPool(conf.getInt( DFSConfigKeys.DFS_DN_EC_RECONSTRUCTION_STRIPED_BLK_THREADS_KEY, DFSConfigKeys.DFS_DN_EC_RECONSTRUCTION_STRIPED_BLK_THREADS_DEFAULT)); } - private void initializeStripedReadThreadPool(int num) { - LOG.debug("Using striped reads; pool threads={}", num); + private void initializeStripedReadThreadPool() { + LOG.debug("Using striped reads"); - stripedReadPool = new ThreadPoolExecutor(1, num, 60, TimeUnit.SECONDS, - new SynchronousQueue(), + // Essentially, this is a cachedThreadPool. + stripedReadPool = new ThreadPoolExecutor(0, Integer.MAX_VALUE, + 60, TimeUnit.SECONDS, + new SynchronousQueue<>(), new Daemon.DaemonFactory() { private final AtomicInteger threadIndex = new AtomicInteger(0); diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/resources/hdfs-default.xml b/hadoop-hdfs-project/hadoop-hdfs/src/main/resources/hdfs-default.xml index 4f37b5637c..15ee9bbc55 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/resources/hdfs-default.xml +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/resources/hdfs-default.xml @@ -3048,15 +3048,6 @@ - - dfs.datanode.ec.reconstruction.stripedread.threads - 20 - - Number of threads used by the Datanode to read striped block - during background reconstruction work. - - - dfs.datanode.ec.reconstruction.stripedread.buffer.size 65536 diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/site/markdown/HDFSErasureCoding.md b/hadoop-hdfs-project/hadoop-hdfs/src/site/markdown/HDFSErasureCoding.md index 5bd7c6d29a..0a88a5f9a6 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/site/markdown/HDFSErasureCoding.md +++ b/hadoop-hdfs-project/hadoop-hdfs/src/site/markdown/HDFSErasureCoding.md @@ -137,7 +137,6 @@ Deployment Erasure coding background recovery work on the DataNodes can also be tuned via the following configuration parameters: 1. `dfs.datanode.ec.reconstruction.stripedread.timeout.millis` - Timeout for striped reads. Default value is 5000 ms. - 1. `dfs.datanode.ec.reconstruction.stripedread.threads` - Number of concurrent reader threads. Default value is 20 threads. 1. `dfs.datanode.ec.reconstruction.stripedread.buffer.size` - Buffer size for reader service. Default value is 64KB. 1. `dfs.datanode.ec.reconstruction.stripedblock.threads.size` - Number of threads used by the Datanode for background reconstruction work. Default value is 8 threads.