
 package MasteringYarn;
 
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.yarn.api.ApplicationConstants;
 import org.apache.hadoop.yarn.api.protocolrecords.AllocateResponse;
 import org.apache.hadoop.yarn.api.records.*;
 import org.apache.hadoop.yarn.client.api.AMRMClient;
 import org.apache.hadoop.yarn.client.api.NMClient;
 import org.apache.hadoop.yarn.conf.YarnConfiguration;
 import org.apache.hadoop.yarn.exceptions.YarnException;
 import org.apache.hadoop.yarn.util.Records;
 
 import java.io.IOException;
 import java.util.Collections;
 
 public class DistributedShellApplicationMaster {
 
 
     public static void main(String[] args) throws YarnException, IOException, InterruptedException {
 
         Configuration configuration = new YarnConfiguration();
         int numberOfContainers = Integer.parseInt(args[1]);
         String command = args[0];
 
         System.out.println("Starting Application Master");
 
         AMRMClient<AMRMClient.ContainerRequest> resourceManagerClient = AMRMClient.createAMRMClient();
         resourceManagerClient.init(configuration);
         resourceManagerClient.start();
 
 
         System.out.println("Started AMRMClient");
 
         NMClient nodeManagerClient = NMClient.createNMClient();
         nodeManagerClient.init(configuration);
         nodeManagerClient.start();
 
         System.out.println("Started NMClient");
 
 
