code: public static PlanExecutor createRemoteExecutor(String hostname, int port, Configuration clientConfiguration,
  			List<URL> jarFiles, List<URL> globalClasspaths) {
  		if (hostname == null) {
  			throw new IllegalArgumentException("The hostname must not be null.");
  		}
  		if (port <= 0 || port > 0xffff) {
  			throw new IllegalArgumentException("The port value is out of range.");
  		}
  		
  		Class<? extends PlanExecutor> reClass = loadExecutorClass(REMOTE_EXECUTOR_CLASS);
  		
  		List<URL> files = (jarFiles == null) ?
  				Collections.<URL>emptyList() : jarFiles;
  		List<URL> paths = (globalClasspaths == null) ?
  				Collections.<URL>emptyList() : globalClasspaths;
  
  		try {
  			PlanExecutor executor = (clientConfiguration == null) ?
  					reClass.getConstructor(String.class, int.class, List.class)
  						.newInstance(hostname, port, files) :
  					reClass.getConstructor(String.class, int.class, Configuration.class, List.class, List.class)
  						.newInstance(hostname, port, clientConfiguration, files, paths);
  			return executor;
  		}
  		catch (Throwable t) {
  			throw new RuntimeException("An error occurred while loading the remote executor ("
  					+ REMOTE_EXECUTOR_CLASS + ").", t);
  		}
  	}
docs: Creates an executor that runs the plan on a remote environment. The remote executor is typically used
  to send the program to a cluster for execution.
  
  @param hostname The address of the JobManager to send the program to.
  @param port The port of the JobManager to send the program to.
  @param clientConfiguration The configuration for the client (Akka, default.parallelism).
  @param jarFiles A list of jar files that contain the user-defined function (UDF) classes and all classes used
  from within the UDFs.
  @param globalClasspaths A list of URLs that are added to the classpath of each user code classloader of the
  program. Paths must specify a protocol (e.g. file://) and be accessible on all nodes.
  @return A remote executor.