Search in sources :

Example 1 with FlinkConfig

use of com.dtstack.taier.flink.FlinkConfig in project Taier by DTStack.

the class AbstractClientFactoryTest method testSetHdfsFlinkJarPath.

@Test
public void testSetHdfsFlinkJarPath() {
    FlinkConfig flinkConfig = new FlinkConfig();
    flinkConfig.setRemotePluginRootDir("/data/insight_plugin/flinkplugin");
    Configuration flinkConfiguration = abstractClientFactory.setHdfsFlinkJarPath(flinkConfig, new Configuration());
    Assert.assertFalse(flinkConfiguration.containsKey("remoteFlinkJarPath"));
    Assert.assertFalse(flinkConfiguration.containsKey("remotePluginRootDir"));
    Assert.assertFalse(flinkConfiguration.containsKey("flinkJarPath"));
    Assert.assertFalse(flinkConfiguration.containsKey("flinkPluginRoot"));
    flinkConfig.setRemoteFlinkJarPath("hdfs://ns/110_flinkplugin/");
    flinkConfiguration = abstractClientFactory.setHdfsFlinkJarPath(flinkConfig, new Configuration());
    Assert.assertFalse(flinkConfiguration.containsKey("remoteFlinkJarPath"));
    Assert.assertFalse(flinkConfiguration.containsKey("remotePluginRootDir"));
    Assert.assertFalse(flinkConfiguration.containsKey("flinkJarPath"));
    Assert.assertFalse(flinkConfiguration.containsKey("flinkPluginRoot"));
    flinkConfig.setRemotePluginRootDir("hdfs://ns/data/insight_plugin/flinkplugin");
    flinkConfig.setFlinkJarPath("/data/dtInsight/flink110/flink-1.10.1");
    flinkConfig.setFlinkPluginRoot("/data/insight_plugin/flinkplugin");
    flinkConfiguration = abstractClientFactory.setHdfsFlinkJarPath(flinkConfig, new Configuration());
    Assert.assertTrue(flinkConfiguration.containsKey("remoteFlinkJarPath"));
    Assert.assertTrue(flinkConfiguration.containsKey("remotePluginRootDir"));
    Assert.assertTrue(flinkConfiguration.containsKey("flinkJarPath"));
    Assert.assertTrue(flinkConfiguration.containsKey("flinkPluginRoot"));
}
Also used : FlinkConfig(com.dtstack.taier.flink.FlinkConfig) Configuration(org.apache.flink.configuration.Configuration) Test(org.junit.Test)

Example 2 with FlinkConfig

use of com.dtstack.taier.flink.FlinkConfig in project Taier by DTStack.

the class AbstractClientFactory method createClientFactory.

public static IClientFactory createClientFactory(FlinkClientBuilder flinkClientBuilder) {
    FlinkConfig flinkConfig = flinkClientBuilder.getFlinkConfig();
    ClusterMode clusterMode = ClusterMode.getClusteMode(flinkConfig.getClusterMode());
    IClientFactory clientFactory;
    switch(clusterMode) {
        case PER_JOB:
            clientFactory = new PerJobClientFactory(flinkClientBuilder);
            break;
        case SESSION:
            clientFactory = new SessionClientFactory(flinkClientBuilder);
            break;
        case STANDALONE:
            clientFactory = new StandaloneClientFactory(flinkClientBuilder);
            break;
        default:
            throw new PluginDefineException("not support clusterMode: " + clusterMode);
    }
    return clientFactory;
}
Also used : FlinkConfig(com.dtstack.taier.flink.FlinkConfig) ClusterMode(com.dtstack.taier.flink.base.enums.ClusterMode) PluginDefineException(com.dtstack.taier.pluginapi.exception.PluginDefineException)

Example 3 with FlinkConfig

use of com.dtstack.taier.flink.FlinkConfig in project Taier by DTStack.

