JMS is a workflow management system and web-based cluster front-end for High Performance Computing (HPC) environments. It provides an interface to Torque (or similar resource managers) that allows users to submit and manage jobs as well as manage, configure and monitor the status of their cluster.
In addition to interfacing with a resource manager, JMS provides a fully-functional workflow management system that allows users to create complex computational pipelines via an easy-to-use, web interface. Users can upload their scripts, interface with installed programs on their cluster, or both, to build their workflows.
JMS was originally developed for use in the field of bioinformatics. It is, however, applicable to any scientific field that requires computationally intensive analysis to be performed over a cluster. It can also be used to integrate workflows into 3rd party websites via it's RESTful web API. JMS is is also a useful tool for system administrators who simply want to monitor and manage their cluster.
JMS is a Django project. We will welcome any and all help in developing it further.
JMS has been published here.
Note: The following instructions are for Ubuntu 14.04, but can be used as a guideline for other Linux flavours.
First of all, you will need to download the project from github. We recommend you download the project to the /srv
directory so you will not need to change paths in the settings file later:
cd /srv
sudo mkdir JMS
sudo chown user:user JMS
git clone https://github.com/RUBi-ZA/JMS.git
sudo chown user:user JMS -R
Navigate to the project src directory and setup a virtual environment:
cd /srv/JMS/src
sudo apt-get install -y libmemcache-dev zlib1g-dev libssl-dev python-dev build-essential
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
Edit the /srv/JMS/src/JMS/settings.py
file to include your database login credentials (you should have set these when creating your database) and the path to the NFS share:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'JMS', # Or path to database file if using sqlite3.
# The following settings are not used with sqlite3:
'USER': 'username',
'PASSWORD': 'password',
'HOST': 'localhost',
'PORT': '', # Set to empty string for default.
}
}
JMS_SETTINGS = {
"JMS_shared_directory": "/NFS/JMS/",
"resource_manager": {
"name": "torque",
"log_file": os.path.join(BASE, "logs/torque.log")
}
}
IMPERSONATOR_SETTINGS = {
"key": os.path.join(BASE_DIR, "impersonator/pub.key"),
"url": "127.0.0.1:8123"
}
With the settings.py file set up with your database details and the path to your shared directory, run the following commands:
cd /srv/JMS/src
source venv/bin/activate
python manage.py migrate
python manage.py setup
The queue daemon is responsible for updating the JMS job history with details from the resource manager. If you don't start the queue_daemon, your job history will not be updated after the a job has been submitted i.e. no changes in state will be tracked during the job. To start the queue daemon, run the following command:
sudo venv/bin/python manage.py queue_daemon start
To restart or stop the queue daemon, run the following commands respectively:
sudo venv/bin/python manage.py queue_daemon restart
sudo venv/bin/python manage.py queue_daemon stop
The impersonator allows JMS to submit jobs as you. It is also used for a number of other reasons. If you are unable to login, chances are the impersonator is not running. To start it, run the following commands:
sudo nohup venv/bin/python impersonator/server.py 8123 >/dev/null 2>&1 &
You can set which port JMS communicates with the impersonator on in the settings.py file:
IMPERSONATOR_SETTINGS = {
"key": os.path.join(BASE_DIR, "impersonator/pub.key"),
"url": "127.0.0.1:8123"
}
To test that your installation is working, run the Django development web server:
python manage.py runserver ip.address:8000
For improved performance, host the JMS with Apache or some other production web server.