YARN 架构详解与集群安装部署全攻略:从基础到实践
一、YARN 简介
1. YARN 是什么?
YARN(Yet Another Resource Negotiator)是 Hadoop 2.0 中引入的资源管理系统。它将资源管理和作业调度的职责从 MapReduce 中分离出来,使得 Hadoop 能够更高效地管理和调度集群资源。
2. YARN 的优势
- 可扩展性:解决了 Hadoop 1.0 中作业跟踪器的可扩展性瓶颈。
- 资源利用率:提高了集群资源的利用率。
- 多框架支持:允许在 Hadoop 集群上运行非 MapReduce 类型的作业。
二、YARN 架构
1. 主要组件
- ResourceManager (RM):负责全局资源的管理和分配。
- NodeManager (NM):负责管理单个节点的资源。
- ApplicationMaster (AM):负责管理单个应用程序的生命周期。
2. 工作流程
- 客户端提交作业到 ResourceManager。
- ResourceManager 分配资源给 ApplicationMaster。
- ApplicationMaster 向 NodeManager 请求资源,启动容器。
- 容器运行 MapReduce 任务。
- ApplicationMaster 跟踪任务进度。
三、YARN 集群安装
1. 环境准备
- 硬件资源:足够的 CPU、内存和存储。
- 软件资源:Hadoop 发行版(如 Apache Hadoop 或 Cloudera Hadoop),Java 环境(JDK 1.8 或以上)。
2. 安装步骤
(1)安装 Hadoop
- 下载并安装 Hadoop。
- 配置环境变量,确保
hadoop命令可用。
(2)配置 Hadoop
hadoop-env.sh:设置 Java 环境变量。core-site.xml:配置 HDFS 的核心参数。hdfs-site.xml:配置 HDFS 的高可用性等参数。yarn-site.xml:配置 YARN 的资源管理参数。<configuration> <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <property> <name>yarn.resourcemanager.cluster-id</name> <value>yarn_cluster</value> </property> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>hadoop01</value> </property> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>hadoop02</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>mapred-site.xml:配置 MapReduce 参数。
(3)启动 Hadoop
- 格式化 HDFS:
hadoop namenode -format。 - 启动 HDFS:
start-dfs.sh。 - 启动 YARN:
start-yarn.sh。
3. 验证集群状态
- 使用命令
yarn node -list查看节点信息。 - 访问 ResourceManager 的 Web UI(默认地址为
http://<ResourceManager>:8088)。
四、YARN 高可用性配置
1. 配置 HA
- 在
yarn-site.xml中启用 ResourceManager 的 HA。 - 配置 ZooKeeper 集群用于状态存储。
2. 自动故障转移
- 配置自动故障转移机制,确保 ResourceManager 的高可用性。
五、YARN 的管理和监控
1. 管理工具
- 使用 Ambari 或 Ansible 等工具简化集群管理。
2. 监控
- 通过 YARN 的 Web UI 监控集群状态。
- 查看日志文件分析运行情况。
六、YARN 使用案例
1. 提交作业
- 使用
hadoop jar命令提交 MapReduce 作业。 - 指定作业的入口点和资源需求。
2. 示例:Word Count
- 编写 Java 或 Python 程序实现 Word Count。
- 编译并打包 Java 程序。
- 提交作业并查看结果。
七、注意事项
1. 配置文件的一致性
- 确保所有节点的配置文件一致。
2. 资源分配
- 合理配置 YARN 的资源分配参数。
3. 日志管理
- 开启日志聚集功能,集中管理日志。
浙公网安备 33010602011771号