the class SyncPluginInfoTest method testCreateSyncPluginArgs.

@Test
public void testCreateSyncPluginArgs() {
    JobClient jobClient = new JobClient();
    jobClient.setClassArgs("-jobid flink_test_stream");
    jobClient.setComputeType(ComputeType.STREAM);
    Whitebox.setInternalState(jobClient, "confProperties", new Properties());
    FlinkConfig flinkConfig = new FlinkConfig();
    flinkConfig.setRemoteFlinkJarPath("/opt/dtstack/110_flinkplugin/");
    flinkConfig.setFlinkPluginRoot("/opt/dtstack/110_flinkplugin/");
    flinkConfig.setMonitorAddress("http://localhost:8088");
    flinkConfig.setPluginLoadMode("shipfile");
    SyncPluginInfo syncPluginInfo = SyncPluginInfo.create(flinkConfig);
    List<String> args = syncPluginInfo.createSyncPluginArgs(jobClient, new FlinkClient());
    String result = new Gson().toJson(args);
    String expectStr = "[\"-jobid\",\"flink_test_stream\",\"-monitor\",\"http://localhost:8088\",\"-pluginLoadMode\",\"shipfile\",\"-mode\",\"yarnPer\"]";
    Assert.assertEquals(expectStr, result);
}
Also used : FlinkClient(com.dtstack.taier.flink.FlinkClient) FlinkConfig(com.dtstack.taier.flink.FlinkConfig) Gson(com.google.gson.Gson) Properties(java.util.Properties) JobClient(com.dtstack.taier.pluginapi.JobClient) Test(org.junit.Test)

Example 4 with FlinkConfig

use of com.dtstack.taier.flink.FlinkConfig in project Taier by DTStack.

the class SessionClientFactory method createYarnSessionClusterDescriptor.

