public void submitJob() throws RemoteException, NotBoundException {
		// Get jobTracker stub
		Registry registry = LocateRegistry.getRegistry(context
				.getJobTrackerHost());
		this.jobTrackerRMI = (JobTrackerRMI) registry
				.lookup(JobTrackerRMI.RMIName);

		// Get jobID
		int ID = jobTrackerRMI.getJobID();
		context.setJobID(ID);

//		fs = FileSystem.getFileSystem(context.getFileSystem());
		fs = context.getFileSystemInstance();
		try {
			if (!checkInputPath()) {
				Log.write("Launch job failed: input path [" + context.getInputPath() + "] does not exist.");
				return;
			}
			// Create job dir on fs
			createJobDirOnFs(ID);
			// Submit job file to fs
			submitJobFileToFS();
			// Submit split info to fs
			submitSplitInfoToFs();
			// Submit configuration file to fs
			submitJobConfigurationToFs();
			
			// Submit job to job tracker
			jobTrackerRMI.submitJob(new Path(context.getJobConfigurationFilePath()));
		} catch (IOException e) {
			e.printStackTrace();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}