From de5736bec02e6f22a5ba20a0579ff8e57e98a43c Mon Sep 17 00:00:00 2001 From: lgcareer <18610854716@163.com> Date: Thu, 13 Jun 2019 17:33:33 +0800 Subject: [PATCH] add --- .../java/cn/escheduler/common/Constants.java | 5 ++++ .../escheduler/common/utils/HadoopUtils.java | 27 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/escheduler-common/src/main/java/cn/escheduler/common/Constants.java b/escheduler-common/src/main/java/cn/escheduler/common/Constants.java index 07495c5e48..ddd27170db 100644 --- a/escheduler-common/src/main/java/cn/escheduler/common/Constants.java +++ b/escheduler-common/src/main/java/cn/escheduler/common/Constants.java @@ -70,6 +70,11 @@ public final class Constants { */ public static final String YARN_APPLICATION_STATUS_ADDRESS = "yarn.application.status.address"; + /** + * hdfs configuration + * hdfs.root.user + */ + public static final String HDFS_ROOT_USER = "hdfs.root.user"; /** * hdfs configuration diff --git a/escheduler-common/src/main/java/cn/escheduler/common/utils/HadoopUtils.java b/escheduler-common/src/main/java/cn/escheduler/common/utils/HadoopUtils.java index bedf030e0c..71a2eb712d 100644 --- a/escheduler-common/src/main/java/cn/escheduler/common/utils/HadoopUtils.java +++ b/escheduler-common/src/main/java/cn/escheduler/common/utils/HadoopUtils.java @@ -35,6 +35,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.*; +import java.security.PrivilegedAction; +import java.security.PrivilegedActionException; +import java.security.PrivilegedExceptionAction; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -63,6 +66,30 @@ public class HadoopUtils implements Closeable { return instance; } + /** + * init escheduler root path in hdfs + */ + private void initHdfsPath(){ + String hdfsUser = getString(Constants.HDFS_ROOT_USER); + String hdfsPath = getString(Constants.DATA_STORE_2_HDFS_BASEPATH); + Path path = new Path(hdfsPath); + try { + UserGroupInformation ugi = UserGroupInformation.createProxyUser(hdfsUser,UserGroupInformation.getLoginUser()); + ugi.doAs(new PrivilegedExceptionAction() { + @Override + public Boolean run() throws Exception { + + if(!fs.exists(path)){ + return fs.mkdirs(path); + } + return true; + } + }); + } catch (Exception e) { + logger.error(e.getMessage(),e); + } + } + /** * init hadoop configuration */