背景
Apache IoTDB 1.0 版本实现了新的分布式架构。今天介绍一下如何通过源码启动 IoTDB 1.0 。
IoTDB 分布式里有两个主要概念,ConfigNode 和 DataNode,下文介绍启动 1C1D。
环境
MacOS
JDK8+
启动 ConfigNode 主类
启动 DataNode 主类
在 Edit Configurations...
中的 Program arguments
里输入 -s
Apply,运行 DataNode 即可。
常见问题
jdk16 及以上会遇到 InaccessibleObjectException:
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @1ca3b418
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:200)
at java.base/java.lang.reflect.Method.setAccessible(Method.java:194)
at net.sf.cglib.core.ReflectUtils$2.run(ReflectUtils.java:56)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
at net.sf.cglib.core.ReflectUtils.<clinit>(ReflectUtils.java:46)
... 25 common frames omitted
可以点 Modify options
中的 Add VM options
然后在出来的 VM options
中添加如下内容
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.nio=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED
Apply,启动即可。
给 DataNode 添加 VM options
后是这个效果。