You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by qi...@apache.org on 2022/12/13 01:48:42 UTC

[iotdb] branch master updated: Remove old IoTDB main class since it's deprecated (#8423)

This is an automated email from the ASF dual-hosted git repository.

qiaojialin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new 25ce90a4f4 Remove old IoTDB main class since it's deprecated (#8423)
25ce90a4f4 is described below

commit 25ce90a4f450d59e37561f89bc9e51be56c43b39
Author: Haonan <hh...@outlook.com>
AuthorDate: Tue Dec 13 09:48:34 2022 +0800

    Remove old IoTDB main class since it's deprecated (#8423)
---
 .../src/test/resources/logback-test.xml            |   2 +-
 .../iotdb/db/integration/IoTDBCheckConfigIT.java   |   6 +-
 .../iotdb/db/integration/IoTDBSelectIntoIT.java    | 125 +++----
 integration/src/test/resources/logback-test.xml    |   2 +-
 .../apache/iotdb/library/anomaly/AnomalyTests.java | 316 ++++++++++--------
 .../apache/iotdb/library/dmatch/DMatchTests.java   | 368 +++++++++++----------
 .../iotdb/library/dprofile/DProfileTests.java      |  56 ++--
 .../iotdb/library/dquality/DQualityTests.java      |  56 ++--
 .../apache/iotdb/library/drepair/DRepairTests.java |  43 +--
 .../iotdb/library/frequency/FrequencyTests.java    |  69 ++--
 .../apache/iotdb/library/series/SeriesTest.java    |  56 ++--
 .../apache/iotdb/library/string/StringTests.java   |  30 +-
 .../trigger/sink/local/LocalIoTDBHandler.java      |  19 +-
 .../iotdb/db/metadata/idtable/IDTableManager.java  |   4 +-
 .../apache/iotdb/db/qp/executor/PlanExecutor.java  |  20 +-
 .../iotdb/db/qp/logical/crud/QueryOperator.java    |   6 +-
 .../iotdb/db/qp/physical/crud/QueryPlan.java       |   6 +-
 .../qp/strategy/optimizer/ConcatPathOptimizer.java |   6 +-
 .../apache/iotdb/db/qp/utils/WildcardsRemover.java |   7 +-
 .../iotdb/db/query/dataset/ShowDevicesDataSet.java |   4 +-
 .../db/query/dataset/ShowTimeseriesDataSet.java    |   4 +-
 .../java/org/apache/iotdb/db/service/DataNode.java |   1 -
 .../java/org/apache/iotdb/db/service/IoTDB.java    | 251 --------------
 .../org/apache/iotdb/db/service/IoTDBMBean.java    |  27 --
 .../apache/iotdb/db/service/IoTDBShutdownHook.java |   3 +-
 .../db/service/thrift/impl/TSServiceImpl.java      |   8 +-
 .../org/apache/iotdb/db/utils/SchemaUtils.java     |   6 +-
 .../iotdb/db/engine/MetadataManagerHelper.java     |   6 +-
 .../iotdb/db/engine/cache/ChunkCacheTest.java      |  22 +-
 .../compaction/TestUtilsForAlignedSeries.java      |  30 +-
 .../db/engine/compaction/cross/MergeTest.java      |  22 +-
 .../inner/AbstractInnerSpaceCompactionTest.java    |  22 +-
 .../inner/FastCompactionPerformerAlignedTest.java  |   6 +-
 .../InnerSeqCompactionWithFastPerformerTest.java   |  22 +-
 ...nerSeqCompactionWithReadChunkPerformerTest.java |  22 +-
 .../InnerUnseqCompactionWithFastPerformerTest.java |  22 +-
 ...rUnseqCompactionWithReadPointPerformerTest.java |  22 +-
 .../ReadChunkCompactionPerformerAlignedTest.java   |   6 +-
 .../inner/sizetiered/SizeTieredCompactionTest.java |  22 +-
 .../recover/SizeTieredCompactionRecoverTest.java   |  22 +-
 .../iotdb/db/engine/storagegroup/TTLTest.java      |  27 +-
 .../LocalConfigNodeMultiDataRegionTest.java        |   8 +-
 .../iotdb/db/metadata/SchemaAdvancedTest.java      |   3 +-
 .../apache/iotdb/db/metadata/SchemaBasicTest.java  |  39 ++-
 .../iotdb/db/metadata/SchemaImproveTest.java       |   9 +-
 .../iotdb/db/metadata/idtable/IDTableTest.java     |  12 +-
 .../db/metadata/mtree/disk/MemManagerTest.java     |   3 +-
 .../schemaRegion/SchemaRegionBasicTest.java        |   8 +-
 .../execution/operator/AlignedSeriesTestUtil.java  |  86 ++---
 .../java/org/apache/iotdb/db/qp/PlannerTest.java   |   6 +-
 .../iotdb/db/qp/logical/LogicalPlanSmallTest.java  |   6 +-
 .../query/dataset/UDTFAlignByTimeDataSetTest.java  |  82 ++---
 .../query/reader/series/SeriesReaderTestUtil.java  |  22 +-
 .../iotdb/db/rescon/ResourceManagerTest.java       |  22 +-
 .../org/apache/iotdb/db/service/DaemonTest.java    |   4 +-
 .../DataNodeInternalRPCServiceImplTest.java        |   4 +-
 .../db/sync/datasource/PipeOpManagerTest.java      |   6 +-
 .../org/apache/iotdb/db/tools/MLogParserTest.java  |  23 +-
 .../org/apache/iotdb/db/utils/SchemaTestUtils.java |   5 +-
 .../org/apache/iotdb/db/utils/SchemaUtilsTest.java |   8 +-
 .../db/wal/recover/WALRecoverManagerTest.java      |  56 ++--
 .../db/wal/recover/file/TsFilePlanRedoerTest.java  |  87 ++---
 .../file/UnsealedTsFileRecoverPerformerTest.java   |  56 ++--
 server/src/test/resources/logback-test.xml         |   2 +-
 .../apache/iotdb/spark/db/EnvironmentUtils.java    |   6 +-
 .../org/apache/iotdb/spark/db/IoTDBTest.scala      |   8 +-
 .../org/apache/iotdb/spark/db/IoTDBWriteTest.scala |   8 +-
 .../iotdb/spark/db/unit/DataFrameToolsTest.scala   |   8 +-
 68 files changed, 1113 insertions(+), 1248 deletions(-)

diff --git a/integration-test/src/test/resources/logback-test.xml b/integration-test/src/test/resources/logback-test.xml
index fd59509b34..e73d764256 100644
--- a/integration-test/src/test/resources/logback-test.xml
+++ b/integration-test/src/test/resources/logback-test.xml
@@ -48,7 +48,7 @@
     <logger name="org.apache.iotdb.db.engine.flush.FlushManager" level="INFO"/>
     <logger name="org.apache.iotdb.db.integration.IoTDBCompactionIT" level="INFO"/>
     <logger name="org.apache.iotdb.commons.service.RegisterManager" level="INFO"/>
-    <logger name="org.apache.iotdb.db.service.IoTDB" level="WARN"/>
+    <logger name="org.apache.iotdb.db.service.DataNode" level="WARN"/>
     <logger name="org.apache.iotdb.db.service.RPCService" level="INFO"/>
     <logger name="org.apache.iotdb.db.service.MQTTService" level="INFO"/>
     <logger name="DETAILED_FAILURE_QUERY_TRACE" level="ERROR"/>
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBCheckConfigIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBCheckConfigIT.java
index 296693f718..f1ef549b48 100644
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBCheckConfigIT.java
+++ b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBCheckConfigIT.java
@@ -22,7 +22,7 @@ import org.apache.iotdb.commons.exception.ConfigurationException;
 import org.apache.iotdb.commons.file.SystemFileFactory;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.conf.IoTDBStartCheck;
-import org.apache.iotdb.db.service.IoTDB;
+import org.apache.iotdb.db.localconfignode.LocalConfigNode;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.itbase.category.LocalStandaloneTest;
 import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