public YarnClusterDescriptor createYarnSessionClusterDescriptor() throws MalformedURLException {
    Configuration newConf = new Configuration(flinkConfiguration);
    String flinkJarPath = flinkConfig.getFlinkJarPath();
    String pluginLoadMode = flinkConfig.getPluginLoadMode();
    YarnConfiguration yarnConf = flinkClientBuilder.getYarnConf();
    FileUtil.checkFileExist(flinkJarPath);
    if (!flinkConfig.getFlinkHighAvailability()) {
        setNoneHaModeConfig(newConf);
    } else {
        // 由engine管控的yarnsession clusterId不进行设置,默认使用appId作为clusterId
        newConf.removeConfig(HighAvailabilityOptions.HA_CLUSTER_ID);
    }
    List<File> keytabFiles = null;
    if (flinkConfig.isOpenKerberos()) {
        keytabFiles = getKeytabFilesAndSetSecurityConfig(newConf);
    }
    newConf = setHdfsFlinkJarPath(flinkConfig, newConf);
    YarnClusterDescriptor clusterDescriptor = getClusterDescriptor(newConf, yarnConf);
    if (StringUtils.isNotBlank(pluginLoadMode) && ConfigConstrant.FLINK_PLUGIN_SHIPFILE_LOAD.equalsIgnoreCase(pluginLoadMode)) {
        newConf.setString(ConfigConstrant.FLINK_PLUGIN_LOAD_MODE, flinkConfig.getPluginLoadMode());
        String flinkPluginRoot = flinkConfig.getFlinkPluginRoot();
        if (StringUtils.isNotBlank(flinkPluginRoot)) {
            String syncPluginDir = flinkPluginRoot + ConfigConstrant.SP + ConfigConstrant.SYNCPLUGIN_DIR;
            File syncFile = new File(syncPluginDir);
            if (!syncFile.exists()) {
                throw new PluginDefineException("syncPlugin path is null");
            }
            List<File> pluginPaths = Arrays.stream(syncFile.listFiles()).filter(file -> !file.getName().endsWith("zip")).collect(Collectors.toList());
            clusterDescriptor.addShipFiles(pluginPaths);
        }
    }
    if (CollectionUtils.isNotEmpty(keytabFiles)) {
        clusterDescriptor.addShipFiles(keytabFiles);
    }
    List<URL> classpaths = getFlinkJarFile(flinkJarPath, clusterDescriptor);
    clusterDescriptor.setProvidedUserJarFiles(classpaths);
    return clusterDescriptor;
}
Also used : SessionCheckInterval(com.dtstack.taier.flink.entity.SessionCheckInterval) SecurityOptions(org.apache.flink.configuration.SecurityOptions) Arrays(java.util.Arrays) FlinkConfUtil(com.dtstack.taier.flink.util.FlinkConfUtil) ClientUtils(org.apache.flink.client.ClientUtils) FileSystem(org.apache.hadoop.fs.FileSystem) URL(java.net.URL) JobGraph(org.apache.flink.runtime.jobgraph.JobGraph) LoggerFactory(org.slf4j.LoggerFactory) ErrorMessageConsts(com.dtstack.taier.flink.constrant.ErrorMessageConsts) YarnClusterDescriptor(org.apache.flink.yarn.YarnClusterDescriptor) StringUtils(org.apache.commons.lang3.StringUtils) CuratorFramework(org.apache.flink.shaded.curator.org.apache.curator.framework.CuratorFramework) KerberosUtils(com.dtstack.taier.base.util.KerberosUtils) LeaderLatchListener(org.apache.flink.shaded.curator.org.apache.curator.framework.recipes.leader.LeaderLatchListener) ExponentialBackoffRetry(org.apache.flink.shaded.curator.org.apache.curator.retry.ExponentialBackoffRetry) ProgramMissingJobException(org.apache.flink.client.program.ProgramMissingJobException) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) FlinkConfig(com.dtstack.taier.flink.FlinkConfig) Map(java.util.Map) ApplicationReport(org.apache.hadoop.yarn.api.records.ApplicationReport) Path(org.apache.hadoop.fs.Path) CuratorFrameworkFactory(org.apache.flink.shaded.curator.org.apache.curator.framework.CuratorFrameworkFactory) EnumSet(java.util.EnumSet) TaskStatus(com.dtstack.taier.pluginapi.enums.TaskStatus) JobIdentifier(com.dtstack.taier.pluginapi.JobIdentifier) LeaderLatch(org.apache.flink.shaded.curator.org.apache.curator.framework.recipes.leader.LeaderLatch) Set(java.util.Set) JobManagerOptions(org.apache.flink.configuration.JobManagerOptions) LinkedBlockingQueue(java.util.concurrent.LinkedBlockingQueue) Collectors(java.util.stream.Collectors) CheckpointingOptions(org.apache.flink.configuration.CheckpointingOptions) YarnConfigOptions(org.apache.flink.yarn.configuration.YarnConfigOptions) JobExecutionResult(org.apache.flink.api.common.JobExecutionResult) List(java.util.List) ApplicationId(org.apache.hadoop.yarn.api.records.ApplicationId) FileUtil(com.dtstack.taier.flink.util.FileUtil) ClusterClient(org.apache.flink.client.program.ClusterClient) ConfigConstant(com.dtstack.taier.pluginapi.constrant.ConfigConstant) PoolHttpClient(com.dtstack.taier.pluginapi.http.PoolHttpClient) YarnApplicationState(org.apache.hadoop.yarn.api.records.YarnApplicationState) JSONObject(com.alibaba.fastjson.JSONObject) PackagedProgram(org.apache.flink.client.program.PackagedProgram) ClusterClientProvider(org.apache.flink.client.program.ClusterClientProvider) FlinkException(org.apache.flink.util.FlinkException) ConfigConstrant(com.dtstack.taier.flink.constrant.ConfigConstrant) FlinkClientBuilder(com.dtstack.taier.flink.FlinkClientBuilder) ThreadPoolExecutor(java.util.concurrent.ThreadPoolExecutor) YarnClient(org.apache.hadoop.yarn.client.api.YarnClient) ClusterSpecification(org.apache.flink.client.deployment.ClusterSpecification) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) HashMap(java.util.HashMap) CustomThreadFactory(com.dtstack.taier.pluginapi.CustomThreadFactory) YarnConfiguration(org.apache.hadoop.yarn.conf.YarnConfiguration) HashSet(java.util.HashSet) Lists(com.google.common.collect.Lists) CollectionUtils(org.apache.commons.collections.CollectionUtils) Service(org.apache.hadoop.service.Service) SessionHealthCheckedInfo(com.dtstack.taier.flink.entity.SessionHealthCheckedInfo) ExecutorService(java.util.concurrent.ExecutorService) FlinkUtil(com.dtstack.taier.flink.util.FlinkUtil) PackagedProgramUtils(org.apache.flink.client.program.PackagedProgramUtils) Logger(org.slf4j.Logger) MalformedURLException(java.net.MalformedURLException) Configuration(org.apache.flink.configuration.Configuration) IOException(java.io.IOException) FilesystemManager(com.dtstack.taier.base.filesystem.FilesystemManager) File(java.io.File) TimeUnit(java.util.concurrent.TimeUnit) JSON(com.alibaba.fastjson.JSON) JobID(org.apache.flink.api.common.JobID) PluginDefineException(com.dtstack.taier.pluginapi.exception.PluginDefineException) SavepointRestoreSettings(org.apache.flink.runtime.jobgraph.SavepointRestoreSettings) HighAvailabilityOptions(org.apache.flink.configuration.HighAvailabilityOptions) YarnConfiguration(org.apache.hadoop.yarn.conf.YarnConfiguration) Configuration(org.apache.flink.configuration.Configuration) YarnConfiguration(org.apache.hadoop.yarn.conf.YarnConfiguration) PluginDefineException(com.dtstack.taier.pluginapi.exception.PluginDefineException) YarnClusterDescriptor(org.apache.flink.yarn.YarnClusterDescriptor) File(java.io.File) URL(java.net.URL)

