HBASE-26477 Fix MiniMapReduceCluster failure under Java17 (#3867)

Signed-off-by: Wei-Chiu Chuang <weichiu@apache.org>
Signed-off-by: Duo Zhang <zhangduo@apache.org>
This commit is contained in:
Yutong Xiao 2021-11-23 18:39:38 +08:00 committed by GitHub
parent 1c48248ef8
commit 96d699a8f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 9 additions and 0 deletions

View File

@ -122,6 +122,7 @@ import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.CommonFSUtils; import org.apache.hadoop.hbase.util.CommonFSUtils;
import org.apache.hadoop.hbase.util.EnvironmentEdgeManager; import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
import org.apache.hadoop.hbase.util.FSUtils; import org.apache.hadoop.hbase.util.FSUtils;
import org.apache.hadoop.hbase.util.JVM;
import org.apache.hadoop.hbase.util.JVMClusterUtil; import org.apache.hadoop.hbase.util.JVMClusterUtil;
import org.apache.hadoop.hbase.util.JVMClusterUtil.MasterThread; import org.apache.hadoop.hbase.util.JVMClusterUtil.MasterThread;
import org.apache.hadoop.hbase.util.JVMClusterUtil.RegionServerThread; import org.apache.hadoop.hbase.util.JVMClusterUtil.RegionServerThread;
@ -2322,6 +2323,14 @@ public class HBaseTestingUtil extends HBaseZKTestingUtil {
conf.setBoolean("mapreduce.reduce.speculative", false); conf.setBoolean("mapreduce.reduce.speculative", false);
//// ////
// Yarn container runs in independent JVM. We need to pass the argument manually here if the
// JDK version >= 17. Otherwise, the MiniMRCluster will fail.
if (JVM.getJVMSpecVersion() >= 17) {
String jvmOpts = conf.get("yarn.app.mapreduce.am.command-opts", "");
conf.set("yarn.app.mapreduce.am.command-opts",
jvmOpts + " --add-opens java.base/java.lang=ALL-UNNAMED");
}
// Allow the user to override FS URI for this map-reduce cluster to use. // Allow the user to override FS URI for this map-reduce cluster to use.
mrCluster = mrCluster =
new MiniMRCluster(servers, FS_URI != null ? FS_URI : FileSystem.get(conf).getUri().toString(), new MiniMRCluster(servers, FS_URI != null ? FS_URI : FileSystem.get(conf).getUri().toString(),