Prism is an RPC server running on each computer of a cluster. It can deploy binaries from HDFS to local filesystem and run these binaries with fault recovery. It depends on the file package to handle files across different file systems.
Application program utilize Prism_servers via Prism_client to launch distributed programs.
| S1 | S2 | ... Sk |
|------------------|
| HDFS |
| |
Si is the ith Prism server.
The Prism_client bridges application and Prism_servers by providing interfaces for the following functions.
- Publish
- zip some executable files and put the package in the shared file system.
- Deploy
- Contact a Prism_server to copy the zip file and unpack the executables to the server's local directory
- Launch
- Contact a Prism_server to run the executables. It also assumes the executables will listen on a predefined port for future communications
- Kill
- Contact a Prism_server to terminate a program
- Use the rpc.DialHTTP to connect to a Prism_server
- Help the application to prepare and pack programs by Publish
- Notify the server to do one of the following jobs
- Deploy (Let the server copy the prepared program to its local dir and unpack it)
- Launch (Let the server run the unpacked program)
- Kill (Let the server teminate it)
- Register itself as a rpc server and listen to HTTP requests
- Deploy (copy the executable to local. Cross filesystem file handles using file
- Launch (Create a new goroutine to run the executable. If the running instance failed unintentionally, Prism will retry Launch, up to a number of times. This mechanism is critical to fault recovery and distributed computation applications)
- Kill (Terminate the running instance)