Header Header

Zorilla

What is Zorilla?

Zorilla is prototype Peer-to-Peer(P2P) grid middleware system. It strives to implement all functionality needed to run applications on a grid in a fully distributed manner, such as scheduling, file transfer and security.

Zorilla is designed to be used in situations where a full-blown grid environment is not needed, or simply not possible. Deployment of Zorilla is easy; only a single application needs to be installed on the participating machines. Zorilla requires little configuration, since machines automatically organize themselves into a grid. Due to its Peer-to-Peer design, Zorilla scales to large numbers of machines.

How does Zorilla work?

Zorilla is build-up around a Peer-to-Peer overlay network. This network consists of a (possibly large) number of Zorilla nodes. These nodes work together to handle any work, or jobs, put in by one or more users. A job can be submitted at any node in the system. This node will then look for the resources required by the job, by sending a request to other Zorilla nodes in the P2P network.

See the picture below for an overview of the different actions needed to run jobs:

the Zorilla life-cycle

Bootstrap
Before a node can join the P2P network, some initial contact point within this network is needed. Zorilla will search for nodes using UDP broadcast, which is able to find nodes in the same local network. Alternatively, a user can also supply one or more nodes to contact.
Gossiping
After bootstrapping, a Zorilla nodes starts exchanging information, or Gossiping, with other nodes (or peers). The gossiping is used to exchange information about peers, such as location, contact address, etc. Because of the nature of the "ARRG" algorithm used, each Zorilla node will have a list consisting of a constantly changing random set of peers. For more information, see the HPDC 2007 paper in the publications section.
Clustering
Using the random stream of peers, a node then build up a list of neighbours: peers which are close-by to itself. This allows a node to do a "local" search of the network, by contacting its neighbours.
Scheduler
When a user submits a job to his or her local Zorilla node, this node starts looking for resources. This is done by contacting other nodes in the network, an requesting them to "help out" with this job. Nodes are contacting using a bounded flooding mechanism. First, resources are searched for at the neighbours found using the clustering mechanism. Then, resources are search at the neighbours of these neighbours, and so on. This allows a nodes to find resources "close-by". For more information, see the GP2P 2006 paper in the publications section.
Job
Once the needed resources are available, Zorilla will create a distributed Job object and copy the executable and any input files given by the user to all the nodes participating in the job. The nodes will together keep track of the state of the job, such as if the job was terminated, if any output files need to be returned to the user, etc.
Application
Finally, the application is started on all participating nodes simultaneously. For security reasons, Zorilla is able to sandbox applications using the Java Virtual Machine (JVM). This does require the application to be written in Java though.

How do I use Zorilla?

To start using Zorilla, first download Zorilla. Zorilla must then be installed, and run, on any machine which needs to be in the Zorilla "grid". See the documentation in the distribution for further details.

After installing Zorilla on one or more machines, jobs can be submitted to Zorilla using either the JavaGAT, or via several console applications. A single command (zubmit) should normally be enough to start running jobs on Zorilla.