Description:
This is a framework to execute programs in multiple nodes concurrently.
It consists of two modules: controller and executor. The controller controls the whole process, it first dispatches the executor and user-defined program files to all the nodes specified by the user. Then it starts the executor remotely and waits for all the executors to end. The executor run the program specified by the user and reports to the controller peroidly. When it finishes, it notifys the controller and then exits. After all the executors have reported their status or a speicified timeout is reached, the controller exits. The user can then send a query request to get the results. 
To monitor every executor's status, the executor reports to the controller peroidly. When one executor fails to report in a predefined timeout, the controller will mark it as dead. When the controller receives the report later, then it changes the status to be alive again. The controller never waits for a dead node.

scripts:
	controller/TaskController.sh -h
	controller/FileTransporter.sh -h
