[ 
https://issues.apache.org/jira/browse/SPARK-47951?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Hyukjin Kwon resolved SPARK-47951.
----------------------------------
    Resolution: Duplicate

Duplicate of SPARK-47952 (identical user story and summary, filed by the same 
reporter ~4 minutes later; 47952 was resolved via PR #46182).

> Support retrieving the real SparkConnectService GRPC address and port 
> programmatically when running on Yarn
> -----------------------------------------------------------------------------------------------------------
>
>                 Key: SPARK-47951
>                 URL: https://issues.apache.org/jira/browse/SPARK-47951
>             Project: Spark
>          Issue Type: Story
>          Components: Connect
>    Affects Versions: 4.0.0
>            Reporter: TakawaAkirayo
>            Priority: Minor
>
> 1. {*}User Story{*}:
> Our data analysts and data scientists use Jupyter notebooks provisioned on 
> Kubernetes (k8s) with limited CPU/memory resources to run Spark-shell/pyspark 
> in the terminal via Yarn Client mode.
> However, Yarn Client mode consumes significant local memory if the job is 
> heavy, and the total resource pool of k8s for notebooks is limited.
> To leverage the abundant resources of our Hadoop cluster for scalability 
> purposes, we aim to utilize SparkConnect.
> This allows the driver on Yarn with SparkConnectService started and uses 
> SparkConnect client to connect to the remote driver.
> To provide a seamless experience with one command startup for both server and 
> client, we've wrapped the following processes in one script:
> 1). Start a local coordinator server (implemented by us internally, not in 
> this PR) in the host of jupyter notebook.
> 2). Start SparkConnectServer by spark-submit via Yarn Cluster mode with 
> user-input Spark configurations and the local coordinator server's address 
> and port.
>     Append an additional listener class in the configuration for 
> SparkConnectService callback with the actual address and port on Yarn to the 
> coordinator server.
> 3). Wait for the coordinator server to receive the address callback from the 
> SparkConnectService on Yarn and export the real address.
> 4). Start the client (pyspark --remote $callback_address) with the remote 
> address.
> 2. {*}Problem statement of this change{*}:
> 1). The specified port for the SparkConnectService GRPC server might be 
> occupied on the node of the Hadoop Cluster.
>     To increase the success rate of startup, it needs to retry on conflicts 
> rather than fail directly.
> 2). Because the final binding port could be uncertain based on #1 when retry 
> and the remote address is unpredictable on Yarn,
>     we need to retrieve the address and port programmatically and inject it 
> automatically on the start of `pyspark --remote`.
>     To get the address of SparkConnectService on Yarn programmatically, The 
> SparkConnectService needs to communicate its location back to the launcher 
> side.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to