如何使用自定义参数提交 Hadoop YARN 应用程序

HadoopBeginner
立即练习

简介

本教程将指导你完成使用自定义参数提交 Hadoop YARN 应用程序的过程。你将了解 Hadoop YARN 框架、如何使用自定义参数配置应用程序以及将应用程序提交到 YARN 集群的步骤。

了解 Hadoop YARN

Hadoop YARN(又一个资源协调器)是 Apache Hadoop 生态系统中的资源管理和作业调度组件。它负责管理 Hadoop 集群中的计算资源,并调度这些资源上应用程序的执行。

YARN 是在 Hadoop 2.0 中引入的,用于解决 Hadoop 1.0 中先前作业调度机制(称为 JobTracker)的局限性。YARN 提供了一个更具可扩展性、灵活性和健壮性的资源管理系统,能够处理广泛的应用程序,包括批处理、交互式查询、实时流处理和机器学习。

YARN 的关键组件包括:

资源管理器(ResourceManager)

资源管理器是管理 Hadoop 集群中计算资源的核心机构。它负责为应用程序分配资源、监控其执行情况,并确保集群资源的公平高效利用。

节点管理器(NodeManager)

节点管理器是在 Hadoop 集群中每个节点上运行的代理。它负责在本地节点上启动和监控应用程序容器的执行,并向资源管理器报告资源使用情况和状态。

应用程序主控器(Application Master)

应用程序主控器是每个应用程序的组件,它从资源管理器协商资源,并与节点管理器合作,在分配的资源上执行应用程序的任务。

YARN 提供了一个灵活且可扩展的应用程序编程模型,允许开发人员编写可以在 Hadoop 集群上提交和执行的自定义应用程序。这些应用程序可以用多种编程语言编写,包括 Java、Python 和 Scala,并可设计用于处理从批处理到实时流处理的各种数据处理任务。

graph TD A[客户端(Client)] --> B[资源管理器(ResourceManager)] B --> C[节点管理器(NodeManager)] C --> D[应用程序主控器(Application Master)] D --> E[容器(Container)]

上图展示了 Hadoop YARN 的高层架构及其关键组件之间的交互。

提交 YARN 应用程序

要提交 YARN 应用程序,你可以使用 Hadoop 生态系统提供的 yarn 命令行工具。提交 YARN 应用程序的一般语法如下:

yarn application -submit <应用程序包> -name <应用程序名称> -queue <队列名称> -am <应用程序主控器 Java 选项> -driver-cores <驱动程序核心数> -driver-memory <驱动程序内存> -executor-cores <执行器核心数> -executor-memory <执行器内存>

下面来详细解释一下不同的参数:

  • <应用程序包>:应用程序包的路径,可以是一个 JAR 文件或包含应用程序代码及依赖项的目录。
  • <应用程序名称>:应用程序的名称,将显示在 YARN 网页用户界面和日志中。
  • <队列名称>:应用程序应提交到的 YARN 队列的名称。
  • <应用程序主控器 Java 选项>:用于应用程序主控器进程的 Java 选项。
  • <驱动程序核心数>:为驱动程序进程分配的 CPU 核心数。
  • <驱动程序内存>:为驱动程序进程分配的内存量。
  • <执行器核心数>:为每个执行器进程分配的 CPU 核心数。
  • <执行器内存>:为每个执行器进程分配的内存量。

以下是一个使用 yarn 命令提交 YARN 应用程序的示例:

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

此命令将使用 my-app.jar 包提交一个 YARN 应用程序,名称为 “my-app”,并将其提交到 “default” YARN 队列。应用程序主控器进程将被分配 1GB 内存,驱动程序进程将被分配 2 个 CPU 核心和 2GB 内存,每个执行器进程将被分配 2 个 CPU 核心和 2GB 内存。

你可以根据应用程序的需求和 Hadoop 集群中可用的资源来定制这些参数。

配置自定义参数

除了提交 YARN 应用程序时使用的标准参数外,你还可以配置自定义参数,供应用程序访问和使用。这使你能够传入应用程序所需的特定设置或配置,从而使其更灵活、更具适应性。

要配置自定义参数,你可以在提交 YARN 应用程序时使用 --conf-C 选项。其语法如下:

yarn application -submit <应用程序包> -name <应用程序名称> -queue <队列名称> --conf <键>=<值>

这里,<键> 是自定义参数的名称,<值> 是你要赋给它的值。

例如,假设你的应用程序需要一个特定的输入文件路径和一个处理阈值。你可以将这些配置为自定义参数,如下所示:

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

然后,在你的应用程序代码中,你可以使用 Hadoop 配置 API 来访问这些自定义参数。下面是一个 Java 示例:

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

通过使用自定义参数,你可以使你的 YARN 应用程序更具适应性,并且在不同的部署场景或用例中更容易配置。当在共享的 Hadoop 集群中运行你的应用程序时,这尤其有用,因为不同的用户或团队可能有不同的要求。

请记住记录可用的自定义参数及其预期值,以便其他用户能够轻松理解和配置你的应用程序。

总结

在本教程结束时,你将对如何使用自定义参数提交 Hadoop YARN 应用程序有扎实的理解。这些知识将帮助你开发更灵活、可定制的 Hadoop 应用程序,使你能够满足特定需求并优化数据处理工作流程。