How to submit a Hadoop YARN application with custom parameters

HadoopHadoopBeginner
Practice Now

Introduction

This tutorial will guide you through the process of submitting a Hadoop YARN application with custom parameters. You will learn about the Hadoop YARN framework, how to configure your application with custom parameters, and the steps to submit your application to the YARN cluster.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hadoop(("`Hadoop`")) -.-> hadoop/HadoopYARNGroup(["`Hadoop YARN`"]) hadoop/HadoopYARNGroup -.-> hadoop/yarn_setup("`Hadoop YARN Basic Setup`") hadoop/HadoopYARNGroup -.-> hadoop/apply_scheduler("`Applying Scheduler`") hadoop/HadoopYARNGroup -.-> hadoop/yarn_app("`Yarn Commands application`") hadoop/HadoopYARNGroup -.-> hadoop/yarn_container("`Yarn Commands container`") hadoop/HadoopYARNGroup -.-> hadoop/yarn_log("`Yarn Commands log`") hadoop/HadoopYARNGroup -.-> hadoop/yarn_jar("`Yarn Commands jar`") hadoop/HadoopYARNGroup -.-> hadoop/resource_manager("`Resource Manager`") hadoop/HadoopYARNGroup -.-> hadoop/node_manager("`Node Manager`") subgraph Lab Skills hadoop/yarn_setup -.-> lab-415602{{"`How to submit a Hadoop YARN application with custom parameters`"}} hadoop/apply_scheduler -.-> lab-415602{{"`How to submit a Hadoop YARN application with custom parameters`"}} hadoop/yarn_app -.-> lab-415602{{"`How to submit a Hadoop YARN application with custom parameters`"}} hadoop/yarn_container -.-> lab-415602{{"`How to submit a Hadoop YARN application with custom parameters`"}} hadoop/yarn_log -.-> lab-415602{{"`How to submit a Hadoop YARN application with custom parameters`"}} hadoop/yarn_jar -.-> lab-415602{{"`How to submit a Hadoop YARN application with custom parameters`"}} hadoop/resource_manager -.-> lab-415602{{"`How to submit a Hadoop YARN application with custom parameters`"}} hadoop/node_manager -.-> lab-415602{{"`How to submit a Hadoop YARN application with custom parameters`"}} end

Understanding Hadoop YARN

Hadoop YARN (Yet Another Resource Negotiator) is the resource management and job scheduling component of the Apache Hadoop ecosystem. It is responsible for managing the computing resources in a Hadoop cluster and scheduling the execution of applications on those resources.

YARN was introduced in Hadoop 2.0 to address the limitations of the previous job scheduling mechanism in Hadoop 1.0, known as the JobTracker. YARN provides a more scalable, flexible, and robust resource management system that can handle a wide range of applications, including batch processing, interactive queries, real-time streaming, and machine learning.

The key components of YARN are:

ResourceManager

The ResourceManager is the central authority that manages the computing resources in the Hadoop cluster. It is responsible for allocating resources to applications, monitoring their execution, and ensuring fair and efficient utilization of the cluster resources.

NodeManager

The NodeManager is the agent running on each node in the Hadoop cluster. It is responsible for launching and monitoring the execution of application containers on the local node, and reporting the resource usage and status to the ResourceManager.

Application Master

The Application Master is a per-application component that negotiates resources from the ResourceManager and works with the NodeManagers to execute the application's tasks on the allocated resources.

YARN provides a flexible and extensible application programming model that allows developers to write custom applications that can be submitted and executed on the Hadoop cluster. These applications can be written in a variety of programming languages, including Java, Python, and Scala, and can be designed to handle a wide range of data processing tasks, from batch processing to real-time streaming.

graph TD A[Client] --> B[ResourceManager] B --> C[NodeManager] C --> D[Application Master] D --> E[Container]

The above diagram illustrates the high-level architecture of Hadoop YARN and the interactions between its key components.

Submitting a YARN Application

To submit a YARN application, you can use the yarn command-line tool provided by the Hadoop ecosystem. The general syntax for submitting a YARN application is as follows:

yarn application -submit <application-package> -name <application-name> -queue <queue-name> -am <application-master-java-opts> -driver-cores <driver-cores> -driver-memory <driver-memory> -executor-cores <executor-cores> -executor-memory <executor-memory>

Let's break down the different parameters:

  • <application-package>: The path to the application package, which can be a JAR file or a directory containing the application code and dependencies.
  • <application-name>: The name of the application, which will be displayed in the YARN web UI and logs.
  • <queue-name>: The name of the YARN queue to which the application should be submitted.
  • <application-master-java-opts>: The Java options to be used for the Application Master process.
  • <driver-cores>: The number of CPU cores to be allocated for the driver process.
  • <driver-memory>: The amount of memory to be allocated for the driver process.
  • <executor-cores>: The number of CPU cores to be allocated for each executor process.
  • <executor-memory>: The amount of memory to be allocated for each executor process.

Here's an example of how you can submit a YARN application using the yarn command:

yarn application -submit /path/to/my-app.jar -name my-app -queue default -am "-Xmx1024m" -driver-cores 2 -driver-memory 2g -executor-cores 2 -executor-memory 2g

This command will submit a YARN application using the my-app.jar package, with the name "my-app", and submit it to the "default" YARN queue. The Application Master process will be allocated 1 GB of memory, the driver process will be allocated 2 CPU cores and 2 GB of memory, and each executor process will be allocated 2 CPU cores and 2 GB of memory.

You can customize these parameters based on the requirements of your application and the resources available in your Hadoop cluster.

Configuring Custom Parameters

In addition to the standard parameters used when submitting a YARN application, you can also configure custom parameters that can be accessed and used by your application. This allows you to pass in specific settings or configurations that your application requires, making it more flexible and adaptable.

To configure custom parameters, you can use the --conf or -C option when submitting your YARN application. The syntax for this is:

yarn application -submit <application-package> -name <application-name> -queue <queue-name> --conf <key>=<value>

Here, <key> is the name of the custom parameter, and <value> is the value you want to assign to it.

For example, let's say your application requires a specific input file path and a processing threshold. You can configure these as custom parameters like this:

yarn application -submit /path/to/my-app.jar -name my-app -queue default --conf input.file=/path/to/input.txt --conf processing.threshold=100

In your application code, you can then access these custom parameters using the Hadoop configuration API. Here's an example in Java:

Configuration conf = new Configuration();
String inputFile = conf.get("input.file");
int processingThreshold = conf.getInt("processing.threshold", 0);

By using custom parameters, you can make your YARN application more adaptable and easier to configure for different deployment scenarios or use cases. This can be especially useful when running your application in a shared Hadoop cluster, where different users or teams may have different requirements.

Remember to document the available custom parameters and their expected values, so that other users can easily understand and configure your application.

Summary

By the end of this tutorial, you will have a solid understanding of how to submit a Hadoop YARN application with custom parameters. This knowledge will help you develop more flexible and customizable Hadoop applications, allowing you to meet specific requirements and optimize your data processing workflows.

Other Hadoop Tutorials you may like