Hi Spark dev community:

I have several questions regarding Application and Spark communication

1) Application Level Progress Monitoring

Currently, our application using in YARN_CLUSTER model running Spark Jobs.
This works well so far, but we would like to monitoring the application
level progress ( not spark system level progress).

For example,
If we are doing Machine Learning Training, I would like to send some
message back the our application, current status of the training, number of
iterations etc via API.

We can't use YARN_CLIENT mode for this purpose as we are running the spark
application in servlet container (tomcat/Jetty). If we run the yarn_client
mode, we will be limited to one SparkContext per JVM.

So we are considering to leverage Akka messaging, essentially create
another Actor to send message back to the client application.
Notice that Spark already has an Akka ActorSystem defined for each
Executor. All we need to find Actor address (host, port) for the spark
driver executor.

The trouble is that driver's host and port are not known until later when
Resource Manager give to the executor node. How to communicate the host,
port info back to the client application ?

May be there is an Yarn API to obtain this information from Yarn Client.


2) Application and Spark Job communication In YARN Cluster mode.

    There are several use cases we are thinking may require communication
between the client side application and Spark Running Job.

     One example,
       * Try to stop a running job -- while job is running, abort the long
running job in Yarn

      Again, we are think to use Akka Actor to send a STOP job message.



So here some of  questions:

* Is there any work regarding this area in the community ?

* what do you think the Akka approach ? Alternatives ?

* Is there a way to get Spark's Akka host and port from Yarn Resource
Manager to Yarn Client ?

Any suggestions welcome

Thanks
Chester

Reply via email to