Maximilian Michels created FLINK-3667:
-----------------------------------------
Summary: Generalize client<->cluster communication
Key: FLINK-3667
URL: https://issues.apache.org/jira/browse/FLINK-3667
Project: Flink
Issue Type: Improvement
Components: YARN Client
Reporter: Maximilian Michels
Assignee: Maximilian Michels
Here are some notes I took when inspecting the client<->cluster classes with
regard to future integration of other resource management frameworks in
addition to Yarn (e.g. Mesos).
{noformat}
1 Cluster Client Abstraction
════════════════════════════
1.1 Status Quo
──────────────
1.1.1 FlinkYarnClient
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
• Holds the cluster configuration (Flink-specific and Yarn-specific)
• Contains the deploy() method to deploy the cluster
• Creates the Hadoop Yarn client
• Receives the initial job manager address
• Bootstraps the FlinkYarnCluster
1.1.2 FlinkYarnCluster
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
• Wrapper around the Hadoop Yarn client
• Queries cluster for status updates
• Life time methods to start and shutdown the cluster
• Flink specific features like shutdown after job completion
1.1.3 ApplicationClient
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
• Acts as a middle-man for asynchronous cluster communication
• Designed to communicate with Yarn, not used in Standalone mode
1.1.4 CliFrontend
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
• Deeply integrated with FlinkYarnClient and FlinkYarnCluster
• Constantly distinguishes between Yarn and Standalone mode
• Would be nice to have a general abstraction in place
1.1.5 Client
╌╌╌╌╌╌╌╌╌╌╌╌
• Job submission and Job related actions, agnostic of resource framework
1.2 Proposal
────────────
1.2.1 ClusterConfig (before: AbstractFlinkYarnClient)
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
• Extensible cluster-agnostic config
• May be extended by specific cluster, e.g. YarnClusterConfig
1.2.2 ClusterClient (before: AbstractFlinkYarnClient)
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
• Deals with cluster (RM) specific communication
• Exposes framework agnostic information
• YarnClusterClient, MesosClusterClient, StandaloneClusterClient
1.2.3 FlinkCluster (before: AbstractFlinkYarnCluster)
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
• Basic interface to communicate with a running cluster
• Receives the ClusterClient for cluster-specific communication
• Should not have to care about the specific implementations of the
client
1.2.4 ApplicationClient
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
• Can be changed to work cluster-agnostic (first steps already in
FLINK-3543)
1.2.5 CliFrontend
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
• CliFrontend does never have to differentiate between different
cluster types after it has determined which cluster class to load.
• Base class handles framework agnostic command line arguments
• Pluggables for Yarn, Mesos handle specific commands
{noformat}
I would like to create/refactor the affected classes to set us up for a more
flexible client side resource management abstraction.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)