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

Shuyi Chen commented on FLINK-13132:
------------------------------------

Hi [~till.rohrmann], as [~ZhenqiuHuang] mentioned, we have a central deployer 
service managing 1000+ production jobs. Normally, when the YARN cluster is 
healthy, the deployment request rate to the deployer service is relatively low, 
<1qps. However, in case of cluster maintenance or cluster failures, the 
deployer service will be overwhelmed with deployment requests for, in worst 
case, all 1000+ production jobs in a short period of time. 

If we generate the job graph in the client side, which means that job graph 
generation happens in the deployer service in our case, we need to download the 
job jar to the deployer service in order to generate the job graph. In case of 
the entire YARN cluster failure we mentioned above, the deployer service, which 
normally have only a few instances, will become bottleneck both in network & 
CPU/memory because it needs to download all 1000+ job jars and generate all job 
graphs in a short time, which is about 100GB (say 100MB per job jar on 
average). And this will violate our SLA, or we have to overprovision the 
deployer service by a lot to spread out both the network and the cpu/memory 
load. However, if we generate the job graph in the Job Entrypoint, the load 
will naturally distribute among all nodes across the YARN cluster (i.e., a few 
hundreds worker nodes on tens of racks), and this is more scalable & resource 
efficient.

As for the non-deterministic problem, could we generate the job graph once when 
the job is first started, and save the generated job graph in zookeeper, and 
when master failover happens, we just use the generated job graph in zookeeper 
to restart the job? Thanks.

> Allow ClusterEntrypoints use user main method to generate job graph
> -------------------------------------------------------------------
>
>                 Key: FLINK-13132
>                 URL: https://issues.apache.org/jira/browse/FLINK-13132
>             Project: Flink
>          Issue Type: Improvement
>          Components: Deployment / YARN
>    Affects Versions: 1.8.0, 1.8.1
>            Reporter: Zhenqiu Huang
>            Assignee: Zhenqiu Huang
>            Priority: Minor
>
> We are building a service that can transparently deploy a job to different 
> cluster management systems, such as Yarn and another internal system. It is 
> very cost to download the jar and generate JobGraph in the client side. Thus, 
> I want to propose an improvement to make Yarn Entrypoints can be configurable 
> to use either FileJobGraphRetriever or ClassPathJobGraphRetriever. It is 
> actually a long asking TODO in AbstractionYarnClusterDescriptor in line 834.
> https://github.com/apache/flink/blob/21468e0050dc5f97de5cfe39885e0d3fd648e399/flink-yarn/src/main/java/org/apache/flink/yarn/AbstractYarnClusterDescriptor.java#L834



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to