简介
本教程将指导你完成使用自定义参数提交 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 应用程序,使你能够满足特定需求并优化数据处理工作流程。



