diff --git a/linkis-computation-governance/linkis-engineconn-manager/linkis-engineconn-manager-core/src/main/scala/org/apache/linkis/ecm/core/conf/ECPCoreConf.scala b/linkis-computation-governance/linkis-engineconn-manager/linkis-engineconn-manager-core/src/main/scala/org/apache/linkis/ecm/core/conf/ECPCoreConf.scala index c03773c0e65..292b8eb9fc1 100644 --- a/linkis-computation-governance/linkis-engineconn-manager/linkis-engineconn-manager-core/src/main/scala/org/apache/linkis/ecm/core/conf/ECPCoreConf.scala +++ b/linkis-computation-governance/linkis-engineconn-manager/linkis-engineconn-manager-core/src/main/scala/org/apache/linkis/ecm/core/conf/ECPCoreConf.scala @@ -23,4 +23,10 @@ object ECPCoreConf { val CORE_DUMP_DISABLE = CommonVars("linkis.ec.core.dump.disable", true).getValue + /** + * 物料替换脚本路径 脚本会在每次软链接创建前被调用,参数为:源路径 目标路径 例如:/appcom/Install/linkis/bin/material_replace.sh + */ + val MATERIAL_REPLACE_SCRIPT_PATH: String = + CommonVars("linkis.ecm.material.replace.script.path", "").getValue + } diff --git a/linkis-computation-governance/linkis-engineconn-manager/linkis-engineconn-manager-core/src/main/scala/org/apache/linkis/ecm/core/launch/ProcessEngineCommandBuilder.scala b/linkis-computation-governance/linkis-engineconn-manager/linkis-engineconn-manager-core/src/main/scala/org/apache/linkis/ecm/core/launch/ProcessEngineCommandBuilder.scala index 4b5b1fab9e1..b799241a66d 100644 --- a/linkis-computation-governance/linkis-engineconn-manager/linkis-engineconn-manager-core/src/main/scala/org/apache/linkis/ecm/core/launch/ProcessEngineCommandBuilder.scala +++ b/linkis-computation-governance/linkis-engineconn-manager/linkis-engineconn-manager-core/src/main/scala/org/apache/linkis/ecm/core/launch/ProcessEngineCommandBuilder.scala @@ -92,6 +92,28 @@ class UnixProcessEngineCommandBuilder extends ShellProcessEngineCommandBuilder { ) override def link(fromPath: String, toPath: String): Unit = { + // 只对 lib 目录执行物料替换脚本 + if (ECPCoreConf.MATERIAL_REPLACE_SCRIPT_PATH.nonEmpty && fromPath.endsWith("/lib")) { + newLine( + Array( + "if [ -x \"", + ECPCoreConf.MATERIAL_REPLACE_SCRIPT_PATH, + "\" ]; then" + ) + ) + newLine( + Array( + " \"", + ECPCoreConf.MATERIAL_REPLACE_SCRIPT_PATH, + "\" \"", + fromPath, + "\" \"", + toPath, + "\"" + ) + ) + newLine(Array("fi")) + } newLine(Array("ln -sf \"", fromPath, "\" \"", toPath, "\"")) addErrorCheck() } diff --git a/linkis-computation-governance/linkis-engineconn-manager/linkis-engineconn-manager-core/src/main/scala/org/apache/linkis/ecm/core/launch/ProcessEngineConnLaunch.scala b/linkis-computation-governance/linkis-engineconn-manager/linkis-engineconn-manager-core/src/main/scala/org/apache/linkis/ecm/core/launch/ProcessEngineConnLaunch.scala index da6ea2bc77c..9b0a2fb8f61 100644 --- a/linkis-computation-governance/linkis-engineconn-manager/linkis-engineconn-manager-core/src/main/scala/org/apache/linkis/ecm/core/launch/ProcessEngineConnLaunch.scala +++ b/linkis-computation-governance/linkis-engineconn-manager/linkis-engineconn-manager-core/src/main/scala/org/apache/linkis/ecm/core/launch/ProcessEngineConnLaunch.scala @@ -99,6 +99,8 @@ trait ProcessEngineConnLaunch extends EngineConnLaunch with Logging { val conf = CommonVars.apply(key, "") if (StringUtils.isNotBlank(conf.getValue)) environment.put(key, conf.getValue) } + // 获取引擎类型标签 + val engineTypeLabel = LabelUtil.getEngineTypeLabel(request.labels) Environment.values foreach { case USER => environment.put(USER.toString, request.user) case ECM_HOME => @@ -122,6 +124,13 @@ trait ProcessEngineConnLaunch extends EngineConnLaunch with Logging { case ENGINECONN_ENVKEYS => environment.put(ENGINECONN_ENVKEYS.toString, GovernanceCommonConf.ENGINECONN_ENVKEYS) case LINKIS_HOME => putIfExists(LINKIS_HOME) + case ENGINE_TYPE => + // 设置引擎类型环境变量,格式: engineType-version (如: hive-2.3.3) + if (engineTypeLabel != null) { + val engineType = engineTypeLabel.getEngineType + val version = engineTypeLabel.getVersion + environment.put(ENGINE_TYPE.toString, s"$engineType-$version") + } case _ => } } diff --git a/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-core/src/main/scala/org/apache/linkis/manager/engineplugin/common/launch/process/Environment.scala b/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-core/src/main/scala/org/apache/linkis/manager/engineplugin/common/launch/process/Environment.scala index f7ef3691dd1..444dac38e64 100644 --- a/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-core/src/main/scala/org/apache/linkis/manager/engineplugin/common/launch/process/Environment.scala +++ b/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-core/src/main/scala/org/apache/linkis/manager/engineplugin/common/launch/process/Environment.scala @@ -25,7 +25,7 @@ object Environment extends Enumeration { val USER, ECM_HOME, PWD, PATH, SHELL, JAVA_HOME, LINKIS_HOME, CLASSPATH, HADOOP_HOME, HADOOP_CONF_DIR, HIVE_CONF_DIR, LOG_DIRS, TEMP_DIRS, ECM_HOST, ECM_PORT, RANDOM_PORT, - SERVICE_DISCOVERY, PREFER_IP_ADDRESS, UDF_JARS, ENGINECONN_ENVKEYS = Value + SERVICE_DISCOVERY, PREFER_IP_ADDRESS, UDF_JARS, ENGINECONN_ENVKEYS, ENGINE_TYPE = Value def variable(environment: Environment): String = LaunchConstants.EXPANSION_MARKER_LEFT + environment + LaunchConstants.EXPANSION_MARKER_RIGHT