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

Yang Wang commented on FLINK-24897:
-----------------------------------

Thanks for addressing the comments.

 
 # The {{usrlib}} should be shipped automatically. We could interrupt with 
exception if the user also specified a shipped {{{}usrlib{}}}.  This behavior 
makes sense to me.
 # The {{usrlib}} should also work for per-job mode.
 # Both for per-job and application mode, only when UserJarInclusion is 
configured to {{{}DISABLED{}}}, the {{usrlib}} will be shipped only and loaded 
by user classloader. Otherwise, it should work as user jars, which means all 
the jars in {{usrlib}} will be put into {{CUR_DIR}} and added to system 
classpath.

> Enable application mode on YARN to use usrlib
> ---------------------------------------------
>
>                 Key: FLINK-24897
>                 URL: https://issues.apache.org/jira/browse/FLINK-24897
>             Project: Flink
>          Issue Type: Improvement
>          Components: Deployment / YARN
>            Reporter: Biao Geng
>            Priority: Major
>
> Hi there, 
> I am working to utilize application mode to submit flink jobs to YARN cluster 
> but I find that currently there is no easy way to ship my user-defined 
> jars(e.g. some custom connectors or udf jars that would be shared by some 
> jobs) and ask the FlinkUserCodeClassLoader to load classes in these jars. 
> I checked some relevant jiras, like  FLINK-21289. In k8s mode, there is a 
> solution that users can use `usrlib` directory to store their user-defined 
> jars and these jars would be loaded by FlinkUserCodeClassLoader when the job 
> is executed on JM/TM.
> But on YARN mode, `usrlib` does not work as that:
> In this method(org.apache.flink.yarn.YarnClusterDescriptor#addShipFiles), if 
> I want to use `yarn.ship-files` to ship `usrlib` from my flink client(in my 
> local machine) to remote cluster, I must not set  UserJarInclusion to 
> DISABLED due to the checkArgument(). However, if I do not set that option to 
> DISABLED, the user jars to be shipped will be added into systemClassPaths. As 
> a result, classes in those user jars will be loaded by AppClassLoader. 
> But if I do not ship these jars, there is no convenient way to utilize these 
> jars in my flink run command. Currently, all I can do seems to use `-C` 
> option, which means I have to upload my jars to some shared store first and 
> then use these remote paths. It is not so perfect as we have already make it 
> possible to ship jars or files directly and we also introduce `usrlib` in 
> application mode on YARN. It would be more user-friendly if we can allow 
> shipping `usrlib` from local to remote cluster while using 
> FlinkUserCodeClassLoader to load classes in the jars in `usrlib`.
>  



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to