Aggregations

FlinkConfig (com.dtstack.taier.flink.FlinkConfig)4 PluginDefineException (com.dtstack.taier.pluginapi.exception.PluginDefineException)2 JSON (com.alibaba.fastjson.JSON)1 JSONObject (com.alibaba.fastjson.JSONObject)1 FilesystemManager (com.dtstack.taier.base.filesystem.FilesystemManager)1 KerberosUtils (com.dtstack.taier.base.util.KerberosUtils)1 FlinkClient (com.dtstack.taier.flink.FlinkClient)1 FlinkClientBuilder (com.dtstack.taier.flink.FlinkClientBuilder)1 ClusterMode (com.dtstack.taier.flink.base.enums.ClusterMode)1 ConfigConstrant (com.dtstack.taier.flink.constrant.ConfigConstrant)1 ErrorMessageConsts (com.dtstack.taier.flink.constrant.ErrorMessageConsts)1 SessionCheckInterval (com.dtstack.taier.flink.entity.SessionCheckInterval)1 SessionHealthCheckedInfo (com.dtstack.taier.flink.entity.SessionHealthCheckedInfo)1 FileUtil (com.dtstack.taier.flink.util.FileUtil)1 FlinkConfUtil (com.dtstack.taier.flink.util.FlinkConfUtil)1 FlinkUtil (com.dtstack.taier.flink.util.FlinkUtil)1 CustomThreadFactory (com.dtstack.taier.pluginapi.CustomThreadFactory)1 JobClient (com.dtstack.taier.pluginapi.JobClient)1 JobIdentifier (com.dtstack.taier.pluginapi.JobIdentifier)1 ConfigConstant (com.dtstack.taier.pluginapi.constrant.ConfigConstant)1