Question : My container is being killed by the Node Manager, why ? 1. This is likely due to high memory usage exceeding your requested container memory size. 2. you have exceeded physical memory limits 3. you have exceeded virtual memory 4. 1 and 2 5. 1,2 and 3
Correct Answer : 5
Explanation: This is likely due to high memory usage exceeding your requested container memory size. There are a number of reasons that can cause this. First, look at the process tree that the node manager dumps when it kills your container. The two things you're interested in are physical memory and virtual memory. If you have exceeded physical memory limits your app is using too much physical memory. If you're running a Java app, you can use -hprof to look at what is taking up space in the heap. If you have exceeded virtual memory, you may need to increase the value of the the cluster-wide configuration variable yarn.nodemanager.vmem-pmem-ratio.
Question : I have written a Hadoop MapReduce job, which uses the native libarary in the Job. So which is the best way to include the native libraries.
1. Setting -Djava.library.path on the command line while launching a container 2. use LD_LIBRARY_PATH 3. Setting -Dnative.library.path on the command line while launching a container 4. By Adding the Jar's in the Hadoop Job Jar
Correct Answer :2 Setting -Djava.library.path on the command line while launching a container can cause native libraries used by Hadoop to not be loaded correctly and can result in errors. It is cleaner to use LD_LIBRARY_PATH instead.
Question : Select the correct flow, for submitting the YARN application
1. ApplicationMaster needs to register itself with the ResourceManager 2. The client communicates with the ResourceManager using the 'ClientRMProtocol' to first acquire a new 'ApplicationId' 3. Client submits an 'Application' to the YARN Resource Manager 4. The YARN ResourceManager will then launch the ApplicationMaster (as specified) on an allocated container 5. ApplicationMaster has to signal the ResourceManager of its completion 6. ApplicationMaster communicates with the NodeManager using ContainerManager 7. ApplicationMaster can then request for and receive container
Correct Answer : 3The general concept is that an 'Application Submission Client' submits an 'Application' to the YARN Resource Manager. The client communicates with the ResourceManager using the 'ClientRMProtocol' to first acquire a new 'ApplicationId' if needed via ClientRMProtocol#getNewApplication and then submit the 'Application' to be run via ClientRMProtocol#submitApplication. As part of the ClientRMProtocol#submitApplication call, the client needs to provide sufficient information to the ResourceManager to 'launch' the application's first container i.e. the ApplicationMaster. You need to provide information such as the details about the local files/jars that need to be available for your application to run, the actual command that needs to be executed (with the necessary command line arguments), any Unix environment settings (optional), etc. Effectively, you need to describe the Unix process(es) that needs to be launched for your ApplicationMaster.
The YARN ResourceManager will then launch the ApplicationMaster (as specified) on an allocated container. The ApplicationMaster is then expected to communicate with the ResourceManager using the 'AMRMProtocol'. Firstly, the ApplicationMaster needs to register itself with the ResourceManager. To complete the task assigned to it, the ApplicationMaster can then request for and receive containers via AMRMProtocol#allocate. After a container is allocated to it, the ApplicationMaster communicates with the NodeManager using ContainerManager#startContainer to launch the container for its task. As part of launching this container, the ApplicationMaster has to specify the ContainerLaunchContext which, similar to the ApplicationSubmissionContext, has the launch information such as command line specification, environment, etc. Once the task is completed, the ApplicationMaster has to signal the ResourceManager of its completion via the AMRMProtocol#finishApplicationMaster.
Meanwhile, the client can monitor the application's status by querying the ResourceManager or by directly querying the ApplicationMaster if it supports such a service. If needed, it can also kill the application via ClientRMProtocol#forceKillApplication.
1. allows containers to request variable amounts of memory and schedules based on those requirements 2. If an application is given a container that it cannot use immediately due to a shortage of memory, it can reserve that container, and no other application can use it until the container is released. 3. Access Mostly Uused Products by 50000+ Subscribers 4. 1 and 2 5. 1 and 3