private void downloadJar (MapRedTask task, String jid) throws IOException {
			try {
				
				Registry NameNodeR = LocateRegistry.getRegistry(Hdfs.Core.NAME_NODE_IP, Hdfs.Core.NAME_NODE_REGISTRY_PORT);
				NameNodeRemoteInterface NameNodeS = (NameNodeRemoteInterface) NameNodeR.lookup(Hdfs.Core.NAME_NODE_SERVICE_NAME);
				HDFSFile jarFile = null;
				try {
					jarFile = NameNodeS.open(task.getJarEntry().getFullPath());
				} catch (IOException e) {
					if (MapReduce.Core.DEBUG) {
						e.printStackTrace();
					}
					throw e;
				}
				
				HDFSInputStream in = jarFile.getInputStream();
				
				File localFile = new File(TaskTracker.this.taskJarFolder.getAbsolutePath() + "/" + jid + ".jar");
				FileOutputStream fout = new FileOutputStream(localFile);
				
				JarFileEntry jarEntry = ((MapRedTask)task).getJarEntry();
				
				if (MapReduce.Core.DEBUG) {
					System.out.println("DEBUG TaskTracker.downloadJar(): IP for downloading jar : " 
								+ jarEntry.getTaskTrackerIp());
				}
				
				byte[] buff = new byte[Hdfs.Core.READ_BUFF_SIZE];
				int len = -1;
				
				while ((len = in.read(buff)) != 0) {
					fout.write(buff, 0, len);
				}

				fout.close();

			} catch (Exception e) {
				throw new IOException("Failed to download Jar file", e);
			}
		}