@@ -105,7 +105,7 @@ public class IoTDBCheckConfigIT {
   public void testAlterTimeEncoderAfterStartService() throws Exception {
     EnvironmentUtils.shutdownDaemon();
     EnvironmentUtils.stopDaemon();
-    IoTDB.configManager.clear();
+    LocalConfigNode.getInstance().clear();
     systemProperties.put("time_encoder", "REGULAR");
     writeSystemFile();
     EnvironmentUtils.reactiveDaemon();
@@ -124,7 +124,7 @@ public class IoTDBCheckConfigIT {
   public void testSameTimeEncoderAfterStartService() throws Exception {
     EnvironmentUtils.shutdownDaemon();
     EnvironmentUtils.stopDaemon();
-    IoTDB.configManager.clear();
+    LocalConfigNode.getInstance().clear();
     systemProperties.put("time_encoder", "TS_2DIFF");
     writeSystemFile();
     EnvironmentUtils.reactiveDaemon();
diff --git a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSelectIntoIT.java b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSelectIntoIT.java
index 6616e37b43..f80bb9fe4b 100644
--- a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSelectIntoIT.java
+++ b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBSelectIntoIT.java
@@ -22,7 +22,7 @@ package org.apache.iotdb.db.integration;
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.service.IoTDB;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.itbase.category.LocalStandaloneTest;
 import org.apache.iotdb.jdbc.Config;
@@ -73,63 +73,72 @@ public class IoTDBSelectIntoIT {
   }
 
   private static void createTimeSeries() throws MetadataException {
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.sg.d1.s1"),
-        TSDataType.INT32,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.sg.d1.s2"),
-        TSDataType.INT64,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.sg.d1.s3"),
-        TSDataType.FLOAT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.sg.d1.s4"),
-        TSDataType.DOUBLE,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.sg.d1.s5"),
-        TSDataType.BOOLEAN,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.sg.d1.s6"),
-        TSDataType.TEXT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.sg.d1.empty"),
-        TSDataType.TEXT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.sg.d2.s1"),
-        TSDataType.INT32,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.sg.d1.`datatype`"),
-        TSDataType.DOUBLE,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.sg.d1.s1"),
+            TSDataType.INT32,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.sg.d1.s2"),
+            TSDataType.INT64,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.sg.d1.s3"),
+            TSDataType.FLOAT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.sg.d1.s4"),
+            TSDataType.DOUBLE,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.sg.d1.s5"),
+            TSDataType.BOOLEAN,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.sg.d1.s6"),
+            TSDataType.TEXT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.sg.d1.empty"),
+            TSDataType.TEXT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.sg.d2.s1"),
+            TSDataType.INT32,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.sg.d1.`datatype`"),
+            TSDataType.DOUBLE,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
   }
 
   private static void generateData() {
diff --git a/integration/src/test/resources/logback-test.xml b/integration/src/test/resources/logback-test.xml
index c757a1d100..ff1f5e7a29 100644
--- a/integration/src/test/resources/logback-test.xml
+++ b/integration/src/test/resources/logback-test.xml
@@ -48,7 +48,7 @@
     <logger name="org.apache.iotdb.db.engine.flush.FlushManager" level="INFO"/>
     <logger name="org.apache.iotdb.db.integration.IoTDBCompactionIT" level="INFO"/>
     <logger name="org.apache.iotdb.commons.service.RegisterManager" level="INFO"/>
-    <logger name="org.apache.iotdb.db.service.IoTDB" level="WARN"/>
+    <logger name="org.apache.iotdb.db.service.DataNode" level="WARN"/>
     <logger name="org.apache.iotdb.db.service.RPCService" level="INFO"/>
     <logger name="org.apache.iotdb.db.service.MQTTService" level="INFO"/>
     <logger name="DETAILED_FAILURE_QUERY_TRACE" level="ERROR"/>
diff --git a/library-udf/src/test/java/org/apache/iotdb/library/anomaly/AnomalyTests.java b/library-udf/src/test/java/org/apache/iotdb/library/anomaly/AnomalyTests.java
index 722ca6f67a..09fd440533 100644
--- a/library-udf/src/test/java/org/apache/iotdb/library/anomaly/AnomalyTests.java
+++ b/library-udf/src/test/java/org/apache/iotdb/library/anomaly/AnomalyTests.java
@@ -23,7 +23,7 @@ import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.service.IoTDB;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.integration.env.ConfigFactory;
 import org.apache.iotdb.integration.env.EnvFactory;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
@@ -63,151 +63,175 @@ public class AnomalyTests {
   }
 
   private static void createTimeSeries() throws MetadataException, IllegalPathException {
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath("root.vehicle"));
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s1"),
-        TSDataType.INT32,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s2"),
-        TSDataType.INT64,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s3"),
-        TSDataType.FLOAT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s4"),
-        TSDataType.DOUBLE,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d2.s1"),
-        TSDataType.INT32,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d2.s2"),
-        TSDataType.INT64,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d2.s3"),
-        TSDataType.FLOAT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d2.s4"),
-        TSDataType.DOUBLE,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d3.s1"),
-        TSDataType.INT32,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d3.s2"),
-        TSDataType.INT64,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d3.s3"),
-        TSDataType.FLOAT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d3.s4"),
-        TSDataType.DOUBLE,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d3.s5"),
-        TSDataType.INT32,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d3.s6"),
-        TSDataType.INT64,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d3.s7"),
-        TSDataType.FLOAT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d3.s8"),
-        TSDataType.DOUBLE,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d4.s1"),
-        TSDataType.INT32,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d4.s2"),
-        TSDataType.INT64,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d4.s3"),
-        TSDataType.FLOAT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d4.s4"),
-        TSDataType.DOUBLE,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d6.s1"),
-        TSDataType.INT32,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d6.s2"),
-        TSDataType.INT64,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d6.s3"),
-        TSDataType.FLOAT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d6.s4"),
-        TSDataType.DOUBLE,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath("root.vehicle"));
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s1"),
+            TSDataType.INT32,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s2"),
+            TSDataType.INT64,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s3"),
+            TSDataType.FLOAT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s4"),
+            TSDataType.DOUBLE,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d2.s1"),
+            TSDataType.INT32,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d2.s2"),
+            TSDataType.INT64,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d2.s3"),
+            TSDataType.FLOAT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d2.s4"),
+            TSDataType.DOUBLE,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d3.s1"),
+            TSDataType.INT32,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d3.s2"),
+            TSDataType.INT64,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d3.s3"),
+            TSDataType.FLOAT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d3.s4"),
+            TSDataType.DOUBLE,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d3.s5"),
+            TSDataType.INT32,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d3.s6"),
+            TSDataType.INT64,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d3.s7"),
+            TSDataType.FLOAT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d3.s8"),
+            TSDataType.DOUBLE,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d4.s1"),
+            TSDataType.INT32,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d4.s2"),
+            TSDataType.INT64,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d4.s3"),
+            TSDataType.FLOAT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d4.s4"),
+            TSDataType.DOUBLE,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d6.s1"),
+            TSDataType.INT32,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d6.s2"),
+            TSDataType.INT64,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d6.s3"),
+            TSDataType.FLOAT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d6.s4"),
+            TSDataType.DOUBLE,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
   }
 
   private static void generateData() {
diff --git a/library-udf/src/test/java/org/apache/iotdb/library/dmatch/DMatchTests.java b/library-udf/src/test/java/org/apache/iotdb/library/dmatch/DMatchTests.java
index 13044f4644..2f2c9c3d77 100644
--- a/library-udf/src/test/java/org/apache/iotdb/library/dmatch/DMatchTests.java
+++ b/library-udf/src/test/java/org/apache/iotdb/library/dmatch/DMatchTests.java
@@ -22,7 +22,7 @@ package org.apache.iotdb.library.dmatch;
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.service.IoTDB;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.integration.env.ConfigFactory;
 import org.apache.iotdb.integration.env.EnvFactory;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
@@ -62,175 +62,203 @@ public class DMatchTests {
   }
 
   private static void createTimeSeries() throws MetadataException {
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath("root.vehicle"));
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s1"),
-        TSDataType.INT32,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s2"),
-        TSDataType.INT64,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s3"),
-        TSDataType.FLOAT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s4"),
-        TSDataType.DOUBLE,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s5"),
-        TSDataType.INT32,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s6"),
-        TSDataType.INT64,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s7"),
-        TSDataType.FLOAT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s8"),
-        TSDataType.DOUBLE,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d2.s1"),
-        TSDataType.INT32,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d2.s2"),
-        TSDataType.INT64,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d2.s3"),
-        TSDataType.FLOAT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d2.s4"),
-        TSDataType.DOUBLE,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d2.s5"),
-        TSDataType.INT32,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d2.s6"),
-        TSDataType.INT64,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d2.s7"),
-        TSDataType.FLOAT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d2.s8"),
-        TSDataType.DOUBLE,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d3.s1"),
-        TSDataType.INT32,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d3.s2"),
-        TSDataType.INT64,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d3.s3"),
-        TSDataType.FLOAT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d3.s4"),
-        TSDataType.DOUBLE,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d4.s1"),
-        TSDataType.INT32,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d4.s2"),
-        TSDataType.INT64,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d4.s3"),
-        TSDataType.FLOAT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d4.s4"),
-        TSDataType.DOUBLE,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d4.s5"),
-        TSDataType.INT32,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d4.s6"),
-        TSDataType.INT64,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d4.s7"),
-        TSDataType.FLOAT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d4.s8"),
-        TSDataType.DOUBLE,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath("root.vehicle"));
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s1"),
+            TSDataType.INT32,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s2"),
+            TSDataType.INT64,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s3"),
+            TSDataType.FLOAT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s4"),
+            TSDataType.DOUBLE,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s5"),
+            TSDataType.INT32,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s6"),
+            TSDataType.INT64,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s7"),
+            TSDataType.FLOAT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s8"),
+            TSDataType.DOUBLE,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d2.s1"),
+            TSDataType.INT32,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d2.s2"),
+            TSDataType.INT64,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d2.s3"),
+            TSDataType.FLOAT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d2.s4"),
+            TSDataType.DOUBLE,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d2.s5"),
+            TSDataType.INT32,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d2.s6"),
+            TSDataType.INT64,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d2.s7"),
+            TSDataType.FLOAT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d2.s8"),
+            TSDataType.DOUBLE,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d3.s1"),
+            TSDataType.INT32,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d3.s2"),
+            TSDataType.INT64,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d3.s3"),
+            TSDataType.FLOAT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d3.s4"),
+            TSDataType.DOUBLE,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d4.s1"),
+            TSDataType.INT32,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d4.s2"),
+            TSDataType.INT64,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d4.s3"),
+            TSDataType.FLOAT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d4.s4"),
+            TSDataType.DOUBLE,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d4.s5"),
+            TSDataType.INT32,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d4.s6"),
+            TSDataType.INT64,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d4.s7"),
+            TSDataType.FLOAT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d4.s8"),
+            TSDataType.DOUBLE,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
   }
 
   private static void generateData() {
diff --git a/library-udf/src/test/java/org/apache/iotdb/library/dprofile/DProfileTests.java b/library-udf/src/test/java/org/apache/iotdb/library/dprofile/DProfileTests.java
index 1618a184f4..e3d8db1904 100644
--- a/library-udf/src/test/java/org/apache/iotdb/library/dprofile/DProfileTests.java
+++ b/library-udf/src/test/java/org/apache/iotdb/library/dprofile/DProfileTests.java
@@ -22,7 +22,7 @@ package org.apache.iotdb.library.dprofile;
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.service.IoTDB;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.integration.env.ConfigFactory;
 import org.apache.iotdb.integration.env.EnvFactory;
 import org.apache.iotdb.jdbc.Config;
@@ -65,31 +65,35 @@ public class DProfileTests {
   }
 
   private static void createTimeSeries() throws MetadataException {
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath("root.vehicle"));
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s1"),
-        TSDataType.INT32,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s2"),
-        TSDataType.INT64,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d2.s1"),
-        TSDataType.FLOAT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d2.s2"),
-        TSDataType.DOUBLE,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath("root.vehicle"));
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s1"),
+            TSDataType.INT32,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s2"),
+            TSDataType.INT64,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d2.s1"),
+            TSDataType.FLOAT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d2.s2"),
+            TSDataType.DOUBLE,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
   }
 
   private static void generateData() {
diff --git a/library-udf/src/test/java/org/apache/iotdb/library/dquality/DQualityTests.java b/library-udf/src/test/java/org/apache/iotdb/library/dquality/DQualityTests.java
index 0e2348b45e..72dcc7f0b5 100644
--- a/library-udf/src/test/java/org/apache/iotdb/library/dquality/DQualityTests.java
+++ b/library-udf/src/test/java/org/apache/iotdb/library/dquality/DQualityTests.java
@@ -22,7 +22,7 @@ package org.apache.iotdb.library.dquality;
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.service.IoTDB;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.integration.env.ConfigFactory;
 import org.apache.iotdb.integration.env.EnvFactory;
 import org.apache.iotdb.jdbc.Config;
@@ -65,31 +65,35 @@ public class DQualityTests {
   }
 
   private static void createTimeSeries() throws MetadataException {
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath("root.vehicle"));
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s1"),
-        TSDataType.INT32,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s2"),
-        TSDataType.INT64,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d2.s1"),
-        TSDataType.FLOAT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d2.s2"),
-        TSDataType.DOUBLE,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath("root.vehicle"));
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s1"),
+            TSDataType.INT32,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s2"),
+            TSDataType.INT64,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d2.s1"),
+            TSDataType.FLOAT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d2.s2"),
+            TSDataType.DOUBLE,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
   }
 
   private static void generateData() {
diff --git a/library-udf/src/test/java/org/apache/iotdb/library/drepair/DRepairTests.java b/library-udf/src/test/java/org/apache/iotdb/library/drepair/DRepairTests.java
index 508ce51701..d0c09ab92d 100644
--- a/library-udf/src/test/java/org/apache/iotdb/library/drepair/DRepairTests.java
+++ b/library-udf/src/test/java/org/apache/iotdb/library/drepair/DRepairTests.java
@@ -22,7 +22,7 @@ package org.apache.iotdb.library.drepair;
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.service.IoTDB;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.integration.env.ConfigFactory;
 import org.apache.iotdb.integration.env.EnvFactory;
 import org.apache.iotdb.jdbc.Config;
@@ -66,28 +66,31 @@ public class DRepairTests {
   }
 
   private static void createTimeSeries() throws MetadataException {
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath("root.vehicle"));
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath("root.vehicle"));
     // test series for TimeStampRepair
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s1"),
-        TSDataType.INT32,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s1"),
+            TSDataType.INT32,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
     // test series for ValueFill
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d2.s1"),
-        TSDataType.INT64,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d2.s1"),
+            TSDataType.INT64,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
     // test series for ValueRepair
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d3.s1"),
-        TSDataType.FLOAT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d3.s1"),
+            TSDataType.FLOAT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
   }
 
   private static void generateData() {
diff --git a/library-udf/src/test/java/org/apache/iotdb/library/frequency/FrequencyTests.java b/library-udf/src/test/java/org/apache/iotdb/library/frequency/FrequencyTests.java
index 7d18243f4a..32f40cbeae 100644
--- a/library-udf/src/test/java/org/apache/iotdb/library/frequency/FrequencyTests.java
+++ b/library-udf/src/test/java/org/apache/iotdb/library/frequency/FrequencyTests.java
@@ -22,7 +22,7 @@ package org.apache.iotdb.library.frequency;
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.service.IoTDB;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.integration.env.ConfigFactory;
 import org.apache.iotdb.integration.env.EnvFactory;
 import org.apache.iotdb.jdbc.Config;
@@ -70,37 +70,42 @@ public class FrequencyTests {
   }
 
   private static void createTimeSeries() throws MetadataException {
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath("root.vehicle"));
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s1"),
-        TSDataType.DOUBLE,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s2"),
-        TSDataType.DOUBLE,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s3"),
-        TSDataType.DOUBLE,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d2.s1"),
-        TSDataType.DOUBLE,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d2.s2"),
-        TSDataType.DOUBLE,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath("root.vehicle"));
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s1"),
+            TSDataType.DOUBLE,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s2"),
+            TSDataType.DOUBLE,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s3"),
+            TSDataType.DOUBLE,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d2.s1"),
+            TSDataType.DOUBLE,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d2.s2"),
+            TSDataType.DOUBLE,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
   }
 
   private static void generateData() {
diff --git a/library-udf/src/test/java/org/apache/iotdb/library/series/SeriesTest.java b/library-udf/src/test/java/org/apache/iotdb/library/series/SeriesTest.java
index e9187afcc8..8647f2eb3b 100644
--- a/library-udf/src/test/java/org/apache/iotdb/library/series/SeriesTest.java
+++ b/library-udf/src/test/java/org/apache/iotdb/library/series/SeriesTest.java
@@ -22,7 +22,7 @@ package org.apache.iotdb.library.series;
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.service.IoTDB;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.integration.env.ConfigFactory;
 import org.apache.iotdb.integration.env.EnvFactory;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
@@ -70,31 +70,35 @@ public class SeriesTest {
   }
 
   private static void createTimeSeries() throws MetadataException {
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath("root.vehicle"));
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s1"),
-        TSDataType.INT32,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s2"),
-        TSDataType.INT64,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d2.s1"),
-        TSDataType.FLOAT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d2.s2"),
-        TSDataType.DOUBLE,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath("root.vehicle"));
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s1"),
+            TSDataType.INT32,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s2"),
+            TSDataType.INT64,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d2.s1"),
+            TSDataType.FLOAT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d2.s2"),
+            TSDataType.DOUBLE,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
   }
 
   private static void generateData() {
diff --git a/library-udf/src/test/java/org/apache/iotdb/library/string/StringTests.java b/library-udf/src/test/java/org/apache/iotdb/library/string/StringTests.java
index fb3aad65e7..ad4b838297 100644
--- a/library-udf/src/test/java/org/apache/iotdb/library/string/StringTests.java
+++ b/library-udf/src/test/java/org/apache/iotdb/library/string/StringTests.java
@@ -22,7 +22,7 @@ package org.apache.iotdb.library.string;
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.service.IoTDB;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.integration.env.ConfigFactory;
 import org.apache.iotdb.integration.env.EnvFactory;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
@@ -62,19 +62,21 @@ public class StringTests {
   }
 
   private static void createTimeSeries() throws MetadataException {
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath("root.vehicle"));
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s1"),
-        TSDataType.TEXT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d2.s1"),
-        TSDataType.TEXT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath("root.vehicle"));
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s1"),
+            TSDataType.TEXT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d2.s1"),
+            TSDataType.TEXT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
   }
 
   private static void generateData() {
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/trigger/sink/local/LocalIoTDBHandler.java b/server/src/main/java/org/apache/iotdb/db/engine/trigger/sink/local/LocalIoTDBHandler.java
index 7d73860c40..978780f480 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/trigger/sink/local/LocalIoTDBHandler.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/trigger/sink/local/LocalIoTDBHandler.java
@@ -27,10 +27,10 @@ import org.apache.iotdb.db.engine.trigger.sink.exception.SinkException;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.qp.executor.IPlanExecutor;
 import org.apache.iotdb.db.qp.executor.PlanExecutor;
 import org.apache.iotdb.db.qp.physical.PhysicalPlan;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
@@ -63,15 +63,16 @@ public class LocalIoTDBHandler implements Handler<LocalIoTDBConfiguration, Local
       TSDataType dataType = dataTypes[i];
 
       PartialPath path = new PartialPath(device.getFullPath(), measurement);
-      if (!IoTDB.schemaProcessor.isPathExist(path)) {
-        IoTDB.schemaProcessor.createTimeseries(
-            path,
-            dataType,
-            getDefaultEncoding(dataType),
-            TSFileDescriptor.getInstance().getConfig().getCompressor(),
-            Collections.emptyMap());
+      if (!LocalSchemaProcessor.getInstance().isPathExist(path)) {
+        LocalSchemaProcessor.getInstance()
+            .createTimeseries(
+                path,
+                dataType,
+                getDefaultEncoding(dataType),
+                TSFileDescriptor.getInstance().getConfig().getCompressor(),
+                Collections.emptyMap());
       } else {
-        if (!IoTDB.schemaProcessor.getSeriesType(path).equals(dataType)) {
+        if (!LocalSchemaProcessor.getInstance().getSeriesType(path).equals(dataType)) {
           throw new SinkException(
               String.format("The data type of %s you provided was not correct.", path));
         }
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/IDTableManager.java b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/IDTableManager.java
index ee52952fe8..8f6c8030e9 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/idtable/IDTableManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/idtable/IDTableManager.java
@@ -23,7 +23,7 @@ import org.apache.iotdb.commons.file.SystemFileFactory;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.exception.metadata.PathNotExistException;
-import org.apache.iotdb.db.service.IoTDB;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.tsfile.utils.FilePathUtils;
 import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
 
@@ -81,7 +81,7 @@ public class IDTableManager {
   public synchronized IDTable getIDTable(PartialPath devicePath) {
     try {
       return idTableMap.computeIfAbsent(
-          IoTDB.schemaProcessor.getStorageGroupNodeByPath(devicePath).getFullPath(),
+          LocalSchemaProcessor.getInstance().getStorageGroupNodeByPath(devicePath).getFullPath(),
           storageGroupPath ->
               new IDTableHashmapImpl(
                   SystemFileFactory.INSTANCE.getFile(
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
index 6c64d769b9..7e43d0673d 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/executor/PlanExecutor.java
@@ -42,6 +42,7 @@ import org.apache.iotdb.db.engine.flush.pool.FlushTaskPoolManager;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.metadata.mnode.IStorageGroupMNode;
 import org.apache.iotdb.db.metadata.mnode.MNodeType;
 import org.apache.iotdb.db.qp.logical.sys.AuthorOperator.AuthorType;
@@ -80,7 +81,6 @@ import org.apache.iotdb.db.query.dataset.ShowTimeseriesDataSet;
 import org.apache.iotdb.db.query.dataset.SingleDataSet;
 import org.apache.iotdb.db.query.executor.IQueryRouter;
 import org.apache.iotdb.db.query.executor.QueryRouter;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.tsfile.exception.filter.QueryFilterOptimizationException;
 import org.apache.iotdb.tsfile.exception.write.UnSupportedDataTypeException;
@@ -339,24 +339,24 @@ public class PlanExecutor implements IPlanExecutor {
   }
 
   protected int getDevicesNum(PartialPath path, boolean isPrefixMatch) throws MetadataException {
-    return IoTDB.schemaProcessor.getDevicesNum(path, isPrefixMatch);
+    return LocalSchemaProcessor.getInstance().getDevicesNum(path, isPrefixMatch);
   }
 
   private int getStorageGroupNum(PartialPath path, boolean isPrefixMatch) throws MetadataException {
-    return IoTDB.schemaProcessor.getStorageGroupNum(path, isPrefixMatch);
+    return LocalSchemaProcessor.getInstance().getStorageGroupNum(path, isPrefixMatch);
   }
 
   protected int getPathsNum(PartialPath path, boolean isPrefixMatch) throws MetadataException {
-    return IoTDB.schemaProcessor.getAllTimeseriesCount(path, isPrefixMatch);
+    return LocalSchemaProcessor.getInstance().getAllTimeseriesCount(path, isPrefixMatch);
   }
 
   protected int getNodesNumInGivenLevel(PartialPath path, int level, boolean isPrefixMatch)
       throws MetadataException {
-    return IoTDB.schemaProcessor.getNodesCountInGivenLevel(path, level, isPrefixMatch);
+    return LocalSchemaProcessor.getInstance().getNodesCountInGivenLevel(path, level, isPrefixMatch);
   }
 
   protected List<MeasurementPath> getPathsName(PartialPath path) throws MetadataException {
-    return IoTDB.schemaProcessor.getMeasurementPaths(path);
+    return LocalSchemaProcessor.getInstance().getMeasurementPaths(path);
   }
 
   private QueryDataSet processCountTimeSeries(CountPlan countPlan) throws MetadataException {
@@ -403,7 +403,7 @@ public class PlanExecutor implements IPlanExecutor {
   }
 
   protected Set<TSchemaNode> getPathNextChildren(PartialPath path) throws MetadataException {
-    return IoTDB.schemaProcessor.getChildNodePathInNextLevel(path);
+    return LocalSchemaProcessor.getInstance().getChildNodePathInNextLevel(path);
   }
 
   private QueryDataSet processShowChildNodes(ShowChildNodesPlan showChildNodesPlan)
@@ -425,12 +425,12 @@ public class PlanExecutor implements IPlanExecutor {
   }
 
   protected Set<String> getNodeNextChildren(PartialPath path) throws MetadataException {
-    return IoTDB.schemaProcessor.getChildNodeNameInNextLevel(path);
+    return LocalSchemaProcessor.getInstance().getChildNodeNameInNextLevel(path);
   }
 
   protected List<PartialPath> getStorageGroupNames(PartialPath path, boolean isPrefixMatch)
       throws MetadataException {
-    return IoTDB.schemaProcessor.getMatchedStorageGroups(path, isPrefixMatch);
+    return LocalSchemaProcessor.getInstance().getMatchedStorageGroups(path, isPrefixMatch);
   }
 
   private QueryDataSet processShowStorageGroup(ShowStorageGroupPlan showStorageGroupPlan)
@@ -475,7 +475,7 @@ public class PlanExecutor implements IPlanExecutor {
   }
 
   protected List<IStorageGroupMNode> getAllStorageGroupNodes() {
-    return IoTDB.schemaProcessor.getAllStorageGroupNodes();
+    return LocalSchemaProcessor.getInstance().getAllStorageGroupNodes();
   }
 
   private QueryDataSet processShowTTLQuery(ShowTTLPlan showTTLPlan) {
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java
index 67616f703a..af2a92b1ab 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/QueryOperator.java
@@ -25,6 +25,7 @@ import org.apache.iotdb.db.exception.query.LogicalOperatorException;
 import org.apache.iotdb.db.exception.query.LogicalOptimizeException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.index.common.IndexType;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.mpp.plan.expression.Expression;
 import org.apache.iotdb.db.mpp.plan.expression.ResultColumn;
 import org.apache.iotdb.db.mpp.plan.expression.leaf.TimeSeriesOperand;
@@ -38,7 +39,6 @@ import org.apache.iotdb.db.qp.physical.crud.QueryIndexPlan;
 import org.apache.iotdb.db.qp.physical.crud.QueryPlan;
 import org.apache.iotdb.db.qp.physical.crud.RawDataQueryPlan;
 import org.apache.iotdb.db.qp.strategy.PhysicalGenerator;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.tsfile.exception.filter.QueryFilterOptimizationException;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.read.expression.IExpression;
@@ -510,11 +510,11 @@ public class QueryOperator extends Operator {
   }
 
   protected Set<PartialPath> getMatchedDevices(PartialPath path) throws MetadataException {
-    return IoTDB.schemaProcessor.getMatchedDevices(path, isPrefixMatchPath);
+    return LocalSchemaProcessor.getInstance().getMatchedDevices(path, isPrefixMatchPath);
   }
 
   protected List<MeasurementPath> getMatchedTimeseries(PartialPath path) throws MetadataException {
-    return IoTDB.schemaProcessor.getMeasurementPaths(path, isPrefixMatchPath);
+    return LocalSchemaProcessor.getInstance().getMeasurementPaths(path, isPrefixMatchPath);
   }
 
   public boolean isEnableTracing() {
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryPlan.java
index 83d25ba3e5..63f6b72328 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryPlan.java
@@ -22,12 +22,12 @@ import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.MeasurementPath;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.mpp.plan.expression.ResultColumn;
 import org.apache.iotdb.db.qp.logical.Operator;
 import org.apache.iotdb.db.qp.logical.crud.SpecialClauseComponent;
 import org.apache.iotdb.db.qp.physical.PhysicalPlan;
 import org.apache.iotdb.db.qp.strategy.PhysicalGenerator;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.utils.SchemaUtils;
 import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
@@ -121,7 +121,9 @@ public abstract class QueryPlan extends PhysicalPlan {
       if (isJdbcQuery) {
         // Separate sgName from the name of resultColumn to reduce the network IO
         String sgName =
-            IoTDB.schemaProcessor.getBelongedStorageGroup(getPaths().get(i)).getFullPath();
+            LocalSchemaProcessor.getInstance()
+                .getBelongedStorageGroup(getPaths().get(i))
+                .getFullPath();
         respSgColumns.add(sgName);
         if (resultColumns.get(i).getAlias() == null) {
           respColumns.add(
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/strategy/optimizer/ConcatPathOptimizer.java b/server/src/main/java/org/apache/iotdb/db/qp/strategy/optimizer/ConcatPathOptimizer.java
index 68fd6ed86e..4667e26f75 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/strategy/optimizer/ConcatPathOptimizer.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/strategy/optimizer/ConcatPathOptimizer.java
@@ -26,6 +26,7 @@ import org.apache.iotdb.commons.utils.PathUtils;
 import org.apache.iotdb.db.exception.query.LogicalOptimizeException;
 import org.apache.iotdb.db.exception.query.PathNumOverLimitException;
 import org.apache.iotdb.db.exception.sql.SQLParserException;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.mpp.plan.expression.Expression;
 import org.apache.iotdb.db.mpp.plan.expression.ResultColumn;
 import org.apache.iotdb.db.mpp.plan.expression.leaf.TimeSeriesOperand;
@@ -44,7 +45,6 @@ import org.apache.iotdb.db.qp.logical.crud.SelectComponent;
 import org.apache.iotdb.db.qp.logical.crud.WhereComponent;
 import org.apache.iotdb.db.qp.utils.GroupByLevelController;
 import org.apache.iotdb.db.qp.utils.WildcardsRemover;
-import org.apache.iotdb.db.service.IoTDB;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -366,8 +366,8 @@ public class ConcatPathOptimizer implements ILogicalOptimizer {
     try {
       for (PartialPath originalPath : originalPaths) {
         List<MeasurementPath> all =
-            IoTDB.schemaProcessor.getMeasurementPathsWithAlias(
-                    originalPath, 0, 0, isPrefixMatch, false)
+            LocalSchemaProcessor.getInstance()
+                .getMeasurementPathsWithAlias(originalPath, 0, 0, isPrefixMatch, false)
                 .left;
         if (all.isEmpty()) {
           throw new LogicalOptimizeException(
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/utils/WildcardsRemover.java b/server/src/main/java/org/apache/iotdb/db/qp/utils/WildcardsRemover.java
index 243979d911..05d491f9f0 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/utils/WildcardsRemover.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/utils/WildcardsRemover.java
@@ -25,11 +25,11 @@ import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.exception.query.LogicalOptimizeException;
 import org.apache.iotdb.db.exception.query.PathNumOverLimitException;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.mpp.plan.expression.Expression;
 import org.apache.iotdb.db.mpp.plan.expression.ResultColumn;
 import org.apache.iotdb.db.qp.logical.crud.QueryOperator;
 import org.apache.iotdb.db.qp.strategy.optimizer.ConcatPathOptimizer;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.tsfile.utils.Pair;
 
 import java.util.ArrayList;
@@ -71,8 +71,9 @@ public class WildcardsRemover {
       throws LogicalOptimizeException {
     try {
       Pair<List<MeasurementPath>, Integer> pair =
-          IoTDB.schemaProcessor.getMeasurementPathsWithAlias(
-              path, currentLimit, currentOffset, isPrefixMatch, false);
+          LocalSchemaProcessor.getInstance()
+              .getMeasurementPathsWithAlias(
+                  path, currentLimit, currentOffset, isPrefixMatch, false);
       consumed += pair.right;
       currentOffset -= Math.min(currentOffset, pair.right);
       currentLimit -= pair.left.size();
diff --git a/server/src/main/java/org/apache/iotdb/db/query/dataset/ShowDevicesDataSet.java b/server/src/main/java/org/apache/iotdb/db/query/dataset/ShowDevicesDataSet.java
index e340e4f083..b8cd7c9aa1 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/dataset/ShowDevicesDataSet.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/dataset/ShowDevicesDataSet.java
@@ -21,8 +21,8 @@ package org.apache.iotdb.db.query.dataset;
 
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.PartialPath;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.qp.physical.sys.ShowDevicesPlan;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.read.common.Path;
 import org.apache.iotdb.tsfile.read.common.RowRecord;
@@ -69,7 +69,7 @@ public class ShowDevicesDataSet extends ShowDataSet {
   @Override
   public List<RowRecord> getQueryDataSet() throws MetadataException {
     List<ShowDevicesResult> devicesList =
-        IoTDB.schemaProcessor.getMatchedDevices((ShowDevicesPlan) plan);
+        LocalSchemaProcessor.getInstance().getMatchedDevices((ShowDevicesPlan) plan);
     List<RowRecord> records = new ArrayList<>();
     for (ShowDevicesResult result : devicesList) {
       RowRecord record = new RowRecord(0);
diff --git a/server/src/main/java/org/apache/iotdb/db/query/dataset/ShowTimeseriesDataSet.java b/server/src/main/java/org/apache/iotdb/db/query/dataset/ShowTimeseriesDataSet.java
index 35633c6bea..57c46ccd21 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/dataset/ShowTimeseriesDataSet.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/dataset/ShowTimeseriesDataSet.java
@@ -21,9 +21,9 @@ package org.apache.iotdb.db.query.dataset;
 
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.PartialPath;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.qp.physical.sys.ShowTimeSeriesPlan;
 import org.apache.iotdb.db.query.context.QueryContext;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.read.common.Path;
 import org.apache.iotdb.tsfile.read.common.RowRecord;
@@ -80,7 +80,7 @@ public class ShowTimeseriesDataSet extends ShowDataSet {
   @Override
   public List<RowRecord> getQueryDataSet() throws MetadataException {
     List<ShowTimeSeriesResult> timeseriesList =
-        IoTDB.schemaProcessor.showTimeseries((ShowTimeSeriesPlan) plan, context);
+        LocalSchemaProcessor.getInstance().showTimeseries((ShowTimeSeriesPlan) plan, context);
     List<RowRecord> records = new ArrayList<>();
     for (ShowTimeSeriesResult result : timeseriesList) {
       RowRecord record = new RowRecord(0);
diff --git a/server/src/main/java/org/apache/iotdb/db/service/DataNode.java b/server/src/main/java/org/apache/iotdb/db/service/DataNode.java
index 7b546fe51e..7ae7ce3788 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/DataNode.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/DataNode.java
@@ -685,7 +685,6 @@ public class DataNode implements DataNodeMBean {
   private void initProtocols() throws StartupException {
     if (config.isEnableInfluxDBRpcService()) {
       registerManager.register(InfluxDBRPCService.getInstance());
-      IoTDB.initInfluxDBMManager();
     }
     if (config.isEnableMQTTService()) {
       registerManager.register(MQTTService.getInstance());
diff --git a/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java b/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java
deleted file mode 100644
index 5124f8a316..0000000000
--- a/server/src/main/java/org/apache/iotdb/db/service/IoTDB.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.service;
-
-import org.apache.iotdb.commons.concurrent.IoTDBDefaultThreadExceptionHandler;
-import org.apache.iotdb.commons.conf.IoTDBConstant;
-import org.apache.iotdb.commons.exception.ConfigurationException;
-import org.apache.iotdb.commons.exception.StartupException;
-import org.apache.iotdb.commons.service.JMXService;
-import org.apache.iotdb.commons.service.RegisterManager;
-import org.apache.iotdb.commons.service.StartupChecks;
-import org.apache.iotdb.commons.service.metric.MetricService;
-import org.apache.iotdb.commons.udf.service.UDFClassLoaderManager;
-import org.apache.iotdb.db.conf.IoTDBConfig;
-import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.conf.IoTDBStartCheck;
-import org.apache.iotdb.db.conf.rest.IoTDBRestServiceCheck;
-import org.apache.iotdb.db.engine.cache.CacheHitRatioMonitor;
-import org.apache.iotdb.db.engine.compaction.CompactionTaskManager;
-import org.apache.iotdb.db.engine.flush.FlushManager;
-import org.apache.iotdb.db.exception.query.QueryProcessException;
-import org.apache.iotdb.db.localconfignode.LocalConfigNode;
-import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
-import org.apache.iotdb.db.rescon.PrimitiveArrayManager;
-import org.apache.iotdb.db.rescon.SystemInfo;
-import org.apache.iotdb.db.service.basic.ServiceProvider;
-import org.apache.iotdb.db.service.basic.StandaloneServiceProvider;
-import org.apache.iotdb.db.service.metrics.DataNodeMetricsHelper;
-import org.apache.iotdb.db.service.metrics.IoTDBInternalReporter;
-import org.apache.iotdb.db.sync.SyncService;
-import org.apache.iotdb.db.wal.WALManager;
-import org.apache.iotdb.metrics.config.MetricConfigDescriptor;
-import org.apache.iotdb.metrics.utils.InternalReporterType;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.IOException;
-
-public class IoTDB implements IoTDBMBean {
-
-  private static final Logger logger = LoggerFactory.getLogger(IoTDB.class);
-  private final String mbeanName =
-      String.format("%s:%s=%s", IoTDBConstant.IOTDB_PACKAGE, IoTDBConstant.JMX_TYPE, "IoTDB");
-  private static final IoTDBConfig config = IoTDBDescriptor.getInstance().getConfig();
-  private static final RegisterManager registerManager = new RegisterManager();
-  public static LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
-  public static LocalConfigNode configManager = LocalConfigNode.getInstance();
-  public static ServiceProvider serviceProvider;
-
-  public static IoTDB getInstance() {
-    return IoTDBHolder.INSTANCE;
-  }
-
-  public static void main(String[] args) {
-    try {
-      IoTDBStartCheck.getInstance().checkConfig();
-      IoTDBStartCheck.getInstance().checkDirectory();
-      IoTDBRestServiceCheck.getInstance().checkConfig();
-    } catch (ConfigurationException | IOException e) {
-      logger.error("meet error when doing start checking", e);
-      System.exit(1);
-    }
-    IoTDB daemon = IoTDB.getInstance();
-
-    daemon.active();
-  }
-
-  public static void setSchemaProcessor(LocalSchemaProcessor schemaProcessor) {
-    IoTDB.schemaProcessor = schemaProcessor;
-  }
-
-  public static void setServiceProvider(ServiceProvider serviceProvider) {
-    IoTDB.serviceProvider = serviceProvider;
-  }
-
-  public void active() {
-    processPid();
-    StartupChecks checks = new StartupChecks(IoTDBConstant.DN_ROLE).withDefaultTest();
-    try {
-      checks.verify();
-    } catch (StartupException e) {
-      // TODO: what are some checks
-      logger.error(
-          "{}: failed to start because some checks failed. ", IoTDBConstant.GLOBAL_DB_NAME, e);
-      return;
-    }
-
-    // set recover config, avoid creating deleted time series when recovering wal
-    boolean prevIsAutoCreateSchemaEnabled = config.isAutoCreateSchemaEnabled();
-    config.setAutoCreateSchemaEnabled(false);
-    boolean prevIsEnablePartialInsert = config.isEnablePartialInsert();
-    config.setEnablePartialInsert(true);
-
-    try {
-      setUp();
-    } catch (StartupException | QueryProcessException e) {
-      logger.error("meet error while starting up.", e);
-      deactivate();
-      logger.error("{} exit", IoTDBConstant.GLOBAL_DB_NAME);
-      return;
-    }
-
-    // reset config
-    config.setAutoCreateSchemaEnabled(prevIsAutoCreateSchemaEnabled);
-    config.setEnablePartialInsert(prevIsEnablePartialInsert);
-
-    processPid();
-    logger.info("{} has started.", IoTDBConstant.GLOBAL_DB_NAME);
-  }
-
-  void processPid() {
-    String pidFile = System.getProperty(IoTDBConstant.IOTDB_PIDFILE);
-    if (pidFile != null) {
-      new File(pidFile).deleteOnExit();
-    }
-  }
-
-  private void setUp() throws StartupException, QueryProcessException {
-    logger.info("Setting up IoTDB...");
-
-    Runtime.getRuntime().addShutdownHook(new IoTDBShutdownHook());
-    setUncaughtExceptionHandler();
-    initServiceProvider();
-
-    logger.info("recover the schema...");
-    initConfigManager();
-    registerManager.register(new JMXService());
-    registerManager.register(FlushManager.getInstance());
-    registerManager.register(CacheHitRatioMonitor.getInstance());
-    JMXService.registerMBean(getInstance(), mbeanName);
-    registerManager.register(SyncService.getInstance());
-    registerManager.register(WALManager.getInstance());
-
-    //    registerManager.register(StorageEngine.getInstance());
-
-    registerManager.register(TemporaryQueryDataFileService.getInstance());
-    registerManager.register(
-        UDFClassLoaderManager.setupAndGetInstance(
-            IoTDBDescriptor.getInstance().getConfig().getUdfDir()));
-    registerManager.register(CompactionTaskManager.getInstance());
-
-    // in cluster mode, RPC service is not enabled.
-    if (IoTDBDescriptor.getInstance().getConfig().isEnableRpcService()) {
-      registerManager.register(RPCService.getInstance());
-    }
-
-    initProtocols();
-    // in cluster mode, InfluxDBMManager has been initialized, so there is no need to init again to
-    // avoid wasting time.
-    if (!config.isClusterMode()
-        && IoTDBDescriptor.getInstance().getConfig().isEnableInfluxDBRpcService()) {
-      initInfluxDBMManager();
-    }
-
-    logger.info(
-        "IoTDB is setting up, some databases may not be ready now, please wait several seconds...");
-
-    registerManager.register(UpgradeSevice.getINSTANCE());
-    registerManager.register(SettleService.getINSTANCE());
-    registerManager.register(MetricService.getInstance());
-
-    // init metric service
-    if (MetricConfigDescriptor.getInstance()
-        .getMetricConfig()
-        .getInternalReportType()
-        .equals(InternalReporterType.IOTDB)) {
-      MetricService.getInstance().updateInternalReporter(new IoTDBInternalReporter());
-    }
-    MetricService.getInstance().startInternalReporter();
-    // bind predefined metrics
-    DataNodeMetricsHelper.bind();
-
-    logger.info("IoTDB configuration: " + config.getConfigMessage());
-    logger.info("Congratulation, IoTDB is set up successfully. Now, enjoy yourself!");
-  }
-
-  public static void initInfluxDBMManager() {}
-
-  private void initServiceProvider() throws QueryProcessException {
-    if (!config.isClusterMode()) {
-      serviceProvider = new StandaloneServiceProvider();
-    }
-  }
-
-  public static void initProtocols() throws StartupException {
-    if (IoTDBDescriptor.getInstance().getConfig().isEnableInfluxDBRpcService()) {
-      registerManager.register(InfluxDBRPCService.getInstance());
-    }
-    if (IoTDBDescriptor.getInstance().getConfig().isEnableMQTTService()) {
-      registerManager.register(MQTTService.getInstance());
-    }
-  }
-
-  private void deactivate() {
-    logger.info("Deactivating IoTDB...");
-    registerManager.deregisterAll();
-    JMXService.deregisterMBean(mbeanName);
-    logger.info("IoTDB is deactivated.");
-  }
-
-  private void initConfigManager() {
-    long time = System.currentTimeMillis();
-    IoTDB.configManager.init();
-    long end = System.currentTimeMillis() - time;
-    logger.info("spend {}ms to recover schema.", end);
-  }
-
-  @Override
-  public void stop() {
-    deactivate();
-  }
-
-  public void shutdown() throws Exception {
-    // TODO shutdown is not equal to stop()
-    logger.info("Deactivating IoTDB...");
-    registerManager.shutdownAll();
-    PrimitiveArrayManager.close();
-    SystemInfo.getInstance().close();
-    JMXService.deregisterMBean(mbeanName);
-    logger.info("IoTDB is deactivated.");
-  }
-
-  private void setUncaughtExceptionHandler() {
-    Thread.setDefaultUncaughtExceptionHandler(new IoTDBDefaultThreadExceptionHandler());
-  }
-
-  private static class IoTDBHolder {
-
-    private static final IoTDB INSTANCE = new IoTDB();
-
-    private IoTDBHolder() {}
-  }
-}
diff --git a/server/src/main/java/org/apache/iotdb/db/service/IoTDBMBean.java b/server/src/main/java/org/apache/iotdb/db/service/IoTDBMBean.java
deleted file mode 100644
index aa178d0c45..0000000000
--- a/server/src/main/java/org/apache/iotdb/db/service/IoTDBMBean.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.iotdb.db.service;
-
-import org.apache.iotdb.commons.exception.ShutdownException;
-
-@FunctionalInterface
-public interface IoTDBMBean {
-
-  void stop() throws ShutdownException;
-}
diff --git a/server/src/main/java/org/apache/iotdb/db/service/IoTDBShutdownHook.java b/server/src/main/java/org/apache/iotdb/db/service/IoTDBShutdownHook.java
index d73cdfe194..03a525406b 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/IoTDBShutdownHook.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/IoTDBShutdownHook.java
@@ -23,6 +23,7 @@ import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.conf.directories.DirectoryChecker;
 import org.apache.iotdb.db.consensus.DataRegionConsensusImpl;
 import org.apache.iotdb.db.engine.StorageEngine;
+import org.apache.iotdb.db.localconfignode.LocalConfigNode;
 import org.apache.iotdb.db.metadata.schemaregion.SchemaEngineMode;
 import org.apache.iotdb.db.utils.MemUtils;
 import org.apache.iotdb.db.wal.WALManager;
@@ -39,7 +40,7 @@ public class IoTDBShutdownHook extends Thread {
     // close rocksdb if possible to avoid lose data
     if (SchemaEngineMode.valueOf(IoTDBDescriptor.getInstance().getConfig().getSchemaEngineMode())
         .equals(SchemaEngineMode.Rocksdb_based)) {
-      IoTDB.configManager.clear();
+      LocalConfigNode.getInstance().clear();
     }
 
     // reject write operations to make sure all tsfiles will be sealed
diff --git a/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/TSServiceImpl.java b/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/TSServiceImpl.java
index 2a48fb5437..b666794f6f 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/TSServiceImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/thrift/impl/TSServiceImpl.java
@@ -40,6 +40,7 @@ import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.conf.OperationType;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.qp.logical.Operator.OperatorType;
 import org.apache.iotdb.db.qp.physical.PhysicalPlan;
 import org.apache.iotdb.db.qp.physical.crud.QueryPlan;
@@ -64,7 +65,6 @@ import org.apache.iotdb.db.query.control.tracing.TracingConstant;
 import org.apache.iotdb.db.query.dataset.DirectAlignByTimeDataSet;
 import org.apache.iotdb.db.query.dataset.DirectNonAlignDataSet;
 import org.apache.iotdb.db.query.pool.QueryTaskManager;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.service.StaticResps;
 import org.apache.iotdb.db.service.basic.BasicOpenSessionResp;
 import org.apache.iotdb.db.service.basic.ServiceProvider;
@@ -233,7 +233,7 @@ public class TSServiceImpl implements IClientRPCServiceWithHandler {
 
   public TSServiceImpl() {
     super();
-    serviceProvider = IoTDB.serviceProvider;
+    serviceProvider = null;
   }
 
   @Override
@@ -351,11 +351,11 @@ public class TSServiceImpl implements IClientRPCServiceWithHandler {
   }
 
   protected List<MeasurementPath> getPaths(PartialPath path) throws MetadataException {
-    return IoTDB.schemaProcessor.getMeasurementPaths(path);
+    return LocalSchemaProcessor.getInstance().getMeasurementPaths(path);
   }
 
   protected TSDataType getSeriesTypeByPath(PartialPath path) throws MetadataException {
-    return IoTDB.schemaProcessor.getSeriesType(path);
+    return LocalSchemaProcessor.getInstance().getSeriesType(path);
   }
 
   @Override
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java b/server/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java
index f6c322f3e4..a70e1513ea 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java
@@ -24,10 +24,10 @@ import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.exception.metadata.PathAlreadyExistException;
 import org.apache.iotdb.db.exception.metadata.PathNotExistException;
 import org.apache.iotdb.db.exception.metadata.StorageGroupNotSetException;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.mpp.plan.statement.component.Ordering;
 import org.apache.iotdb.db.qp.constant.SQLConstant;
 import org.apache.iotdb.db.query.aggregation.AggregationType;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
@@ -96,8 +96,8 @@ public class SchemaUtils {
       TSDataType dataType = schema.getType();
       TSEncoding encoding = schema.getEncodingType();
       CompressionType compressionType = schema.getCompressor();
-      IoTDB.schemaProcessor.createTimeseries(
-          path, dataType, encoding, compressionType, Collections.emptyMap());
+      LocalSchemaProcessor.getInstance()
+          .createTimeseries(path, dataType, encoding, compressionType, Collections.emptyMap());
     } catch (PathAlreadyExistException ignored) {
       // ignore added timeseries
     } catch (MetadataException e) {
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/MetadataManagerHelper.java b/server/src/test/java/org/apache/iotdb/db/engine/MetadataManagerHelper.java
index cbd7b1fe7b..630427e3e6 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/MetadataManagerHelper.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/MetadataManagerHelper.java
@@ -19,8 +19,8 @@
 package org.apache.iotdb.db.engine;
 
 import org.apache.iotdb.commons.path.PartialPath;
+import org.apache.iotdb.db.localconfignode.LocalConfigNode;
 import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
@@ -31,8 +31,8 @@ import java.util.Collections;
 public class MetadataManagerHelper {
 
   public static void initMetadata() {
-    IoTDB.configManager.init();
-    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+    LocalConfigNode.getInstance().init();
+    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
     try {
       schemaProcessor.setStorageGroup(new PartialPath("root.vehicle.d0"));
       schemaProcessor.setStorageGroup(new PartialPath("root.vehicle.d1"));
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/cache/ChunkCacheTest.java b/server/src/test/java/org/apache/iotdb/db/engine/cache/ChunkCacheTest.java
index f82c5100e4..28517fe126 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/cache/ChunkCacheTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/cache/ChunkCacheTest.java
@@ -25,8 +25,9 @@ import org.apache.iotdb.db.constant.TestConstant;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResourceStatus;
 import org.apache.iotdb.db.exception.StorageEngineException;
+import org.apache.iotdb.db.localconfignode.LocalConfigNode;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.query.control.FileReaderManager;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
 import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
@@ -83,7 +84,7 @@ public class ChunkCacheTest {
     if (!tempSGDir.exists()) {
       Assert.assertTrue(tempSGDir.mkdirs());
     }
-    IoTDB.configManager.init();
+    LocalConfigNode.getInstance().init();
     prepareSeries();
     prepareFiles(seqFileNum, unseqFileNum);
   }
@@ -95,7 +96,7 @@ public class ChunkCacheTest {
     unseqResources.clear();
     chunkCache.clear();
     TimeSeriesMetadataCache.getInstance().clear();
-    IoTDB.configManager.clear();
+    LocalConfigNode.getInstance().clear();
     EnvironmentUtils.cleanAllDir();
   }
 
@@ -146,16 +147,17 @@ public class ChunkCacheTest {
     for (int i = 0; i < deviceNum; i++) {
       deviceIds[i] = TEST_SG + PATH_SEPARATOR + "device" + i;
     }
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath(TEST_SG));
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath(TEST_SG));
     for (String device : deviceIds) {
       for (MeasurementSchema measurementSchema : measurementSchemas) {
         PartialPath devicePath = new PartialPath(device);
-        IoTDB.schemaProcessor.createTimeseries(
-            devicePath.concatNode(measurementSchema.getMeasurementId()),
-            measurementSchema.getType(),
-            measurementSchema.getEncodingType(),
-            measurementSchema.getCompressor(),
-            Collections.emptyMap());
+        LocalSchemaProcessor.getInstance()
+            .createTimeseries(
+                devicePath.concatNode(measurementSchema.getMeasurementId()),
+                measurementSchema.getType(),
+                measurementSchema.getEncodingType(),
+                measurementSchema.getCompressor(),
+                Collections.emptyMap());
       }
     }
   }
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/TestUtilsForAlignedSeries.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/TestUtilsForAlignedSeries.java
index 10fa0acc7f..88ec47e3e9 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/TestUtilsForAlignedSeries.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/TestUtilsForAlignedSeries.java
@@ -22,7 +22,7 @@ package org.apache.iotdb.db.engine.compaction;
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.service.IoTDB;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
@@ -42,18 +42,19 @@ public class TestUtilsForAlignedSeries {
   public static void registerTimeSeries(
       String storageGroup, String[] devices, IMeasurementSchema[] schemas, boolean[] isAligned)
       throws MetadataException {
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath(storageGroup));
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath(storageGroup));
     for (int i = 0; i < devices.length; ++i) {
       boolean aligned = isAligned[i];
       String device = devices[i];
       if (!aligned) {
         for (IMeasurementSchema schema : schemas) {
-          IoTDB.schemaProcessor.createTimeseries(
-              new PartialPath(device, schema.getMeasurementId()),
-              schema.getType(),
-              schema.getEncodingType(),
-              schema.getCompressor(),
-              new HashMap<>());
+          LocalSchemaProcessor.getInstance()
+              .createTimeseries(
+                  new PartialPath(device, schema.getMeasurementId()),
+                  schema.getType(),
+                  schema.getEncodingType(),
+                  schema.getCompressor(),
+                  new HashMap<>());
         }
       } else {
         TSDataType[] dataTypes = new TSDataType[schemas.length];
@@ -66,12 +67,13 @@ public class TestUtilsForAlignedSeries {
           compressionTypes[j] = schemas[j].getCompressor();
           measurements[j] = schemas[j].getMeasurementId();
         }
-        IoTDB.schemaProcessor.createAlignedTimeSeries(
-            new PartialPath(device),
-            Arrays.asList(measurements),
-            Arrays.asList(dataTypes),
-            Arrays.asList(encodings),
-            Arrays.asList(compressionTypes));
+        LocalSchemaProcessor.getInstance()
+            .createAlignedTimeSeries(
+                new PartialPath(device),
+                Arrays.asList(measurements),
+                Arrays.asList(dataTypes),
+                Arrays.asList(encodings),
+                Arrays.asList(compressionTypes));
       }
     }
   }
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/MergeTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/MergeTest.java
index 07ddb2f3dd..7f6c9cea15 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/MergeTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/cross/MergeTest.java
@@ -28,8 +28,9 @@ import org.apache.iotdb.db.engine.compaction.utils.CompactionConfigRestorer;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResourceStatus;
 import org.apache.iotdb.db.exception.StorageEngineException;
+import org.apache.iotdb.db.localconfignode.LocalConfigNode;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.query.control.FileReaderManager;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
@@ -74,7 +75,7 @@ abstract class MergeTest {
   @Before
   public void setUp() throws IOException, WriteProcessException, MetadataException {
     EnvironmentUtils.envSetUp();
-    IoTDB.configManager.init();
+    LocalConfigNode.getInstance().init();
     prepareSeries();
     prepareFiles(seqFileNum, unseqFileNum);
   }
@@ -87,7 +88,7 @@ abstract class MergeTest {
     unseqResources.clear();
     ChunkCache.getInstance().clear();
     TimeSeriesMetadataCache.getInstance().clear();
-    IoTDB.configManager.clear();
+    LocalConfigNode.getInstance().clear();
     EnvironmentUtils.cleanEnv();
   }
 
@@ -102,16 +103,17 @@ abstract class MergeTest {
     for (int i = 0; i < deviceNum; i++) {
       deviceIds[i] = MERGE_TEST_SG + PATH_SEPARATOR + "device" + i;
     }
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath(MERGE_TEST_SG));
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath(MERGE_TEST_SG));
     for (String device : deviceIds) {
       for (MeasurementSchema measurementSchema : measurementSchemas) {
         PartialPath devicePath = new PartialPath(device);
-        IoTDB.schemaProcessor.createTimeseries(
-            devicePath.concatNode(measurementSchema.getMeasurementId()),
-            measurementSchema.getType(),
-            measurementSchema.getEncodingType(),
-            measurementSchema.getCompressor(),
-            Collections.emptyMap());
+        LocalSchemaProcessor.getInstance()
+            .createTimeseries(
+                devicePath.concatNode(measurementSchema.getMeasurementId()),
+                measurementSchema.getType(),
+                measurementSchema.getEncodingType(),
+                measurementSchema.getCompressor(),
+                Collections.emptyMap());
       }
     }
   }
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/AbstractInnerSpaceCompactionTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/AbstractInnerSpaceCompactionTest.java
index 793e724d23..c359566376 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/AbstractInnerSpaceCompactionTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/AbstractInnerSpaceCompactionTest.java
@@ -31,8 +31,9 @@ import org.apache.iotdb.db.engine.storagegroup.TsFileManager;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResourceStatus;
 import org.apache.iotdb.db.exception.StorageEngineException;
+import org.apache.iotdb.db.localconfignode.LocalConfigNode;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.query.control.FileReaderManager;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
@@ -130,7 +131,7 @@ public abstract class AbstractInnerSpaceCompactionTest {
     }
 
     EnvironmentUtils.envSetUp();
-    IoTDB.configManager.init();
+    LocalConfigNode.getInstance().init();
     prepareSeries();
     prepareFiles(seqFileNum, unseqFileNum);
     tsFileManager = new TsFileManager(COMPACTION_TEST_SG, "0", tempSGDir.getAbsolutePath());
@@ -147,16 +148,17 @@ public abstract class AbstractInnerSpaceCompactionTest {
     for (int i = 0; i < deviceNum; i++) {
       deviceIds[i] = COMPACTION_TEST_SG + PATH_SEPARATOR + "device" + i;
     }
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
     for (String device : deviceIds) {
       for (MeasurementSchema measurementSchema : measurementSchemas) {
         PartialPath devicePath = new PartialPath(device);
-        IoTDB.schemaProcessor.createTimeseries(
-            devicePath.concatNode(measurementSchema.getMeasurementId()),
-            measurementSchema.getType(),
-            measurementSchema.getEncodingType(),
-            measurementSchema.getCompressor(),
-            Collections.emptyMap());
+        LocalSchemaProcessor.getInstance()
+            .createTimeseries(
+                devicePath.concatNode(measurementSchema.getMeasurementId()),
+                measurementSchema.getType(),
+                measurementSchema.getEncodingType(),
+                measurementSchema.getCompressor(),
+                Collections.emptyMap());
       }
     }
   }
@@ -239,7 +241,7 @@ public abstract class AbstractInnerSpaceCompactionTest {
     unseqResources.clear();
     ChunkCache.getInstance().clear();
     TimeSeriesMetadataCache.getInstance().clear();
-    IoTDB.configManager.clear();
+    LocalConfigNode.getInstance().clear();
     EnvironmentUtils.cleanEnv();
     if (tempSGDir.exists()) {
       FileUtils.deleteDirectory(tempSGDir);
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/FastCompactionPerformerAlignedTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/FastCompactionPerformerAlignedTest.java
index d056fc7315..2a280ae4f7 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/FastCompactionPerformerAlignedTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/FastCompactionPerformerAlignedTest.java
@@ -34,7 +34,7 @@ import org.apache.iotdb.db.engine.compaction.utils.CompactionCheckerUtils;
 import org.apache.iotdb.db.engine.compaction.utils.CompactionConfigRestorer;
 import org.apache.iotdb.db.engine.compaction.utils.CompactionFileGeneratorUtils;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.service.IoTDB;
+import org.apache.iotdb.db.localconfignode.LocalConfigNode;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.read.TimeValuePair;
@@ -74,7 +74,7 @@ public class FastCompactionPerformerAlignedTest {
     if (!dataDirectory.exists()) {
       Assert.assertTrue(dataDirectory.mkdirs());
     }
-    IoTDB.configManager.init();
+    LocalConfigNode.getInstance().init();
     CompactionTaskManager.getInstance().start();
   }
 
@@ -82,7 +82,7 @@ public class FastCompactionPerformerAlignedTest {
   public void tearDown() throws Exception {
     new CompactionConfigRestorer().restoreCompactionConfig();
     FileUtils.forceDelete(dataDirectory);
-    IoTDB.configManager.clear();
+    LocalConfigNode.getInstance().clear();
     ChunkCache.getInstance().clear();
     TimeSeriesMetadataCache.getInstance().clear();
     CompactionTaskManager.getInstance().stop();
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerSeqCompactionWithFastPerformerTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerSeqCompactionWithFastPerformerTest.java
index 0106856366..c0caba2c12 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerSeqCompactionWithFastPerformerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerSeqCompactionWithFastPerformerTest.java
@@ -40,7 +40,8 @@ import org.apache.iotdb.db.engine.storagegroup.TsFileNameGenerator;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.exception.DataRegionException;
 import org.apache.iotdb.db.exception.StorageEngineException;
-import org.apache.iotdb.db.service.IoTDB;
+import org.apache.iotdb.db.localconfignode.LocalConfigNode;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
 import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
@@ -99,16 +100,17 @@ public class InnerSeqCompactionWithFastPerformerTest {
     prevMaxDegreeOfIndexNode = TSFileDescriptor.getInstance().getConfig().getMaxDegreeOfIndexNode();
     TSFileDescriptor.getInstance().getConfig().setMaxDegreeOfIndexNode(2);
     EnvironmentUtils.envSetUp();
-    IoTDB.configManager.init();
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
+    LocalConfigNode.getInstance().init();
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
     for (String fullPath : fullPaths) {
       PartialPath path = new PartialPath(fullPath);
-      IoTDB.schemaProcessor.createTimeseries(
-          path,
-          TSDataType.INT64,
-          TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
-          TSFileDescriptor.getInstance().getConfig().getCompressor(),
-          Collections.emptyMap());
+      LocalSchemaProcessor.getInstance()
+          .createTimeseries(
+              path,
+              TSDataType.INT64,
+              TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
+              TSFileDescriptor.getInstance().getConfig().getCompressor(),
+              Collections.emptyMap());
     }
   }
 
@@ -118,7 +120,7 @@ public class InnerSeqCompactionWithFastPerformerTest {
     CompactionClearUtils.clearAllCompactionFiles();
     ChunkCache.getInstance().clear();
     TimeSeriesMetadataCache.getInstance().clear();
-    IoTDB.configManager.clear();
+    LocalConfigNode.getInstance().clear();
     EnvironmentUtils.cleanEnv();
     EnvironmentUtils.cleanAllDir();
     TSFileDescriptor.getInstance().getConfig().setMaxDegreeOfIndexNode(prevMaxDegreeOfIndexNode);
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerSeqCompactionWithReadChunkPerformerTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerSeqCompactionWithReadChunkPerformerTest.java
index d84cf39103..66b15be38d 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerSeqCompactionWithReadChunkPerformerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerSeqCompactionWithReadChunkPerformerTest.java
@@ -40,7 +40,8 @@ import org.apache.iotdb.db.engine.storagegroup.TsFileNameGenerator;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.exception.DataRegionException;
 import org.apache.iotdb.db.exception.StorageEngineException;
-import org.apache.iotdb.db.service.IoTDB;
+import org.apache.iotdb.db.localconfignode.LocalConfigNode;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
@@ -98,16 +99,17 @@ public class InnerSeqCompactionWithReadChunkPerformerTest {
     prevMaxDegreeOfIndexNode = TSFileDescriptor.getInstance().getConfig().getMaxDegreeOfIndexNode();
     TSFileDescriptor.getInstance().getConfig().setMaxDegreeOfIndexNode(2);
     EnvironmentUtils.envSetUp();
-    IoTDB.configManager.init();
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
+    LocalConfigNode.getInstance().init();
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
     for (String fullPath : fullPaths) {
       PartialPath path = new PartialPath(fullPath);
-      IoTDB.schemaProcessor.createTimeseries(
-          path,
-          TSDataType.INT64,
-          TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
-          TSFileDescriptor.getInstance().getConfig().getCompressor(),
-          Collections.emptyMap());
+      LocalSchemaProcessor.getInstance()
+          .createTimeseries(
+              path,
+              TSDataType.INT64,
+              TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
+              TSFileDescriptor.getInstance().getConfig().getCompressor(),
+              Collections.emptyMap());
     }
   }
 
@@ -117,7 +119,7 @@ public class InnerSeqCompactionWithReadChunkPerformerTest {
     CompactionClearUtils.clearAllCompactionFiles();
     ChunkCache.getInstance().clear();
     TimeSeriesMetadataCache.getInstance().clear();
-    IoTDB.configManager.clear();
+    LocalConfigNode.getInstance().clear();
     EnvironmentUtils.cleanEnv();
     EnvironmentUtils.cleanAllDir();
     TSFileDescriptor.getInstance().getConfig().setMaxDegreeOfIndexNode(prevMaxDegreeOfIndexNode);
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerUnseqCompactionWithFastPerformerTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerUnseqCompactionWithFastPerformerTest.java
index 56250dba96..1a14edecfb 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerUnseqCompactionWithFastPerformerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerUnseqCompactionWithFastPerformerTest.java
@@ -35,7 +35,8 @@ import org.apache.iotdb.db.engine.compaction.utils.CompactionOverlapType;
 import org.apache.iotdb.db.engine.compaction.utils.CompactionTimeseriesType;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.exception.StorageEngineException;
-import org.apache.iotdb.db.service.IoTDB;
+import org.apache.iotdb.db.localconfignode.LocalConfigNode;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
@@ -103,16 +104,17 @@ public class InnerUnseqCompactionWithFastPerformerTest {
 
   @Before
   public void setUp() throws MetadataException {
-    IoTDB.configManager.init();
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
+    LocalConfigNode.getInstance().init();
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
     for (String fullPath : fullPaths) {
       PartialPath path = new PartialPath(fullPath);
-      IoTDB.schemaProcessor.createTimeseries(
-          path,
-          TSDataType.INT64,
-          TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
-          TSFileDescriptor.getInstance().getConfig().getCompressor(),
-          Collections.emptyMap());
+      LocalSchemaProcessor.getInstance()
+          .createTimeseries(
+              path,
+              TSDataType.INT64,
+              TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
+              TSFileDescriptor.getInstance().getConfig().getCompressor(),
+              Collections.emptyMap());
     }
     Thread.currentThread().setName("pool-1-IoTDB-Compaction-1");
     EnvironmentUtils.envSetUp();
@@ -125,7 +127,7 @@ public class InnerUnseqCompactionWithFastPerformerTest {
     CompactionClearUtils.clearAllCompactionFiles();
     ChunkCache.getInstance().clear();
     TimeSeriesMetadataCache.getInstance().clear();
-    IoTDB.configManager.clear();
+    LocalConfigNode.getInstance().clear();
     EnvironmentUtils.cleanAllDir();
     Thread.currentThread().setName(oldThreadName);
     CompactionClearUtils.deleteEmptyDir(new File("target"));
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerUnseqCompactionWithReadPointPerformerTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerUnseqCompactionWithReadPointPerformerTest.java
index 53a0ad89f1..8994abf35c 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerUnseqCompactionWithReadPointPerformerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/InnerUnseqCompactionWithReadPointPerformerTest.java
@@ -35,7 +35,8 @@ import org.apache.iotdb.db.engine.compaction.utils.CompactionOverlapType;
 import org.apache.iotdb.db.engine.compaction.utils.CompactionTimeseriesType;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.exception.StorageEngineException;
-import org.apache.iotdb.db.service.IoTDB;
+import org.apache.iotdb.db.localconfignode.LocalConfigNode;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
@@ -103,16 +104,17 @@ public class InnerUnseqCompactionWithReadPointPerformerTest {
 
   @Before
   public void setUp() throws MetadataException {
-    IoTDB.configManager.init();
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
+    LocalConfigNode.getInstance().init();
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
     for (String fullPath : fullPaths) {
       PartialPath path = new PartialPath(fullPath);
-      IoTDB.schemaProcessor.createTimeseries(
-          path,
-          TSDataType.INT64,
-          TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
-          TSFileDescriptor.getInstance().getConfig().getCompressor(),
-          Collections.emptyMap());
+      LocalSchemaProcessor.getInstance()
+          .createTimeseries(
+              path,
+              TSDataType.INT64,
+              TSEncoding.valueOf(TSFileDescriptor.getInstance().getConfig().getValueEncoder()),
+              TSFileDescriptor.getInstance().getConfig().getCompressor(),
+              Collections.emptyMap());
     }
     Thread.currentThread().setName("pool-1-IoTDB-Compaction-1");
     EnvironmentUtils.envSetUp();
@@ -125,7 +127,7 @@ public class InnerUnseqCompactionWithReadPointPerformerTest {
     CompactionClearUtils.clearAllCompactionFiles();
     ChunkCache.getInstance().clear();
     TimeSeriesMetadataCache.getInstance().clear();
-    IoTDB.configManager.clear();
+    LocalConfigNode.getInstance().clear();
     EnvironmentUtils.cleanAllDir();
     Thread.currentThread().setName(oldThreadName);
     CompactionClearUtils.deleteEmptyDir(new File("target"));
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/ReadChunkCompactionPerformerAlignedTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/ReadChunkCompactionPerformerAlignedTest.java
index 902ccaf43f..9d02179080 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/ReadChunkCompactionPerformerAlignedTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/ReadChunkCompactionPerformerAlignedTest.java
@@ -33,7 +33,7 @@ import org.apache.iotdb.db.engine.compaction.utils.CompactionCheckerUtils;
 import org.apache.iotdb.db.engine.compaction.utils.CompactionConfigRestorer;
 import org.apache.iotdb.db.engine.compaction.utils.CompactionFileGeneratorUtils;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
-import org.apache.iotdb.db.service.IoTDB;
+import org.apache.iotdb.db.localconfignode.LocalConfigNode;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.read.TimeValuePair;
@@ -73,14 +73,14 @@ public class ReadChunkCompactionPerformerAlignedTest {
     if (!dataDirectory.exists()) {
       Assert.assertTrue(dataDirectory.mkdirs());
     }
-    IoTDB.configManager.init();
+    LocalConfigNode.getInstance().init();
   }
 
   @After
   public void tearDown() throws Exception {
     new CompactionConfigRestorer().restoreCompactionConfig();
     FileUtils.forceDelete(dataDirectory);
-    IoTDB.configManager.clear();
+    LocalConfigNode.getInstance().clear();
     ChunkCache.getInstance().clear();
     TimeSeriesMetadataCache.getInstance().clear();
     EnvironmentUtils.cleanEnv();
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/sizetiered/SizeTieredCompactionTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/sizetiered/SizeTieredCompactionTest.java
index 736ecd51cd..bd7a1fcc64 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/sizetiered/SizeTieredCompactionTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/inner/sizetiered/SizeTieredCompactionTest.java
@@ -29,8 +29,9 @@ import org.apache.iotdb.db.engine.compaction.utils.CompactionConfigRestorer;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResourceStatus;
 import org.apache.iotdb.db.exception.StorageEngineException;
+import org.apache.iotdb.db.localconfignode.LocalConfigNode;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.query.control.FileReaderManager;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
@@ -74,7 +75,7 @@ public class SizeTieredCompactionTest {
   @Before
   public void setUp() throws IOException, WriteProcessException, MetadataException {
     EnvironmentUtils.envSetUp();
-    IoTDB.configManager.init();
+    LocalConfigNode.getInstance().init();
     prepareSeries();
     prepareFiles(seqFileNum, unseqFileNum);
   }
@@ -87,7 +88,7 @@ public class SizeTieredCompactionTest {
     unseqResources.clear();
     ChunkCache.getInstance().clear();
     TimeSeriesMetadataCache.getInstance().clear();
-    IoTDB.configManager.clear();
+    LocalConfigNode.getInstance().clear();
     EnvironmentUtils.cleanEnv();
   }
 
@@ -102,16 +103,17 @@ public class SizeTieredCompactionTest {
     for (int i = 0; i < deviceNum; i++) {
       deviceIds[i] = COMPACTION_TEST_SG + PATH_SEPARATOR + "device" + i;
     }
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
     for (String device : deviceIds) {
       for (MeasurementSchema measurementSchema : measurementSchemas) {
         PartialPath devicePath = new PartialPath(device);
-        IoTDB.schemaProcessor.createTimeseries(
-            devicePath.concatNode(measurementSchema.getMeasurementId()),
-            measurementSchema.getType(),
-            measurementSchema.getEncodingType(),
-            measurementSchema.getCompressor(),
-            Collections.emptyMap());
+        LocalSchemaProcessor.getInstance()
+            .createTimeseries(
+                devicePath.concatNode(measurementSchema.getMeasurementId()),
+                measurementSchema.getType(),
+                measurementSchema.getEncodingType(),
+                measurementSchema.getCompressor(),
+                Collections.emptyMap());
       }
     }
   }
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/compaction/recover/SizeTieredCompactionRecoverTest.java b/server/src/test/java/org/apache/iotdb/db/engine/compaction/recover/SizeTieredCompactionRecoverTest.java
index 4da80636e1..a6a68f9e8b 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/compaction/recover/SizeTieredCompactionRecoverTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/compaction/recover/SizeTieredCompactionRecoverTest.java
@@ -40,7 +40,8 @@ import org.apache.iotdb.db.engine.storagegroup.TsFileManager;
 import org.apache.iotdb.db.engine.storagegroup.TsFileNameGenerator;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.exception.DataRegionException;
-import org.apache.iotdb.db.service.IoTDB;
+import org.apache.iotdb.db.localconfignode.LocalConfigNode;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
@@ -126,7 +127,7 @@ public class SizeTieredCompactionRecoverTest {
 
   @Before
   public void setUp() throws Exception {
-    IoTDB.configManager.init();
+    LocalConfigNode.getInstance().init();
     CompactionTaskManager.getInstance().start();
     originDataDirs = config.getDataDirs();
     setDataDirs(testDataDirs);
@@ -144,7 +145,7 @@ public class SizeTieredCompactionRecoverTest {
     new CompactionConfigRestorer().restoreCompactionConfig();
     CompactionTaskManager.getInstance().stop();
     setDataDirs(originDataDirs);
-    IoTDB.configManager.clear();
+    LocalConfigNode.getInstance().clear();
     File dataDir = new File(testDataDirs[0]);
     if (dataDir.exists()) {
       FileUtils.forceDelete(dataDir);
@@ -167,16 +168,17 @@ public class SizeTieredCompactionRecoverTest {
               CompressionType.UNCOMPRESSED);
       deviceIds[i] = new PartialPath(fullPaths[i].substring(0, 27));
     }
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath(COMPACTION_TEST_SG));
     for (int i = 0; i < fullPaths.length; ++i) {
       MeasurementSchema schema = schemas[i];
       PartialPath deviceId = deviceIds[i];
-      IoTDB.schemaProcessor.createTimeseries(
-          deviceId.concatNode(schema.getMeasurementId()),
-          schema.getType(),
-          schema.getEncodingType(),
-          schema.getCompressor(),
-          Collections.emptyMap());
+      LocalSchemaProcessor.getInstance()
+          .createTimeseries(
+              deviceId.concatNode(schema.getMeasurementId()),
+              schema.getType(),
+              schema.getEncodingType(),
+              schema.getCompressor(),
+              Collections.emptyMap());
     }
   }
 
diff --git a/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/TTLTest.java b/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/TTLTest.java
index f4013023dc..9ecc8e4bd9 100644
--- a/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/TTLTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/engine/storagegroup/TTLTest.java
@@ -35,6 +35,7 @@ import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.WriteProcessException;
 import org.apache.iotdb.db.exception.query.OutOfTTLException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.metadata.mnode.IStorageGroupMNode;
 import org.apache.iotdb.db.mpp.plan.parser.StatementGenerator;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
@@ -43,7 +44,6 @@ import org.apache.iotdb.db.mpp.plan.statement.metadata.SetTTLStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.ShowTTLStatement;
 import org.apache.iotdb.db.mpp.plan.statement.metadata.UnSetTTLStatement;
 import org.apache.iotdb.db.query.reader.series.SeriesRawDataBatchReader;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.utils.SchemaTestUtils;
 import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
@@ -99,20 +99,21 @@ public class TTLTest {
   }
 
   private void createSchemas() throws MetadataException, DataRegionException {
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath(sg1));
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath(sg2));
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath(sg1));
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath(sg2));
     dataRegion =
         new DataRegion(
             IoTDBDescriptor.getInstance().getConfig().getSystemDir(),
             String.valueOf(dataRegionId1.getId()),
             new DirectFlushPolicy(),
             sg1);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath(g1s1),
-        TSDataType.INT64,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        Collections.emptyMap());
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath(g1s1),
+            TSDataType.INT64,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            Collections.emptyMap());
   }
 
   @Test
@@ -121,20 +122,20 @@ public class TTLTest {
     boolean caught = false;
 
     try {
-      IoTDB.schemaProcessor.setTTL(new PartialPath(sg1 + ".notExist"), ttl);
+      LocalSchemaProcessor.getInstance().setTTL(new PartialPath(sg1 + ".notExist"), ttl);
     } catch (MetadataException e) {
       caught = true;
     }
     assertTrue(caught);
 
     // normally set ttl
-    IoTDB.schemaProcessor.setTTL(new PartialPath(sg1), ttl);
+    LocalSchemaProcessor.getInstance().setTTL(new PartialPath(sg1), ttl);
     IStorageGroupMNode mNode =
-        IoTDB.schemaProcessor.getStorageGroupNodeByPath(new PartialPath(sg1));
+        LocalSchemaProcessor.getInstance().getStorageGroupNodeByPath(new PartialPath(sg1));
     assertEquals(ttl, mNode.getDataTTL());
 
     // default ttl
-    mNode = IoTDB.schemaProcessor.getStorageGroupNodeByPath(new PartialPath(sg2));
+    mNode = LocalSchemaProcessor.getInstance().getStorageGroupNodeByPath(new PartialPath(sg2));
     assertEquals(Long.MAX_VALUE, mNode.getDataTTL());
   }
 
diff --git a/server/src/test/java/org/apache/iotdb/db/localconfignode/LocalConfigNodeMultiDataRegionTest.java b/server/src/test/java/org/apache/iotdb/db/localconfignode/LocalConfigNodeMultiDataRegionTest.java
index b17c65ebfa..02dd805a7a 100644
--- a/server/src/test/java/org/apache/iotdb/db/localconfignode/LocalConfigNodeMultiDataRegionTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/localconfignode/LocalConfigNodeMultiDataRegionTest.java
@@ -23,7 +23,7 @@ import org.apache.iotdb.commons.consensus.DataRegionId;
 import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
-import org.apache.iotdb.db.service.IoTDB;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 
 import org.junit.After;
@@ -43,7 +43,7 @@ public class LocalConfigNodeMultiDataRegionTest {
     originDataRegionNum = IoTDBDescriptor.getInstance().getConfig().getDataRegionNum();
     isClusterMode = IoTDBDescriptor.getInstance().getConfig().isClusterMode();
     IoTDBDescriptor.getInstance().getConfig().setClusterMode(false);
-    IoTDB.configManager.init();
+    LocalConfigNode.getInstance().init();
     EnvironmentUtils.envSetUp();
     LocalDataPartitionInfo.getInstance().init(Collections.EMPTY_MAP);
   }
@@ -58,7 +58,7 @@ public class LocalConfigNodeMultiDataRegionTest {
   @Test
   public void createMultiDataRegionTest() throws Exception {
     IoTDBDescriptor.getInstance().getConfig().setDataRegionNum(3);
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath("root.test"));
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath("root.test"));
     LocalConfigNode configNode = LocalConfigNode.getInstance();
     LocalDataPartitionInfo info = LocalDataPartitionInfo.getInstance();
     info.registerStorageGroup(new PartialPath("root.test"));
@@ -73,7 +73,7 @@ public class LocalConfigNodeMultiDataRegionTest {
   @Test
   public void recoverMultiDataRegionTest() throws Exception {
     IoTDBDescriptor.getInstance().getConfig().setDataRegionNum(3);
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath("root.test"));
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath("root.test"));
     LocalConfigNode configNode = LocalConfigNode.getInstance();
     LocalDataPartitionInfo info = LocalDataPartitionInfo.getInstance();
     info.registerStorageGroup(new PartialPath("root.test"));
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/SchemaAdvancedTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/SchemaAdvancedTest.java
index 230ad8fd09..2199aa6221 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/SchemaAdvancedTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/SchemaAdvancedTest.java
@@ -22,7 +22,6 @@ import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.MeasurementPath;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.metadata.mnode.IMNode;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
@@ -46,7 +45,7 @@ public class SchemaAdvancedTest {
   @Before
   public void setUp() throws Exception {
     EnvironmentUtils.envSetUp();
-    schemaProcessor = IoTDB.schemaProcessor;
+    schemaProcessor = LocalSchemaProcessor.getInstance();
 
     schemaProcessor.setStorageGroup(new PartialPath("root.vehicle.d0"));
     schemaProcessor.setStorageGroup(new PartialPath("root.vehicle.d1"));
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/SchemaBasicTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/SchemaBasicTest.java
index b1ef35b409..b8082f480e 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/SchemaBasicTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/SchemaBasicTest.java
@@ -33,7 +33,6 @@ import org.apache.iotdb.db.qp.physical.sys.ShowTimeSeriesPlan;
 import org.apache.iotdb.db.query.context.QueryContext;
 import org.apache.iotdb.db.query.dataset.ShowResult;
 import org.apache.iotdb.db.query.dataset.ShowTimeSeriesResult;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
@@ -85,7 +84,7 @@ public abstract class SchemaBasicTest {
 
   @Test
   public void testAddPathAndExist() throws IllegalPathException {
-    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
     assertTrue(schemaProcessor.isPathExist(new PartialPath("root")));
 
     assertFalse(schemaProcessor.isPathExist(new PartialPath("root.laptop")));
@@ -256,7 +255,7 @@ public abstract class SchemaBasicTest {
    */
   @Test
   public void testDeleteNonExistentTimeseries() {
-    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
     try {
       schemaProcessor.deleteTimeseries(new PartialPath("root.non.existent"));
       fail();
@@ -271,7 +270,7 @@ public abstract class SchemaBasicTest {
   @SuppressWarnings("squid:S3776") // Suppress high Cognitive Complexity warning
   @Test
   public void testCreateAlignedTimeseries() throws MetadataException {
-    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
     try {
       schemaProcessor.setStorageGroup(new PartialPath("root.laptop"));
     } catch (MetadataException e) {
@@ -352,7 +351,7 @@ public abstract class SchemaBasicTest {
   @Test
   @SuppressWarnings("squid:S5783")
   public void testGetAllTimeseriesCount() {
-    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
 
     try {
       schemaProcessor.setStorageGroup(new PartialPath("root.laptop"));
@@ -416,7 +415,7 @@ public abstract class SchemaBasicTest {
   @Test
   public void testSetStorageGroupAndExist() {
 
-    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
 
     try {
       assertFalse(schemaProcessor.isStorageGroup(new PartialPath("root")));
@@ -442,7 +441,7 @@ public abstract class SchemaBasicTest {
   @Test
   public void testRecover() throws Exception {
 
-    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
 
     try {
 
@@ -514,7 +513,7 @@ public abstract class SchemaBasicTest {
   @Test
   public void testGetAllFileNamesByPath() {
 
-    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
     try {
       schemaProcessor.setStorageGroup(new PartialPath("root.laptop.d1"));
       schemaProcessor.setStorageGroup(new PartialPath("root.laptop.d2"));
@@ -551,7 +550,7 @@ public abstract class SchemaBasicTest {
 
   @Test
   public void testCheckStorageExistOfPath() {
-    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
 
     try {
       assertTrue(schemaProcessor.getMeasurementPaths(new PartialPath("root")).isEmpty());
@@ -610,7 +609,7 @@ public abstract class SchemaBasicTest {
 
   @Test
   public void testShowChildNodesWithGivenPrefix() {
-    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
     try {
       schemaProcessor.setStorageGroup(new PartialPath("root.laptop"));
       schemaProcessor.createTimeseries(
@@ -686,7 +685,7 @@ public abstract class SchemaBasicTest {
 
   @Test
   public void testGetDevicesWithGivenPrefix() {
-    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
 
     try {
       schemaProcessor.setStorageGroup(new PartialPath("root.laptop"));
@@ -733,7 +732,7 @@ public abstract class SchemaBasicTest {
 
   @Test
   public void testGetChildNodePathInNextLevel() {
-    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
     String[] res =
         new String[] {
           "[TSchemaNode(nodeName:root.laptop, nodeType:2), TSchemaNode(nodeName:root.vehicle, nodeType:2)]",
@@ -922,7 +921,7 @@ public abstract class SchemaBasicTest {
 
   @Test
   public void testShowTimeseries() {
-    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
     try {
       schemaProcessor.createTimeseries(
           new PartialPath("root.laptop.d1.s0"),
@@ -947,7 +946,7 @@ public abstract class SchemaBasicTest {
 
   @Test
   public void testTotalSeriesNumber() throws Exception {
-    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
 
     try {
       schemaProcessor.setStorageGroup(new PartialPath("root.laptop"));
@@ -1004,7 +1003,7 @@ public abstract class SchemaBasicTest {
 
   @Test
   public void testStorageGroupNameWithHyphen() throws IllegalPathException {
-    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
     assertTrue(schemaProcessor.isPathExist(new PartialPath("root")));
 
     assertFalse(schemaProcessor.isPathExist(new PartialPath("root.group_with_hyphen")));
@@ -1021,7 +1020,7 @@ public abstract class SchemaBasicTest {
 
   @Test
   public void testCreateTimeseriesAndInsertWithAlignedData() {
-    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
     try {
       schemaProcessor.setStorageGroup(new PartialPath("root.laptop"));
       schemaProcessor.createTimeseries(
@@ -1061,7 +1060,7 @@ public abstract class SchemaBasicTest {
 
   @Test
   public void testCreateAlignedTimeseriesWithIllegalNames() throws Exception {
-    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
     schemaProcessor.setStorageGroup(new PartialPath("root.laptop"));
     PartialPath deviceId = new PartialPath("root.laptop.d1");
     String[] measurementIds = {"time", "timestamp", "TIME", "TIMESTAMP"};
@@ -1110,7 +1109,7 @@ public abstract class SchemaBasicTest {
 
   @Test
   public void testCreateAlignedTimeseriesWithAliasAndTags() throws Exception {
-    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
     schemaProcessor.setStorageGroup(new PartialPath("root.laptop"));
     PartialPath devicePath = new PartialPath("root.laptop.device0");
     List<String> measurements = Arrays.asList("s1", "s2", "s3", "s4", "s5");
@@ -1180,7 +1179,7 @@ public abstract class SchemaBasicTest {
 
   @Test
   public void testGetStorageGroupNodeByPath() {
-    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
     PartialPath partialPath = null;
 
     try {
@@ -1237,7 +1236,7 @@ public abstract class SchemaBasicTest {
 
   @Test
   public void testTagIndexRecovery() throws Exception {
-    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
     PartialPath path = new PartialPath("root.sg.d.s");
     Map<String, String> tags = new HashMap<>();
     tags.put("description", "oldValue");
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/SchemaImproveTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/SchemaImproveTest.java
index e68ce62fee..f3f19ff2ba 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/SchemaImproveTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/SchemaImproveTest.java
@@ -23,7 +23,6 @@ import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.metadata.mnode.IMNode;
 import org.apache.iotdb.db.metadata.mnode.IMeasurementMNode;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
 import org.apache.iotdb.tsfile.common.constant.TsFileConstant;
@@ -55,7 +54,7 @@ public class SchemaImproveTest {
   @Before
   public void setUp() throws Exception {
     EnvironmentUtils.envSetUp();
-    schemaProcessor = IoTDB.schemaProcessor;
+    schemaProcessor = LocalSchemaProcessor.getInstance();
     schemaProcessor.setStorageGroup(new PartialPath("root.t1.v2"));
 
     for (int j = 0; j < DEVICE_NUM; j++) {
@@ -73,7 +72,7 @@ public class SchemaImproveTest {
 
   @Test
   public void checkSetUp() throws IllegalPathException {
-    schemaProcessor = IoTDB.schemaProcessor;
+    schemaProcessor = LocalSchemaProcessor.getInstance();
 
     assertTrue(schemaProcessor.isPathExist(new PartialPath("root.t1.v2.d3.s5")));
     assertFalse(schemaProcessor.isPathExist(new PartialPath("root.t1.v2.d9.s" + TIMESERIES_NUM)));
@@ -82,7 +81,7 @@ public class SchemaImproveTest {
 
   @Test
   public void analyseTimeCost() throws MetadataException {
-    schemaProcessor = IoTDB.schemaProcessor;
+    schemaProcessor = LocalSchemaProcessor.getInstance();
 
     long string_combine, path_exist, list_init, check_filelevel, get_seriestype;
     string_combine = path_exist = list_init = check_filelevel = get_seriestype = 0;
@@ -148,7 +147,7 @@ public class SchemaImproveTest {
 
   @Test
   public void improveTest() throws MetadataException {
-    schemaProcessor = IoTDB.schemaProcessor;
+    schemaProcessor = LocalSchemaProcessor.getInstance();
 
     String[] deviceIdList = new String[DEVICE_NUM];
     for (int i = 0; i < DEVICE_NUM; i++) {
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableTest.java
index 2db3ce5a97..33ef4d1066 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/idtable/IDTableTest.java
@@ -101,7 +101,7 @@ package org.apache.iotdb.db.metadata.idtable;
 //
 //  @Test
 //  public void testCreateAlignedTimeseriesAndInsert() {
-//    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+//    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
 //
 //    try {
 //      schemaProcessor.setStorageGroup(new PartialPath("root.laptop"));
@@ -184,7 +184,7 @@ package org.apache.iotdb.db.metadata.idtable;
 //
 //  @Test
 //  public void testCreateAlignedTimeseriesAndInsertNotAlignedData() {
-//    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+//    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
 //
 //    try {
 //      schemaProcessor.setStorageGroup(new PartialPath("root.laptop"));
@@ -251,7 +251,7 @@ package org.apache.iotdb.db.metadata.idtable;
 //
 //  @Test
 //  public void testCreateTimeseriesAndInsert() {
-//    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+//    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
 //    try {
 //      schemaProcessor.setStorageGroup(new PartialPath("root.laptop"));
 //      schemaProcessor.createTimeseries(
@@ -307,7 +307,7 @@ package org.apache.iotdb.db.metadata.idtable;
 //
 //  @Test
 //  public void testCreateTimeseriesAndInsertWithAlignedData() {
-//    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+//    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
 //    try {
 //      schemaProcessor.setStorageGroup(new PartialPath("root.laptop"));
 //      schemaProcessor.createTimeseries(
@@ -361,7 +361,7 @@ package org.apache.iotdb.db.metadata.idtable;
 //
 //  @Test
 //  public void testInsertAndAutoCreate() {
-//    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+//    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
 //    try {
 //      // construct an insertRowPlan with mismatched data type
 //      long time = 1L;
@@ -449,7 +449,7 @@ package org.apache.iotdb.db.metadata.idtable;
 //
 //  @Test
 //  public void testAlignedInsertAndAutoCreate() {
-//    LocalSchemaProcessor processor = IoTDB.schemaProcessor;
+//    LocalSchemaProcessor processor = LocalSchemaProcessor.getInstance();
 //    try {
 //      // construct an insertRowPlan with mismatched data type
 //      long time = 1L;
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/mtree/disk/MemManagerTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/mtree/disk/MemManagerTest.java
index e76000e984..08842049ab 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/mtree/disk/MemManagerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/mtree/disk/MemManagerTest.java
@@ -32,7 +32,6 @@ import org.apache.iotdb.db.metadata.mtree.store.disk.memcontrol.IMemManager;
 import org.apache.iotdb.db.metadata.mtree.store.disk.memcontrol.MemManagerHolder;
 import org.apache.iotdb.db.metadata.rescon.MemoryStatistics;
 import org.apache.iotdb.db.metadata.schemaregion.SchemaEngineMode;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
@@ -70,7 +69,7 @@ public class MemManagerTest {
 
   @Test
   public void testNodeEstimatedSizeBasedMemControl() throws Exception {
-    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
     schemaProcessor.createTimeseries(
         new PartialPath("root.laptop.d1.s1"),
         TSDataType.valueOf("INT32"),
diff --git a/server/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionBasicTest.java b/server/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionBasicTest.java
index 9135a5fdb9..4adadfed9b 100644
--- a/server/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionBasicTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/metadata/schemaRegion/SchemaRegionBasicTest.java
@@ -30,6 +30,7 @@ import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.exception.metadata.AliasAlreadyExistException;
 import org.apache.iotdb.db.exception.metadata.MeasurementAlreadyExistException;
 import org.apache.iotdb.db.exception.metadata.PathAlreadyExistException;
+import org.apache.iotdb.db.localconfignode.LocalConfigNode;
 import org.apache.iotdb.db.metadata.MetadataConstant;
 import org.apache.iotdb.db.metadata.plan.schemaregion.impl.ActivateTemplateInClusterPlanImpl;
 import org.apache.iotdb.db.metadata.plan.schemaregion.impl.CreateTimeSeriesPlanImpl;
@@ -43,7 +44,6 @@ import org.apache.iotdb.db.mpp.plan.statement.metadata.template.CreateSchemaTemp
 import org.apache.iotdb.db.qp.physical.sys.CreateTimeSeriesPlan;
 import org.apache.iotdb.db.qp.physical.sys.ShowTimeSeriesPlan;
 import org.apache.iotdb.db.query.dataset.ShowTimeSeriesResult;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
@@ -82,7 +82,7 @@ public abstract class SchemaRegionBasicTest {
   public void setUp() {
     isClusterMode = config.isClusterMode();
     config.setClusterMode(true);
-    IoTDB.configManager.init();
+    LocalConfigNode.getInstance().init();
   }
 
   @After
@@ -141,8 +141,8 @@ public abstract class SchemaRegionBasicTest {
       Assert.assertEquals(1, resultTagMap.size());
       Assert.assertEquals("tag-value", resultTagMap.get("tag-key"));
 
-      IoTDB.configManager.clear();
-      IoTDB.configManager.init();
+      LocalConfigNode.getInstance().clear();
+      LocalConfigNode.getInstance().init();
       SchemaEngine.getInstance().createSchemaRegion(storageGroup, schemaRegionId);
       ISchemaRegion newSchemaRegion = SchemaEngine.getInstance().getSchemaRegion(schemaRegionId);
       newSchemaRegion.loadSnapshot(snapshotDir);
diff --git a/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/AlignedSeriesTestUtil.java b/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/AlignedSeriesTestUtil.java
index 681e818223..36d748b337 100644
--- a/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/AlignedSeriesTestUtil.java
+++ b/server/src/test/java/org/apache/iotdb/db/mpp/execution/operator/AlignedSeriesTestUtil.java
@@ -25,8 +25,9 @@ import org.apache.iotdb.db.engine.cache.ChunkCache;
 import org.apache.iotdb.db.engine.cache.TimeSeriesMetadataCache;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResourceStatus;
+import org.apache.iotdb.db.localconfignode.LocalConfigNode;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.query.control.FileReaderManager;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
@@ -66,7 +67,7 @@ public class AlignedSeriesTestUtil {
       List<TsFileResource> unseqResources,
       String sgName)
       throws MetadataException, IOException, WriteProcessException {
-    IoTDB.configManager.init();
+    LocalConfigNode.getInstance().init();
     prepareSeries(measurementSchemas, sgName);
     prepareFiles(seqResources, unseqResources, measurementSchemas, sgName);
   }
@@ -78,7 +79,7 @@ public class AlignedSeriesTestUtil {
     unseqResources.clear();
     ChunkCache.getInstance().clear();
     TimeSeriesMetadataCache.getInstance().clear();
-    IoTDB.configManager.clear();
+    LocalConfigNode.getInstance().clear();
     EnvironmentUtils.cleanAllDir();
   }
 
@@ -206,43 +207,50 @@ public class AlignedSeriesTestUtil {
         new MeasurementSchema(
             "sensor5", TSDataType.TEXT, TSEncoding.PLAIN, CompressionType.SNAPPY));
 
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath(sgName));
-    IoTDB.schemaProcessor.createAlignedTimeSeries(
-        new PartialPath(sgName + PATH_SEPARATOR + "device0"),
-        measurementSchemas.stream()
-            .map(MeasurementSchema::getMeasurementId)
-            .collect(Collectors.toList()),
-        measurementSchemas.stream().map(MeasurementSchema::getType).collect(Collectors.toList()),
-        measurementSchemas.stream()
-            .map(MeasurementSchema::getEncodingType)
-            .collect(Collectors.toList()),
-        measurementSchemas.stream()
-            .map(MeasurementSchema::getCompressor)
-            .collect(Collectors.toList()));
-    IoTDB.schemaProcessor.createAlignedTimeSeries(
-        new PartialPath(sgName + PATH_SEPARATOR + "device1"),
-        measurementSchemas.stream()
-            .map(MeasurementSchema::getMeasurementId)
-            .collect(Collectors.toList()),
-        measurementSchemas.stream().map(MeasurementSchema::getType).collect(Collectors.toList()),
-        measurementSchemas.stream()
-            .map(MeasurementSchema::getEncodingType)
-            .collect(Collectors.toList()),
-        measurementSchemas.stream()
-            .map(MeasurementSchema::getCompressor)
-            .collect(Collectors.toList()));
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath(sgName));
+    LocalSchemaProcessor.getInstance()
+        .createAlignedTimeSeries(
+            new PartialPath(sgName + PATH_SEPARATOR + "device0"),
+            measurementSchemas.stream()
+                .map(MeasurementSchema::getMeasurementId)
+                .collect(Collectors.toList()),
+            measurementSchemas.stream()
+                .map(MeasurementSchema::getType)
+                .collect(Collectors.toList()),
+            measurementSchemas.stream()
+                .map(MeasurementSchema::getEncodingType)
+                .collect(Collectors.toList()),
+            measurementSchemas.stream()
+                .map(MeasurementSchema::getCompressor)
+                .collect(Collectors.toList()));
+    LocalSchemaProcessor.getInstance()
+        .createAlignedTimeSeries(
+            new PartialPath(sgName + PATH_SEPARATOR + "device1"),
+            measurementSchemas.stream()
+                .map(MeasurementSchema::getMeasurementId)
+                .collect(Collectors.toList()),
+            measurementSchemas.stream()
+                .map(MeasurementSchema::getType)
+                .collect(Collectors.toList()),
+            measurementSchemas.stream()
+                .map(MeasurementSchema::getEncodingType)
+                .collect(Collectors.toList()),
+            measurementSchemas.stream()
+                .map(MeasurementSchema::getCompressor)
+                .collect(Collectors.toList()));
     for (MeasurementSchema measurementSchema : measurementSchemas) {
-      IoTDB.schemaProcessor.createTimeseries(
-          new PartialPath(
-              sgName
-                  + PATH_SEPARATOR
-                  + "device2"
-                  + PATH_SEPARATOR
-                  + measurementSchema.getMeasurementId()),
-          measurementSchema.getType(),
-          measurementSchema.getEncodingType(),
-          measurementSchema.getCompressor(),
-          Collections.emptyMap());
+      LocalSchemaProcessor.getInstance()
+          .createTimeseries(
+              new PartialPath(
+                  sgName
+                      + PATH_SEPARATOR
+                      + "device2"
+                      + PATH_SEPARATOR
+                      + measurementSchema.getMeasurementId()),
+              measurementSchema.getType(),
+              measurementSchema.getEncodingType(),
+              measurementSchema.getCompressor(),
+              Collections.emptyMap());
     }
   }
 
diff --git a/server/src/test/java/org/apache/iotdb/db/qp/PlannerTest.java b/server/src/test/java/org/apache/iotdb/db/qp/PlannerTest.java
index f09a97d07a..679a35f290 100644
--- a/server/src/test/java/org/apache/iotdb/db/qp/PlannerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/qp/PlannerTest.java
@@ -25,11 +25,11 @@ import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
+import org.apache.iotdb.db.localconfignode.LocalConfigNode;
 import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.qp.executor.PlanExecutor;
 import org.apache.iotdb.db.qp.logical.Operator.OperatorType;
 import org.apache.iotdb.db.qp.physical.PhysicalPlan;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.service.rpc.thrift.TSLastDataQueryReq;
 import org.apache.iotdb.service.rpc.thrift.TSRawDataQueryReq;
@@ -60,11 +60,11 @@ public class PlannerTest {
 
   private CompressionType compressionType =
       TSFileDescriptor.getInstance().getConfig().getCompressor();
-  private LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+  private LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
   private Planner processor = new Planner();
 
   static {
-    IoTDB.configManager.init();
+    LocalConfigNode.getInstance().init();
   }
 
   @Before
diff --git a/server/src/test/java/org/apache/iotdb/db/qp/logical/LogicalPlanSmallTest.java b/server/src/test/java/org/apache/iotdb/db/qp/logical/LogicalPlanSmallTest.java
index 260b55c994..ff5ce7245e 100644
--- a/server/src/test/java/org/apache/iotdb/db/qp/logical/LogicalPlanSmallTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/qp/logical/LogicalPlanSmallTest.java
@@ -24,13 +24,13 @@ import org.apache.iotdb.db.exception.query.LogicalOptimizeException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
 import org.apache.iotdb.db.exception.sql.SQLParserException;
 import org.apache.iotdb.db.exception.sql.SemanticException;
+import org.apache.iotdb.db.localconfignode.LocalConfigNode;
 import org.apache.iotdb.db.qp.logical.crud.DeleteDataOperator;
 import org.apache.iotdb.db.qp.logical.crud.QueryOperator;
 import org.apache.iotdb.db.qp.logical.sys.DeleteStorageGroupOperator;
 import org.apache.iotdb.db.qp.logical.sys.SetStorageGroupOperator;
 import org.apache.iotdb.db.qp.strategy.LogicalGenerator;
 import org.apache.iotdb.db.qp.strategy.optimizer.ConcatPathOptimizer;
-import org.apache.iotdb.db.service.IoTDB;
 
 import org.antlr.v4.runtime.misc.ParseCancellationException;
 import org.junit.Assert;
@@ -180,10 +180,10 @@ public class LogicalPlanSmallTest {
         "select s1 from root.vehicle.d1 where s1 < 20 and time <= now() slimit 2 soffset 1";
     QueryOperator operator =
         (QueryOperator) LogicalGenerator.generate(sqlStr, ZoneId.systemDefault());
-    IoTDB.configManager.init();
+    LocalConfigNode.getInstance().init();
     ConcatPathOptimizer concatPathOptimizer = new ConcatPathOptimizer();
     concatPathOptimizer.transform(operator);
-    IoTDB.configManager.clear();
+    LocalConfigNode.getInstance().clear();
     // expected to throw LogicalOptimizeException: The value of SOFFSET (%d) is equal to or exceeds
     // the number of sequences (%d) that can actually be returned.
   }
diff --git a/server/src/test/java/org/apache/iotdb/db/query/dataset/UDTFAlignByTimeDataSetTest.java b/server/src/test/java/org/apache/iotdb/db/query/dataset/UDTFAlignByTimeDataSetTest.java
index f06fb4d135..ccf164de65 100644
--- a/server/src/test/java/org/apache/iotdb/db/query/dataset/UDTFAlignByTimeDataSetTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/query/dataset/UDTFAlignByTimeDataSetTest.java
@@ -23,11 +23,11 @@ import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.qp.Planner;
 import org.apache.iotdb.db.qp.executor.IPlanExecutor;
 import org.apache.iotdb.db.qp.executor.PlanExecutor;
 import org.apache.iotdb.db.qp.physical.crud.UDTFPlan;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.tsfile.exception.filter.QueryFilterOptimizationException;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
@@ -80,43 +80,49 @@ public class UDTFAlignByTimeDataSetTest {
   @BeforeClass
   public static void setUp() throws Exception {
     EnvironmentUtils.envSetUp();
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath("root.vehicle"));
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s1"),
-        TSDataType.FLOAT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d1.s2"),
-        TSDataType.FLOAT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d2.s1"),
-        TSDataType.FLOAT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d2.s2"),
-        TSDataType.FLOAT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d3.s1"),
-        TSDataType.FLOAT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath("root.vehicle.d3.s2"),
-        TSDataType.FLOAT,
-        TSEncoding.PLAIN,
-        CompressionType.UNCOMPRESSED,
-        null);
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath("root.vehicle"));
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s1"),
+            TSDataType.FLOAT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d1.s2"),
+            TSDataType.FLOAT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d2.s1"),
+            TSDataType.FLOAT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d2.s2"),
+            TSDataType.FLOAT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d3.s1"),
+            TSDataType.FLOAT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath("root.vehicle.d3.s2"),
+            TSDataType.FLOAT,
+            TSEncoding.PLAIN,
+            CompressionType.UNCOMPRESSED,
+            null);
     generateData();
     queryExecutor.processNonQuery(
         processor.parseSQLToPhysicalPlan(
diff --git a/server/src/test/java/org/apache/iotdb/db/query/reader/series/SeriesReaderTestUtil.java b/server/src/test/java/org/apache/iotdb/db/query/reader/series/SeriesReaderTestUtil.java
index 1d7ceaf5a0..2b97a7cd12 100644
--- a/server/src/test/java/org/apache/iotdb/db/query/reader/series/SeriesReaderTestUtil.java
+++ b/server/src/test/java/org/apache/iotdb/db/query/reader/series/SeriesReaderTestUtil.java
@@ -26,8 +26,9 @@ import org.apache.iotdb.db.engine.cache.ChunkCache;
 import org.apache.iotdb.db.engine.cache.TimeSeriesMetadataCache;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResourceStatus;
+import org.apache.iotdb.db.localconfignode.LocalConfigNode;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.query.control.FileReaderManager;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
@@ -74,7 +75,7 @@ public class SeriesReaderTestUtil {
       List<TsFileResource> unseqResources,
       String sgName)
       throws MetadataException, IOException, WriteProcessException {
-    IoTDB.configManager.init();
+    LocalConfigNode.getInstance().init();
     prepareSeries(measurementSchemas, deviceIds, sgName);
     prepareFiles(seqResources, unseqResources, measurementSchemas, deviceIds, sgName);
   }
@@ -86,7 +87,7 @@ public class SeriesReaderTestUtil {
     unseqResources.clear();
     ChunkCache.getInstance().clear();
     TimeSeriesMetadataCache.getInstance().clear();
-    IoTDB.configManager.clear();
+    LocalConfigNode.getInstance().clear();
     EnvironmentUtils.cleanAllDir();
   }
 
@@ -187,15 +188,16 @@ public class SeriesReaderTestUtil {
     for (int i = 0; i < deviceNum; i++) {
       deviceIds.add(sgName + PATH_SEPARATOR + "device" + i);
     }
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath(sgName));
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath(sgName));
     for (String device : deviceIds) {
       for (MeasurementSchema measurementSchema : measurementSchemas) {
-        IoTDB.schemaProcessor.createTimeseries(
-            new PartialPath(device + PATH_SEPARATOR + measurementSchema.getMeasurementId()),
-            measurementSchema.getType(),
-            measurementSchema.getEncodingType(),
-            measurementSchema.getCompressor(),
-            Collections.emptyMap());
+        LocalSchemaProcessor.getInstance()
+            .createTimeseries(
+                new PartialPath(device + PATH_SEPARATOR + measurementSchema.getMeasurementId()),
+                measurementSchema.getType(),
+                measurementSchema.getEncodingType(),
+                measurementSchema.getCompressor(),
+                Collections.emptyMap());
       }
     }
   }
diff --git a/server/src/test/java/org/apache/iotdb/db/rescon/ResourceManagerTest.java b/server/src/test/java/org/apache/iotdb/db/rescon/ResourceManagerTest.java
index 4f1513a353..fe56569273 100644
--- a/server/src/test/java/org/apache/iotdb/db/rescon/ResourceManagerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/rescon/ResourceManagerTest.java
@@ -30,8 +30,9 @@ import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResourceStatus;
 import org.apache.iotdb.db.engine.storagegroup.timeindex.TimeIndexLevel;
 import org.apache.iotdb.db.exception.StorageEngineException;
+import org.apache.iotdb.db.localconfignode.LocalConfigNode;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.query.control.FileReaderManager;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.tsfile.exception.write.WriteProcessException;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
@@ -80,7 +81,7 @@ public class ResourceManagerTest {
 
   @Before
   public void setUp() throws IOException, WriteProcessException, MetadataException {
-    IoTDB.configManager.init();
+    LocalConfigNode.getInstance().init();
     prevTimeIndexMemoryThreshold = CONFIG.getAllocateMemoryForTimeIndex();
     timeIndexLevel = CONFIG.getTimeIndexLevel();
     prepareSeries();
@@ -95,7 +96,7 @@ public class ResourceManagerTest {
     tsFileResourceManager.setTimeIndexMemoryThreshold(prevTimeIndexMemoryThreshold);
     ChunkCache.getInstance().clear();
     TimeSeriesMetadataCache.getInstance().clear();
-    IoTDB.configManager.clear();
+    LocalConfigNode.getInstance().clear();
     TsFileResourceManager.getInstance().clear();
     EnvironmentUtils.cleanAllDir();
   }
@@ -111,16 +112,17 @@ public class ResourceManagerTest {
     for (int i = 0; i < deviceNum; i++) {
       deviceIds[i] = RESOURCE_MANAGER_TEST_SG + PATH_SEPARATOR + "device" + i;
     }
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath(RESOURCE_MANAGER_TEST_SG));
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath(RESOURCE_MANAGER_TEST_SG));
     for (String device : deviceIds) {
       for (MeasurementSchema measurementSchema : measurementSchemas) {
         PartialPath devicePath = new PartialPath(device);
-        IoTDB.schemaProcessor.createTimeseries(
-            devicePath.concatNode(measurementSchema.getMeasurementId()),
-            measurementSchema.getType(),
-            measurementSchema.getEncodingType(),
-            measurementSchema.getCompressor(),
-            Collections.emptyMap());
+        LocalSchemaProcessor.getInstance()
+            .createTimeseries(
+                devicePath.concatNode(measurementSchema.getMeasurementId()),
+                measurementSchema.getType(),
+                measurementSchema.getEncodingType(),
+                measurementSchema.getCompressor(),
+                Collections.emptyMap());
       }
     }
   }
diff --git a/server/src/test/java/org/apache/iotdb/db/service/DaemonTest.java b/server/src/test/java/org/apache/iotdb/db/service/DaemonTest.java
index dea26b34c2..8a1ba738a5 100644
--- a/server/src/test/java/org/apache/iotdb/db/service/DaemonTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/service/DaemonTest.java
@@ -24,14 +24,14 @@ public class DaemonTest {
 
   @Test
   public void testPid() {
-    IoTDB ioTDB = IoTDB.getInstance();
+    DataNode ioTDB = DataNode.getInstance();
     // no pid set, so there is nothing happens
     ioTDB.processPid();
   }
 
   @Test
   public void testSetPid() {
-    IoTDB ioTDB = IoTDB.getInstance();
+    DataNode ioTDB = DataNode.getInstance();
     System.setProperty("iotdb-pidfile", "./iotdb.pid");
     // no pid set, so there is nothing happens
     ioTDB.processPid();
diff --git a/server/src/test/java/org/apache/iotdb/db/service/DataNodeInternalRPCServiceImplTest.java b/server/src/test/java/org/apache/iotdb/db/service/DataNodeInternalRPCServiceImplTest.java
index 7d11039ef6..33b62df876 100644
--- a/server/src/test/java/org/apache/iotdb/db/service/DataNodeInternalRPCServiceImplTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/service/DataNodeInternalRPCServiceImplTest.java
@@ -76,7 +76,7 @@ public class DataNodeInternalRPCServiceImplTest {
     // In standalone mode, we need to set dataNodeId to 0 for RaftPeerId in RatisConsensus
     conf.setDataNodeId(dataNodeId);
 
-    IoTDB.configManager.init();
+    LocalConfigNode.getInstance().init();
     configNode = LocalConfigNode.getInstance();
     configNode.getBelongedSchemaRegionIdWithAutoCreate(new PartialPath("root.ln"));
     DataRegionConsensusImpl.setupAndGetInstance().start();
@@ -108,7 +108,7 @@ public class DataNodeInternalRPCServiceImplTest {
     DataNodeRegionManager.getInstance().clear();
     DataRegionConsensusImpl.getInstance().stop();
     SchemaRegionConsensusImpl.getInstance().stop();
-    IoTDB.configManager.clear();
+    LocalConfigNode.getInstance().clear();
     EnvironmentUtils.cleanEnv();
   }
 
diff --git a/server/src/test/java/org/apache/iotdb/db/sync/datasource/PipeOpManagerTest.java b/server/src/test/java/org/apache/iotdb/db/sync/datasource/PipeOpManagerTest.java
index 9fc70f9bdf..7516e018da 100644
--- a/server/src/test/java/org/apache/iotdb/db/sync/datasource/PipeOpManagerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/sync/datasource/PipeOpManagerTest.java
@@ -24,7 +24,7 @@ import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.engine.modification.Deletion;
 import org.apache.iotdb.db.engine.modification.Modification;
 import org.apache.iotdb.db.engine.modification.ModificationFile;
-import org.apache.iotdb.db.service.IoTDB;
+import org.apache.iotdb.db.localconfignode.LocalConfigNode;
 import org.apache.iotdb.db.sync.externalpipe.operation.DeleteOperation;
 import org.apache.iotdb.db.sync.externalpipe.operation.InsertOperation;
 import org.apache.iotdb.db.sync.externalpipe.operation.Operation;
@@ -77,7 +77,7 @@ public class PipeOpManagerTest {
         TSFileDescriptor.getInstance().getConfig().getMaxNumberOfPointsInPage();
 
     EnvironmentUtils.envSetUp();
-    IoTDB.configManager.init();
+    LocalConfigNode.getInstance().init();
 
     createSeqTsfile(seqTsFileName1);
     delFileList.add(seqTsFileName1);
@@ -106,7 +106,7 @@ public class PipeOpManagerTest {
       }
     }
 
-    IoTDB.configManager.clear();
+    LocalConfigNode.getInstance().clear();
     EnvironmentUtils.cleanEnv();
     EnvironmentUtils.cleanAllDir();
 
diff --git a/server/src/test/java/org/apache/iotdb/db/tools/MLogParserTest.java b/server/src/test/java/org/apache/iotdb/db/tools/MLogParserTest.java
index 11ccfcaf43..8e80eacd59 100644
--- a/server/src/test/java/org/apache/iotdb/db/tools/MLogParserTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/tools/MLogParserTest.java
@@ -22,9 +22,9 @@ package org.apache.iotdb.db.tools;
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.metadata.MetadataConstant;
 import org.apache.iotdb.db.qp.physical.sys.CreateTimeSeriesPlan;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.tools.schema.MLogParser;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
@@ -87,7 +87,7 @@ public class MLogParserTest {
             plan.setDataType(TSDataType.INT32);
             plan.setEncoding(TSEncoding.PLAIN);
             plan.setCompressor(CompressionType.GZIP);
-            IoTDB.schemaProcessor.createTimeseries(plan);
+            LocalSchemaProcessor.getInstance().createTimeseries(plan);
           } catch (MetadataException e) {
             e.printStackTrace();
           }
@@ -96,23 +96,24 @@ public class MLogParserTest {
     }
 
     try {
-      IoTDB.schemaProcessor.setStorageGroup(new PartialPath("root.ln.cc"));
-      IoTDB.schemaProcessor.setStorageGroup(new PartialPath("root.sgcc"));
-      IoTDB.schemaProcessor.setTTL(new PartialPath("root.sgcc"), 1234L);
-      IoTDB.schemaProcessor.deleteTimeseries(new PartialPath("root.sg1.device1.s1"));
+      LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath("root.ln.cc"));
+      LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath("root.sgcc"));
+      LocalSchemaProcessor.getInstance().setTTL(new PartialPath("root.sgcc"), 1234L);
+      LocalSchemaProcessor.getInstance().deleteTimeseries(new PartialPath("root.sg1.device1.s1"));
       List<PartialPath> paths = new ArrayList<>();
       paths.add(new PartialPath("root.ln.cc"));
-      IoTDB.schemaProcessor.deleteStorageGroups(paths);
+      LocalSchemaProcessor.getInstance().deleteStorageGroups(paths);
       Map<String, String> tags = new HashMap<String, String>();
       tags.put("tag1", "value1");
-      IoTDB.schemaProcessor.addTags(tags, new PartialPath("root.sg1.device1.s2"));
-      IoTDB.schemaProcessor.changeAlias(new PartialPath("root.sg1.device1.s3"), "hello");
+      LocalSchemaProcessor.getInstance().addTags(tags, new PartialPath("root.sg1.device1.s2"));
+      LocalSchemaProcessor.getInstance()
+          .changeAlias(new PartialPath("root.sg1.device1.s3"), "hello");
     } catch (MetadataException | IOException e) {
       e.printStackTrace();
     }
 
     try {
-      IoTDB.schemaProcessor.setStorageGroup(new PartialPath("root.sg"));
+      LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath("root.sg"));
     } catch (MetadataException e) {
       e.printStackTrace();
     }
@@ -123,7 +124,7 @@ public class MLogParserTest {
     prepareData();
     testNonExistingStorageGroupDir("root.ln.cc");
 
-    IoTDB.schemaProcessor.forceMlog();
+    LocalSchemaProcessor.getInstance().forceMlog();
 
     for (int i = 0; i < storageGroups.length; i++) {
       testParseMLog(storageGroups[i], storageGroupIndex[i], mlogLineNum[i]);
diff --git a/server/src/test/java/org/apache/iotdb/db/utils/SchemaTestUtils.java b/server/src/test/java/org/apache/iotdb/db/utils/SchemaTestUtils.java
index f8ed36c503..948f24b226 100644
--- a/server/src/test/java/org/apache/iotdb/db/utils/SchemaTestUtils.java
+++ b/server/src/test/java/org/apache/iotdb/db/utils/SchemaTestUtils.java
@@ -21,7 +21,7 @@ package org.apache.iotdb.db.utils;
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.MeasurementPath;
 import org.apache.iotdb.commons.path.PartialPath;
-import org.apache.iotdb.db.service.IoTDB;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 
 import java.util.List;
 
@@ -32,7 +32,8 @@ public class SchemaTestUtils {
   public static MeasurementPath getMeasurementPath(String pathPatternString)
       throws MetadataException {
     PartialPath pathPattern = new PartialPath(pathPatternString);
-    List<MeasurementPath> measurementPaths = IoTDB.schemaProcessor.getMeasurementPaths(pathPattern);
+    List<MeasurementPath> measurementPaths =
+        LocalSchemaProcessor.getInstance().getMeasurementPaths(pathPattern);
     assertFalse(measurementPaths.isEmpty());
     return measurementPaths.get(0);
   }
diff --git a/server/src/test/java/org/apache/iotdb/db/utils/SchemaUtilsTest.java b/server/src/test/java/org/apache/iotdb/db/utils/SchemaUtilsTest.java
index a3f6b11f5f..527446a3d1 100644
--- a/server/src/test/java/org/apache/iotdb/db/utils/SchemaUtilsTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/utils/SchemaUtilsTest.java
@@ -20,9 +20,9 @@ package org.apache.iotdb.db.utils;
 
 import org.apache.iotdb.commons.exception.MetadataException;
 import org.apache.iotdb.commons.path.PartialPath;
+import org.apache.iotdb.db.localconfignode.LocalConfigNode;
 import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.qp.constant.SQLConstant;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.write.schema.TimeseriesSchema;
 
@@ -36,13 +36,13 @@ import java.util.List;
 public class SchemaUtilsTest {
   @Test
   public void registerTimeseriesTest() throws MetadataException {
-    IoTDB.configManager.init();
-    LocalSchemaProcessor schemaProcessor = IoTDB.schemaProcessor;
+    LocalConfigNode.getInstance().init();
+    LocalSchemaProcessor schemaProcessor = LocalSchemaProcessor.getInstance();
 
     String tsPath = "root.sg.d1.s1";
     TimeseriesSchema timeseriesSchema = new TimeseriesSchema(tsPath, TSDataType.INT32);
     SchemaUtils.registerTimeseries(timeseriesSchema);
-    Assert.assertTrue(IoTDB.schemaProcessor.isPathExist(new PartialPath(tsPath)));
+    Assert.assertTrue(LocalSchemaProcessor.getInstance().isPathExist(new PartialPath(tsPath)));
   }
 
   @Test
diff --git a/server/src/test/java/org/apache/iotdb/db/wal/recover/WALRecoverManagerTest.java b/server/src/test/java/org/apache/iotdb/db/wal/recover/WALRecoverManagerTest.java
index 208a05d5ba..0b8b3ebaa4 100644
--- a/server/src/test/java/org/apache/iotdb/db/wal/recover/WALRecoverManagerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/wal/recover/WALRecoverManagerTest.java
@@ -29,10 +29,10 @@ import org.apache.iotdb.db.engine.memtable.IMemTable;
 import org.apache.iotdb.db.engine.memtable.PrimitiveMemTable;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
 import org.apache.iotdb.db.exception.query.QueryProcessException;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.write.InsertRowNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.write.InsertTabletNode;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.wal.buffer.IWALBuffer;
 import org.apache.iotdb.db.wal.buffer.WALBuffer;
@@ -116,31 +116,35 @@ public class WALRecoverManagerTest {
     config.setWalMode(WALMode.SYNC);
     walBuffer = new WALBuffer(WAL_NODE_IDENTIFIER, WAL_NODE_FOLDER);
     checkpointManager = new CheckpointManager(WAL_NODE_IDENTIFIER, WAL_NODE_FOLDER);
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath(SG_NAME));
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath(DEVICE1_NAME.concat(".s1")),
-        TSDataType.INT32,
-        TSEncoding.RLE,
-        TSFileDescriptor.getInstance().getConfig().getCompressor(),
-        Collections.emptyMap());
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath(DEVICE1_NAME.concat(".s2")),
-        TSDataType.INT64,
-        TSEncoding.RLE,
-        TSFileDescriptor.getInstance().getConfig().getCompressor(),
-        Collections.emptyMap());
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath(DEVICE2_NAME.concat(".s1")),
-        TSDataType.FLOAT,
-        TSEncoding.RLE,
-        TSFileDescriptor.getInstance().getConfig().getCompressor(),
-        Collections.emptyMap());
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath(DEVICE2_NAME.concat(".s2")),
-        TSDataType.DOUBLE,
-        TSEncoding.RLE,
-        TSFileDescriptor.getInstance().getConfig().getCompressor(),
-        Collections.emptyMap());
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath(SG_NAME));
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath(DEVICE1_NAME.concat(".s1")),
+            TSDataType.INT32,
+            TSEncoding.RLE,
+            TSFileDescriptor.getInstance().getConfig().getCompressor(),
+            Collections.emptyMap());
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath(DEVICE1_NAME.concat(".s2")),
+            TSDataType.INT64,
+            TSEncoding.RLE,
+            TSFileDescriptor.getInstance().getConfig().getCompressor(),
+            Collections.emptyMap());
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath(DEVICE2_NAME.concat(".s1")),
+            TSDataType.FLOAT,
+            TSEncoding.RLE,
+            TSFileDescriptor.getInstance().getConfig().getCompressor(),
+            Collections.emptyMap());
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath(DEVICE2_NAME.concat(".s2")),
+            TSDataType.DOUBLE,
+            TSEncoding.RLE,
+            TSFileDescriptor.getInstance().getConfig().getCompressor(),
+            Collections.emptyMap());
   }
 
   @After
diff --git a/server/src/test/java/org/apache/iotdb/db/wal/recover/file/TsFilePlanRedoerTest.java b/server/src/test/java/org/apache/iotdb/db/wal/recover/file/TsFilePlanRedoerTest.java
index cfbd8e095e..515e19690b 100644
--- a/server/src/test/java/org/apache/iotdb/db/wal/recover/file/TsFilePlanRedoerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/wal/recover/file/TsFilePlanRedoerTest.java
@@ -26,11 +26,11 @@ import org.apache.iotdb.db.engine.memtable.IMemTable;
 import org.apache.iotdb.db.engine.modification.ModificationFile;
 import org.apache.iotdb.db.engine.querycontext.ReadOnlyMemChunk;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.write.DeleteDataNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.write.InsertRowNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.write.InsertTabletNode;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.wal.utils.TsFileUtilsForRecoverTest;
 import org.apache.iotdb.tsfile.common.conf.TSFileDescriptor;
@@ -94,44 +94,53 @@ public class TsFilePlanRedoerTest {
     prevIsEnablePartialInsert = IoTDBDescriptor.getInstance().getConfig().isEnablePartialInsert();
     IoTDBDescriptor.getInstance().getConfig().setEnablePartialInsert(true);
     compressionType = TSFileDescriptor.getInstance().getConfig().getCompressor();
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath(SG_NAME));
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath(DEVICE1_NAME.concat(".s1")),
-        TSDataType.INT32,
-        TSEncoding.RLE,
-        TSFileDescriptor.getInstance().getConfig().getCompressor(),
-        Collections.emptyMap());
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath(DEVICE1_NAME.concat(".s2")),
-        TSDataType.INT64,
-        TSEncoding.RLE,
-        TSFileDescriptor.getInstance().getConfig().getCompressor(),
-        Collections.emptyMap());
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath(DEVICE2_NAME.concat(".s1")),
-        TSDataType.FLOAT,
-        TSEncoding.RLE,
-        TSFileDescriptor.getInstance().getConfig().getCompressor(),
-        Collections.emptyMap());
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath(DEVICE2_NAME.concat(".s2")),
-        TSDataType.DOUBLE,
-        TSEncoding.RLE,
-        TSFileDescriptor.getInstance().getConfig().getCompressor(),
-        Collections.emptyMap());
-    IoTDB.schemaProcessor.createAlignedTimeSeries(
-        new PartialPath(DEVICE3_NAME),
-        Arrays.asList("s1", "s2", "s3", "s4", "s5"),
-        Arrays.asList(
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath(SG_NAME));
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath(DEVICE1_NAME.concat(".s1")),
             TSDataType.INT32,
+            TSEncoding.RLE,
+            TSFileDescriptor.getInstance().getConfig().getCompressor(),
+            Collections.emptyMap());
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath(DEVICE1_NAME.concat(".s2")),
             TSDataType.INT64,
-            TSDataType.BOOLEAN,
+            TSEncoding.RLE,
+            TSFileDescriptor.getInstance().getConfig().getCompressor(),
+            Collections.emptyMap());
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath(DEVICE2_NAME.concat(".s1")),
             TSDataType.FLOAT,
-            TSDataType.TEXT),
-        Arrays.asList(
-            TSEncoding.RLE, TSEncoding.RLE, TSEncoding.RLE, TSEncoding.RLE, TSEncoding.PLAIN),
-        Arrays.asList(
-            compressionType, compressionType, compressionType, compressionType, compressionType));
+            TSEncoding.RLE,
+            TSFileDescriptor.getInstance().getConfig().getCompressor(),
+            Collections.emptyMap());
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath(DEVICE2_NAME.concat(".s2")),
+            TSDataType.DOUBLE,
+            TSEncoding.RLE,
+            TSFileDescriptor.getInstance().getConfig().getCompressor(),
+            Collections.emptyMap());
+    LocalSchemaProcessor.getInstance()
+        .createAlignedTimeSeries(
+            new PartialPath(DEVICE3_NAME),
+            Arrays.asList("s1", "s2", "s3", "s4", "s5"),
+            Arrays.asList(
+                TSDataType.INT32,
+                TSDataType.INT64,
+                TSDataType.BOOLEAN,
+                TSDataType.FLOAT,
+                TSDataType.TEXT),
+            Arrays.asList(
+                TSEncoding.RLE, TSEncoding.RLE, TSEncoding.RLE, TSEncoding.RLE, TSEncoding.PLAIN),
+            Arrays.asList(
+                compressionType,
+                compressionType,
+                compressionType,
+                compressionType,
+                compressionType));
   }
 
   @After
@@ -635,8 +644,10 @@ public class TsFilePlanRedoerTest {
   @Test
   public void testRedoAlignedInsertAfterDeleteTimeseries() throws Exception {
     // some timeseries have been deleted
-    IoTDB.schemaProcessor.deleteTimeseries(new PartialPath(DEVICE3_NAME.concat(".s1")));
-    IoTDB.schemaProcessor.deleteTimeseries(new PartialPath(DEVICE3_NAME.concat(".s5")));
+    LocalSchemaProcessor.getInstance()
+        .deleteTimeseries(new PartialPath(DEVICE3_NAME.concat(".s1")));
+    LocalSchemaProcessor.getInstance()
+        .deleteTimeseries(new PartialPath(DEVICE3_NAME.concat(".s5")));
     // generate .tsfile and update resource in memory
     File file = new File(FILE_NAME);
     generateCompleteFile(file);
diff --git a/server/src/test/java/org/apache/iotdb/db/wal/recover/file/UnsealedTsFileRecoverPerformerTest.java b/server/src/test/java/org/apache/iotdb/db/wal/recover/file/UnsealedTsFileRecoverPerformerTest.java
index d41f896c6a..c2bc0c02ee 100644
--- a/server/src/test/java/org/apache/iotdb/db/wal/recover/file/UnsealedTsFileRecoverPerformerTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/wal/recover/file/UnsealedTsFileRecoverPerformerTest.java
@@ -23,11 +23,11 @@ import org.apache.iotdb.db.conf.IoTDBConfig;
 import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.engine.modification.ModificationFile;
 import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
+import org.apache.iotdb.db.metadata.LocalSchemaProcessor;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.PlanNodeId;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.write.DeleteDataNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.write.InsertRowNode;
 import org.apache.iotdb.db.mpp.plan.planner.plan.node.write.InsertTabletNode;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.db.utils.EnvironmentUtils;
 import org.apache.iotdb.db.wal.buffer.WALEntry;
 import org.apache.iotdb.db.wal.buffer.WALInfoEntry;
@@ -83,31 +83,35 @@ public class UnsealedTsFileRecoverPerformerTest {
     EnvironmentUtils.envSetUp();
     isClusterMode = config.isClusterMode();
     config.setClusterMode(true);
-    IoTDB.schemaProcessor.setStorageGroup(new PartialPath(SG_NAME));
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath(DEVICE1_NAME.concat(".s1")),
-        TSDataType.INT32,
-        TSEncoding.RLE,
-        TSFileDescriptor.getInstance().getConfig().getCompressor(),
-        Collections.emptyMap());
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath(DEVICE1_NAME.concat(".s2")),
-        TSDataType.INT64,
-        TSEncoding.RLE,
-        TSFileDescriptor.getInstance().getConfig().getCompressor(),
-        Collections.emptyMap());
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath(DEVICE2_NAME.concat(".s1")),
-        TSDataType.FLOAT,
-        TSEncoding.RLE,
-        TSFileDescriptor.getInstance().getConfig().getCompressor(),
-        Collections.emptyMap());
-    IoTDB.schemaProcessor.createTimeseries(
-        new PartialPath(DEVICE2_NAME.concat(".s2")),
-        TSDataType.DOUBLE,
-        TSEncoding.RLE,
-        TSFileDescriptor.getInstance().getConfig().getCompressor(),
-        Collections.emptyMap());
+    LocalSchemaProcessor.getInstance().setStorageGroup(new PartialPath(SG_NAME));
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath(DEVICE1_NAME.concat(".s1")),
+            TSDataType.INT32,
+            TSEncoding.RLE,
+            TSFileDescriptor.getInstance().getConfig().getCompressor(),
+            Collections.emptyMap());
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath(DEVICE1_NAME.concat(".s2")),
+            TSDataType.INT64,
+            TSEncoding.RLE,
+            TSFileDescriptor.getInstance().getConfig().getCompressor(),
+            Collections.emptyMap());
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath(DEVICE2_NAME.concat(".s1")),
+            TSDataType.FLOAT,
+            TSEncoding.RLE,
+            TSFileDescriptor.getInstance().getConfig().getCompressor(),
+            Collections.emptyMap());
+    LocalSchemaProcessor.getInstance()
+        .createTimeseries(
+            new PartialPath(DEVICE2_NAME.concat(".s2")),
+            TSDataType.DOUBLE,
+            TSEncoding.RLE,
+            TSFileDescriptor.getInstance().getConfig().getCompressor(),
+            Collections.emptyMap());
   }
 
   @After
diff --git a/server/src/test/resources/logback-test.xml b/server/src/test/resources/logback-test.xml
index 2dfb84a4a8..01b731ec55 100644
--- a/server/src/test/resources/logback-test.xml
+++ b/server/src/test/resources/logback-test.xml
@@ -49,7 +49,7 @@
     <logger name="org.apache.iotdb.db.engine.flush.FlushManager" level="INFO"/>
     <logger name="org.apache.iotdb.db.integration.IoTDBCompactionIT" level="INFO"/>
     <logger name="org.apache.iotdb.commons.service.RegisterManager" level="INFO"/>
-    <logger name="org.apache.iotdb.db.service.IoTDB" level="WARN"/>
+    <logger name="org.apache.iotdb.db.service.DataNode" level="WARN"/>
     <logger name="org.apache.iotdb.db.service.RPCService" level="INFO"/>
     <logger name="org.apache.iotdb.db.service.MQTTService" level="INFO"/>
     <logger name="org.apache.iotdb.db.engine.compaction.cross.rewrite.task" level="ERROR"/>
diff --git a/spark-iotdb-connector/src/test/scala/org/apache/iotdb/spark/db/EnvironmentUtils.java b/spark-iotdb-connector/src/test/scala/org/apache/iotdb/spark/db/EnvironmentUtils.java
index 7794821e81..5676fbba9f 100644
--- a/spark-iotdb-connector/src/test/scala/org/apache/iotdb/spark/db/EnvironmentUtils.java
+++ b/spark-iotdb-connector/src/test/scala/org/apache/iotdb/spark/db/EnvironmentUtils.java
@@ -35,10 +35,10 @@ import org.apache.iotdb.db.engine.cache.ChunkCache;
 import org.apache.iotdb.db.engine.cache.TimeSeriesMetadataCache;
 import org.apache.iotdb.db.engine.flush.FlushManager;
 import org.apache.iotdb.db.exception.StorageEngineException;
+import org.apache.iotdb.db.localconfignode.LocalConfigNode;
 import org.apache.iotdb.db.query.context.QueryContext;
 import org.apache.iotdb.db.query.control.FileReaderManager;
 import org.apache.iotdb.db.query.control.QueryResourceManager;
-import org.apache.iotdb.db.service.IoTDB;
 import org.apache.iotdb.commons.service.metric.MetricService;
 import org.apache.iotdb.db.wal.WALManager;
 import org.apache.iotdb.jdbc.Config;
@@ -122,7 +122,7 @@ public class EnvironmentUtils {
       BloomFilterCache.getInstance().clear();
     }
     // close metadata
-    IoTDB.configManager.clear();
+    LocalConfigNode.getInstance().clear();
     MetricService.getInstance().stop();
     // delete all directory
     cleanAllDir();
@@ -159,7 +159,7 @@ public class EnvironmentUtils {
 
   /** disable memory control</br> this function should be called before all code in the setup */
   public static void envSetUp() throws StartupException {
-    IoTDB.configManager.init();
+    LocalConfigNode.getInstance().init();
     createAllDir();
     IAuthorizer authorizer;
     try {
diff --git a/spark-iotdb-connector/src/test/scala/org/apache/iotdb/spark/db/IoTDBTest.scala b/spark-iotdb-connector/src/test/scala/org/apache/iotdb/spark/db/IoTDBTest.scala
index 3d12cea1f1..ce1a05c82a 100644
--- a/spark-iotdb-connector/src/test/scala/org/apache/iotdb/spark/db/IoTDBTest.scala
+++ b/spark-iotdb-connector/src/test/scala/org/apache/iotdb/spark/db/IoTDBTest.scala
@@ -20,7 +20,7 @@
 package org.apache.iotdb.spark.db
 
 import java.io.ByteArrayOutputStream
-import org.apache.iotdb.db.service.IoTDB
+import org.apache.iotdb.db.service.NewIoTDB
 import org.apache.iotdb.jdbc.Config
 import org.apache.spark.sql.{SQLContext, SparkSession}
 import org.junit._
@@ -29,7 +29,7 @@ import org.scalatest.{BeforeAndAfterAll, FunSuite}
 // TODO move it to integration-test
 @Ignore
 class IoTDBTest extends FunSuite with BeforeAndAfterAll {
-  private var daemon: IoTDB = _
+  private var daemon: NewIoTDB = _
 
   private val testFile = "/home/hadoop/git/tsfile/delta-spark/src/test/resources/test.tsfile"
   private val csvPath: java.lang.String = "/home/hadoop/git/tsfile/delta-spark/src/test/resources/test.csv"
@@ -43,8 +43,8 @@ class IoTDBTest extends FunSuite with BeforeAndAfterAll {
     System.setProperty("IOTDB_CONF", "src/test/resources/")
     super.beforeAll()
 
-    daemon = IoTDB.getInstance
-    daemon.active()
+    daemon = NewIoTDB.getInstance
+    daemon.active(false)
     EnvironmentUtils.envSetUp()
     Class.forName(Config.JDBC_DRIVER_NAME)
     EnvironmentUtils.prepareData()
diff --git a/spark-iotdb-connector/src/test/scala/org/apache/iotdb/spark/db/IoTDBWriteTest.scala b/spark-iotdb-connector/src/test/scala/org/apache/iotdb/spark/db/IoTDBWriteTest.scala
index 4a74beb119..0df15c2e52 100644
--- a/spark-iotdb-connector/src/test/scala/org/apache/iotdb/spark/db/IoTDBWriteTest.scala
+++ b/spark-iotdb-connector/src/test/scala/org/apache/iotdb/spark/db/IoTDBWriteTest.scala
@@ -19,7 +19,7 @@
 
 package org.apache.iotdb.spark.db
 
-import org.apache.iotdb.db.service.IoTDB
+import org.apache.iotdb.db.service.NewIoTDB
 import org.apache.iotdb.jdbc.Config
 import org.apache.iotdb.session.Session
 import org.apache.spark.sql.SparkSession
@@ -28,7 +28,7 @@ import org.scalatest.{BeforeAndAfterAll, FunSuite, shortstacks}
 
 // TODO move it to integration-test
 class IoTDBWriteTest extends FunSuite with BeforeAndAfterAll {
-  private var daemon: IoTDB = _
+  private var daemon: NewIoTDB = _
   private var spark: SparkSession = _
   private var session: Session = _
 
@@ -37,8 +37,8 @@ class IoTDBWriteTest extends FunSuite with BeforeAndAfterAll {
     System.setProperty("IOTDB_CONF", "src/test/resources/")
     super.beforeAll()
 
-    daemon = IoTDB.getInstance
-    daemon.active()
+    daemon = NewIoTDB.getInstance
+    daemon.active(false)
     EnvironmentUtils.envSetUp()
     Class.forName(Config.JDBC_DRIVER_NAME)
 
diff --git a/spark-iotdb-connector/src/test/scala/org/apache/iotdb/spark/db/unit/DataFrameToolsTest.scala b/spark-iotdb-connector/src/test/scala/org/apache/iotdb/spark/db/unit/DataFrameToolsTest.scala
index 000ebd6082..3e4df54772 100644
--- a/spark-iotdb-connector/src/test/scala/org/apache/iotdb/spark/db/unit/DataFrameToolsTest.scala
+++ b/spark-iotdb-connector/src/test/scala/org/apache/iotdb/spark/db/unit/DataFrameToolsTest.scala
@@ -18,7 +18,7 @@
 
 package org.apache.iotdb.spark.db.unit
 
-import org.apache.iotdb.db.service.IoTDB
+import org.apache.iotdb.db.service.NewIoTDB
 import org.apache.iotdb.jdbc.Config
 import org.apache.iotdb.session.Session
 import org.apache.iotdb.spark.db.{DataFrameTools, EnvironmentUtils, IoTDBOptions}
@@ -29,7 +29,7 @@ import org.scalatest.{BeforeAndAfterAll, FunSuite}
 class DataFrameToolsTest extends FunSuite with BeforeAndAfterAll {
 
   private var spark: SparkSession = _
-  private var daemon: IoTDB = _
+  private var daemon: NewIoTDB = _
   private var session: Session = _
 
   @Before
@@ -37,8 +37,8 @@ class DataFrameToolsTest extends FunSuite with BeforeAndAfterAll {
     System.setProperty("IOTDB_CONF", "src/test/resources/")
     super.beforeAll()
 
-    daemon = IoTDB.getInstance
-    daemon.active()
+    daemon = NewIoTDB.getInstance
+    daemon.active(false)
     EnvironmentUtils.envSetUp()
     Class.forName(Config.JDBC_DRIVER_NAME)