You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Yang Wang (Jira)" <ji...@apache.org> on 2021/01/13 02:43:00 UTC

[jira] [Commented] (FLINK-20935) can't write flink configuration to tmp file and add it to local resource in yarn session mode

    [ https://issues.apache.org/jira/browse/FLINK-20935?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17263844#comment-17263844 ] 

Yang Wang commented on FLINK-20935:
-----------------------------------

TBH, I do not completely understand your problem. IIRC, the hadoop path will use a local schema if it is not specified explicitly.

I guess you have configured the {{fs.default-scheme}} to a distributed schema(e.g. HDFS) in your flink-conf.yaml. If it is, then it could explain why "/tmp/application_1573723355201_0036-flink-conf.yaml688141408443326132.tmp" is treated as a remote path.

> can't write flink configuration to tmp file and add it to local resource in yarn session mode
> ---------------------------------------------------------------------------------------------
>
>                 Key: FLINK-20935
>                 URL: https://issues.apache.org/jira/browse/FLINK-20935
>             Project: Flink
>          Issue Type: Bug
>          Components: Deployment / YARN
>    Affects Versions: 1.12.0, 1.13.0
>            Reporter: yuemeng
>            Priority: Major
>              Labels: pull-request-available
>
> In flink 1.12.0 or lastest version,when we execute command such as bin/yarn-session.sh -n 20 -jm 9096 -nm 4096 -st,the depoy will be failed with follow errors:
> {code}
> org.apache.flink.client.deployment.ClusterDeploymentException: Couldn't deploy Yarn session cluster
> 	at org.apache.flink.yarn.YarnClusterDescriptor.deploySessionCluster(YarnClusterDescriptor.java:411)
> 	at org.apache.flink.yarn.cli.FlinkYarnSessionCli.run(FlinkYarnSessionCli.java:498)
> 	at org.apache.flink.yarn.cli.FlinkYarnSessionCli.lambda$main$4(FlinkYarnSessionCli.java:730)
> 	at java.security.AccessController.doPrivileged(Native Method)
> 	at javax.security.auth.Subject.doAs(Subject.java:422)
> 	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1754)
> 	at org.apache.flink.runtime.security.contexts.HadoopSecurityContext.runSecured(HadoopSecurityContext.java:41)
> 	at org.apache.flink.yarn.cli.FlinkYarnSessionCli.main(FlinkYarnSessionCli.java:730)
> Caused by: java.io.FileNotFoundException: File does not exist: /tmp/application_1573723355201_0036-flink-conf.yaml688141408443326132.tmp
> 	at org.apache.hadoop.hdfs.DistributedFileSystem$22.doCall(DistributedFileSystem.java:1309)
> {code}
> when we called startAppMaster method in YarnClusterDescriptor,it will be try to write flink configuration to tmp file and add it to local resource. but the follow code will make the tmp file system as a distribute file system
> {code}
> // Upload the flink configuration
> 		// write out configuration file
> 		File tmpConfigurationFile = null;
> 		try {
> 			tmpConfigurationFile = File.createTempFile(appId + "-flink-conf.yaml", null);
> 			BootstrapTools.writeConfiguration(configuration, tmpConfigurationFile);
> 			String flinkConfigKey = "flink-conf.yaml";
> 			fileUploader.registerSingleLocalResource(
> 				flinkConfigKey,
> 				new Path(tmpConfigurationFile.getAbsolutePath()),
> 				"",
> 				LocalResourceType.FILE,
> 				true,
> 				true);
> 			classPathBuilder.append("flink-conf.yaml").append(File.pathSeparator);
> 		} finally {
> 			if (tmpConfigurationFile != null && !tmpConfigurationFile.delete()) {
> 				LOG.warn("Fail to delete temporary file {}.", tmpConfigurationFile.toPath());
> 			}
> 		}
> {code}
> {code} tmpConfigurationFile.getAbsolutePath() {code} method will be return a path without file schema and the file system will be considered as a distribute file system



--
This message was sent by Atlassian Jira
(v8.3.4#803005)