|
|
@ -17,8 +17,10 @@ |
|
|
|
|
|
|
|
|
|
|
|
package org.apache.dolphinscheduler.plugin.datasource.hive; |
|
|
|
package org.apache.dolphinscheduler.plugin.datasource.hive; |
|
|
|
|
|
|
|
|
|
|
|
import com.google.common.util.concurrent.ThreadFactoryBuilder; |
|
|
|
import static org.apache.dolphinscheduler.plugin.task.api.TaskConstants.HADOOP_SECURITY_AUTHENTICATION_STARTUP_STATE; |
|
|
|
import com.zaxxer.hikari.HikariDataSource; |
|
|
|
import static org.apache.dolphinscheduler.plugin.task.api.TaskConstants.JAVA_SECURITY_KRB5_CONF; |
|
|
|
|
|
|
|
import static org.apache.dolphinscheduler.plugin.task.api.TaskConstants.JAVA_SECURITY_KRB5_CONF_PATH; |
|
|
|
|
|
|
|
|
|
|
|
import org.apache.dolphinscheduler.plugin.datasource.api.client.CommonDataSourceClient; |
|
|
|
import org.apache.dolphinscheduler.plugin.datasource.api.client.CommonDataSourceClient; |
|
|
|
import org.apache.dolphinscheduler.plugin.datasource.api.provider.JDBCDataSourceProvider; |
|
|
|
import org.apache.dolphinscheduler.plugin.datasource.api.provider.JDBCDataSourceProvider; |
|
|
|
import org.apache.dolphinscheduler.plugin.datasource.hive.utils.CommonUtil; |
|
|
|
import org.apache.dolphinscheduler.plugin.datasource.hive.utils.CommonUtil; |
|
|
@ -27,11 +29,9 @@ import org.apache.dolphinscheduler.spi.enums.DbType; |
|
|
|
import org.apache.dolphinscheduler.spi.utils.Constants; |
|
|
|
import org.apache.dolphinscheduler.spi.utils.Constants; |
|
|
|
import org.apache.dolphinscheduler.spi.utils.PropertyUtils; |
|
|
|
import org.apache.dolphinscheduler.spi.utils.PropertyUtils; |
|
|
|
import org.apache.dolphinscheduler.spi.utils.StringUtils; |
|
|
|
import org.apache.dolphinscheduler.spi.utils.StringUtils; |
|
|
|
|
|
|
|
|
|
|
|
import org.apache.hadoop.conf.Configuration; |
|
|
|
import org.apache.hadoop.conf.Configuration; |
|
|
|
import org.apache.hadoop.security.UserGroupInformation; |
|
|
|
import org.apache.hadoop.security.UserGroupInformation; |
|
|
|
import org.slf4j.Logger; |
|
|
|
|
|
|
|
import org.slf4j.LoggerFactory; |
|
|
|
|
|
|
|
import sun.security.krb5.Config; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.io.IOException; |
|
|
|
import java.io.IOException; |
|
|
|
import java.lang.reflect.Field; |
|
|
|
import java.lang.reflect.Field; |
|
|
@ -41,7 +41,12 @@ import java.util.concurrent.Executors; |
|
|
|
import java.util.concurrent.ScheduledExecutorService; |
|
|
|
import java.util.concurrent.ScheduledExecutorService; |
|
|
|
import java.util.concurrent.TimeUnit; |
|
|
|
import java.util.concurrent.TimeUnit; |
|
|
|
|
|
|
|
|
|
|
|
import static org.apache.dolphinscheduler.plugin.task.api.TaskConstants.*; |
|
|
|
import org.slf4j.Logger; |
|
|
|
|
|
|
|
import org.slf4j.LoggerFactory; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.google.common.util.concurrent.ThreadFactoryBuilder; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import sun.security.krb5.Config; |
|
|
|
|
|
|
|
|
|
|
|
public class HiveDataSourceClient extends CommonDataSourceClient { |
|
|
|
public class HiveDataSourceClient extends CommonDataSourceClient { |
|
|
|
|
|
|
|
|
|
|
@ -50,7 +55,6 @@ public class HiveDataSourceClient extends CommonDataSourceClient { |
|
|
|
private ScheduledExecutorService kerberosRenewalService; |
|
|
|
private ScheduledExecutorService kerberosRenewalService; |
|
|
|
|
|
|
|
|
|
|
|
private Configuration hadoopConf; |
|
|
|
private Configuration hadoopConf; |
|
|
|
protected HikariDataSource oneSessionDataSource; |
|
|
|
|
|
|
|
private UserGroupInformation ugi; |
|
|
|
private UserGroupInformation ugi; |
|
|
|
private boolean retryGetConnection = true; |
|
|
|
private boolean retryGetConnection = true; |
|
|
|
|
|
|
|
|
|
|
@ -76,7 +80,7 @@ public class HiveDataSourceClient extends CommonDataSourceClient { |
|
|
|
logger.info("Create ugi success."); |
|
|
|
logger.info("Create ugi success."); |
|
|
|
|
|
|
|
|
|
|
|
super.initClient(baseConnectionParam, dbType); |
|
|
|
super.initClient(baseConnectionParam, dbType); |
|
|
|
this.oneSessionDataSource = JDBCDataSourceProvider.createOneSessionJdbcDataSource(baseConnectionParam, dbType); |
|
|
|
this.dataSource = JDBCDataSourceProvider.createOneSessionJdbcDataSource(baseConnectionParam, dbType); |
|
|
|
logger.info("Init {} success.", getClass().getName()); |
|
|
|
logger.info("Init {} success.", getClass().getName()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -144,7 +148,7 @@ public class HiveDataSourceClient extends CommonDataSourceClient { |
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public Connection getConnection() { |
|
|
|
public Connection getConnection() { |
|
|
|
try { |
|
|
|
try { |
|
|
|
return oneSessionDataSource.getConnection(); |
|
|
|
return dataSource.getConnection(); |
|
|
|
} catch (SQLException e) { |
|
|
|
} catch (SQLException e) { |
|
|
|
boolean kerberosStartupState = PropertyUtils.getBoolean(HADOOP_SECURITY_AUTHENTICATION_STARTUP_STATE, false); |
|
|
|
boolean kerberosStartupState = PropertyUtils.getBoolean(HADOOP_SECURITY_AUTHENTICATION_STARTUP_STATE, false); |
|
|
|
if (retryGetConnection && kerberosStartupState) { |
|
|
|
if (retryGetConnection && kerberosStartupState) { |
|
|
@ -166,8 +170,5 @@ public class HiveDataSourceClient extends CommonDataSourceClient { |
|
|
|
logger.info("close {}.", this.getClass().getSimpleName()); |
|
|
|
logger.info("close {}.", this.getClass().getSimpleName()); |
|
|
|
kerberosRenewalService.shutdown(); |
|
|
|
kerberosRenewalService.shutdown(); |
|
|
|
this.ugi = null; |
|
|
|
this.ugi = null; |
|
|
|
|
|
|
|
|
|
|
|
this.oneSessionDataSource.close(); |
|
|
|
|
|
|
|
this.oneSessionDataSource = null; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|