Hadoop YARN 基础设置

HadoopHadoopBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

在一个融合尖端技术与精密工程的未来机器人工厂中,你将扮演一名机器人维护技术员的角色。你的主要目标是确保工厂复杂网络中的计算资源得到高效分配和管理。这个网络为机器人的认知功能提供动力,使它们能够以无与伦比的准确性和速度执行复杂任务。

工厂的计算基础设施依赖于 Hadoop 生态系统,特别是 YARN(Yet Another Resource Negotiator)组件。你的目标是掌握 Hadoop YARN 的基本设置,使你能够在多个节点之间无缝分配和管理工厂的计算工作负载,确保最佳性能和资源利用率。


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/yarn_jar("Yarn Commands jar") hadoop/HadoopYARNGroup -.-> hadoop/yarn_node("Yarn Commands node") hadoop/HadoopYARNGroup -.-> hadoop/resource_manager("Resource Manager") hadoop/HadoopYARNGroup -.-> hadoop/node_manager("Node Manager") subgraph Lab Skills hadoop/yarn_setup -.-> lab-289015{{"Hadoop YARN 基础设置"}} hadoop/yarn_jar -.-> lab-289015{{"Hadoop YARN 基础设置"}} hadoop/yarn_node -.-> lab-289015{{"Hadoop YARN 基础设置"}} hadoop/resource_manager -.-> lab-289015{{"Hadoop YARN 基础设置"}} hadoop/node_manager -.-> lab-289015{{"Hadoop YARN 基础设置"}} end

探索 YARN 架构

在这一步中,我们将探索 YARN 架构及其关键组件,为理解它如何在 Hadoop 生态系统中管理和分配资源奠定基础。

YARN 架构由两个主要组件组成:

  1. ResourceManager (RM):ResourceManager 作为中央权威,负责仲裁和分配集群中的可用资源(CPU、内存等)。它由两个组件组成:

    • Scheduler:负责根据预定义的调度策略为各种运行中的应用程序分配资源。
    • ApplicationsManager:负责接受作业提交,协商执行 ApplicationMaster 的第一个资源容器,并提供在失败时重启 ApplicationMaster 容器的服务。
  2. NodeManager (NM):NodeManager 运行在集群中的每个节点上,负责管理节点的资源并监控在该节点上运行的容器。

为了更好地理解 YARN 架构,让我们导航到 Hadoop 配置目录并检查相关的配置文件。

首先我们需要切换用户:

su - hadoop

导航到 Hadoop 配置目录:

cd /home/hadoop/hadoop/etc/hadoop/

使用 vim 工具打开 yarn-site.xml 文件:

<configuration>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  </property>
</configuration>

在这个配置文件中,我们可以看到为 NodeManager 启用了 mapreduce_shuffle 辅助服务。该服务负责管理 MapReduce 作业中的 shuffle 操作,确保在 map 和 reduce 阶段之间高效传输数据。

启动 YARN 服务

现在我们已经探索了 YARN 架构及其配置,接下来让我们在 Hadoop 集群上启动 YARN 服务。

首先,使用以下命令启动 YARN 服务:

start-yarn.sh

该脚本将在集群中的适当节点上启动 ResourceManagerNodeManager 守护进程。

使用以下命令查看 YARN 服务的进程:

jps

输出中应该可以看到 NodeManagerResourceManager 服务。

你可以使用以下命令检查 YARN 服务的状态:

yarn node -list

该命令将显示集群中活跃的 NodeManager 列表,以及它们的状态和可用资源。

2024-03-17 19:27:30,108 INFO client.DefaultNoHARMFailoverProxyProvider: Connecting to ResourceManager at /0.0.0.0:8032
Total Nodes:1
         Node-Id	     Node-State	Node-Http-Address	Number-of-Running-Containers
iZj6cdofomqja8ye7wk8kzZ:43689	        RUNNING	iZj6cdofomqja8ye7wk8kzZ:8042	                           0

在上面的输出中,我们可以看到有一个活跃的 NodeManager 正在运行。

提交 YARN 作业

在 YARN 服务启动并运行后,让我们提交一个示例作业来测试 YARN 的资源分配和调度能力。

首先,在 Hadoop 文件系统中准备一个名为 input.txt 的输入文本文件,其中包含需要统计词频的文本内容。

echo -e "Hello World\nHello Hadoop\nYARN is cool" > input.txt
hadoop fs -put input.txt /input.txt

然后,示例程序的 JAR 文件可以在 Hadoop 安装目录中找到,通常位于 $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar。你可以使用这个 JAR 文件来运行 Word Count 程序。

yarn jar /home/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /input.txt /output

该命令将 MapReduce 作业提交给 YARN ResourceManager,ResourceManager 将分配资源并在可用的 NodeManager 上调度作业。

作业完成后,你可以在 /output 目录中查看输出:

hdfs dfs -cat /output/part-r-00000

这将显示词频统计结果:

Hadoop	1
Hello	2
World	1
YARN	1
cool	1
is	1

总结

在本实验中,我们探索了 YARN 架构及其关键组件,学习了如何配置和启动 YARN 服务,并向 YARN 集群提交了一个示例 MapReduce 作业。通过完成本实验,你获得了 Hadoop YARN 基本设置和操作的实践经验,使你能够在分布式环境中高效管理和分配计算资源。

本实验不仅提供了对 YARN 的实践理解,还强调了资源管理和调度在现代计算基础设施中的重要性。作为一名未来工厂的机器人维护技术员,掌握这些技能将使你能够优化工厂计算资源的性能和效率,确保机器人的平稳可靠运行。