Hadoop中如何配置Yarn

发布时间:2021-12-07 14:45:35 作者:小新
来源:亿速云 阅读:274
# Hadoop中如何配置Yarn

## 一、Yarn概述

### 1.1 Yarn的基本概念
YARN(Yet Another Resource Negotiator)是Hadoop 2.0引入的集群资源管理系统,主要负责集群资源管理和作业调度。作为Hadoop的核心组件之一,它解决了MapReduce v1在扩展性和资源利用率方面的局限性。

核心组件包括:
- **ResourceManager (RM)**:全局资源管理器
- **NodeManager (NM)**:单个节点上的资源代理
- **ApplicationMaster (AM)**:应用级的管理器
- **Container**:资源分配的基本单位

### 1.2 Yarn的架构优势
相比传统MapReduce架构,YARN具有:
- 更高的集群利用率(可达90%)
- 支持多种计算框架(如Spark、Flink)
- 更好的扩展性(支持上万节点)
- 更灵活的资源分配

## 二、Yarn配置准备

### 2.1 环境要求
- Hadoop 2.x或更高版本
- Java 8/11(需与Hadoop版本匹配)
- 至少4GB内存的测试环境
- SSH无密码登录配置

### 2.2 配置文件位置
主要配置文件位于`$HADOOP_HOME/etc/hadoop/`目录:

yarn-site.xml # YARN核心配置 capacity-scheduler.xml # 容量调度器配置 mapred-site.xml # MapReduce相关配置


## 三、核心配置详解

### 3.1 ResourceManager配置

```xml
<!-- yarn-site.xml -->
<configuration>
  <!-- 指定ResourceManager地址 -->
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>master</value>
  </property>
  
  <!-- ResourceManager服务端口 -->
  <property>
    <name>yarn.resourcemanager.address</name>
    <value>${yarn.resourcemanager.hostname}:8032</value>
  </property>
  
  <!-- 调度器端口 -->
  <property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>${yarn.resourcemanager.hostname}:8030</value>
  </property>
  
  <!-- 资源跟踪端口 -->
  <property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>${yarn.resourcemanager.hostname}:8031</value>
  </property>
  
  <!-- Web UI端口 -->
  <property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>${yarn.resourcemanager.hostname}:8088</value>
  </property>
</configuration>

3.2 NodeManager配置

<!-- yarn-site.xml -->
<property>
  <name>yarn.nodemanager.resource.memory-mb</name>
  <value>8192</value> <!-- 根据物理内存调整 -->
  <description>每个NodeManager可用的物理内存</description>
</property>

<property>
  <name>yarn.nodemanager.resource.cpu-vcores</name>
  <value>8</value> <!-- 根据CPU核心数调整 -->
  <description>可用的虚拟CPU核数</description>
</property>

<property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
  <description>NodeManager的辅助服务</description>
</property>

3.3 内存与CPU配置

<!-- 容器内存配置 -->
<property>
  <name>yarn.scheduler.minimum-allocation-mb</name>
  <value>1024</value> <!-- 最小容器内存 -->
</property>

<property>
  <name>yarn.scheduler.maximum-allocation-mb</name>
  <value>16384</value> <!-- 最大容器内存 -->
</property>

<!-- 容器CPU配置 -->
<property>
  <name>yarn.scheduler.minimum-allocation-vcores</name>
  <value>1</value>
</property>

<property>
  <name>yarn.scheduler.maximum-allocation-vcores</name>
  <value>4</value>
</property>

四、调度器配置

4.1 容量调度器(Capacity Scheduler)

<!-- capacity-scheduler.xml -->
<configuration>
  <property>
    <name>yarn.scheduler.capacity.root.queues</name>
    <value>default,prod,dev</value>
  </property>
  
  <property>
    <name>yarn.scheduler.capacity.root.default.capacity</name>
    <value>40</value>
  </property>
  
  <property>
    <name>yarn.scheduler.capacity.root.prod.capacity</name>
    <value>40</value>
  </property>
  
  <property>
    <name>yarn.scheduler.capacity.root.dev.capacity</name>
    <value>20</value>
  </property>
</configuration>

4.2 公平调度器(Fair Scheduler)

<!-- yarn-site.xml -->
<property>
  <name>yarn.resourcemanager.scheduler.class</name>
  <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>

<!-- fair-scheduler.xml -->
<allocations>
  <queue name="prod">
    <minResources>8192 mb,4vcores</minResources>
    <maxResources>32768 mb,16vcores</maxResources>
  </queue>
  
  <queue name="dev">
    <minResources>4096 mb,2vcores</minResources>
    <maxResources>16384 mb,8vcores</maxResources>
  </queue>
</allocations>

五、高可用配置

5.1 ResourceManager HA

<!-- yarn-site.xml -->
<property>
  <name>yarn.resourcemanager.ha.enabled</name>
  <value>true</value>
</property>

<property>
  <name>yarn.resourcemanager.cluster-id</name>
  <value>cluster1</value>
</property>

<property>
  <name>yarn.resourcemanager.ha.rm-ids</name>
  <value>rm1,rm2</value>
</property>

<property>
  <name>yarn.resourcemanager.hostname.rm1</name>
  <value>master1</value>
</property>

<property>
  <name>yarn.resourcemanager.hostname.rm2</name>
  <value>master2</value>
</property>

5.2 ZooKeeper配置

<property>
  <name>yarn.resourcemanager.zk-address</name>
  <value>zk1:2181,zk2:2181,zk3:2181</value>
</property>

<property>
  <name>hadoop.zk.address</name>
  <value>zk1:2181,zk2:2181,zk3:2181</value>
</property>

六、安全配置

6.1 Kerberos集成

<property>
  <name>yarn.resourcemanager.principal</name>
  <value>yarn/_HOST@REALM</value>
</property>

<property>
  <name>yarn.nodemanager.principal</name>
  <value>nm/_HOST@REALM</value>
</property>

<property>
  <name>yarn.resourcemanager.keytab</name>
  <value>/etc/security/keytabs/yarn.service.keytab</value>
</property>

6.2 ACL控制

<property>
  <name>yarn.admin.acl</name>
  <value>admin1,admin2</value>
</property>

<property>
  <name>yarn.resourcemanager.admin.client.thread-count</name>
  <value>3</value>
</property>

七、验证与监控

7.1 启动命令

# 启动YARN
$HADOOP_HOME/sbin/start-yarn.sh

# 验证服务
jps | grep -E 'ResourceManager|NodeManager'

7.2 Web UI访问

7.3 常用命令

# 查看节点状态
yarn node -list

# 查看运行中的应用
yarn application -list

# 终止应用
yarn application -kill <application_id>

八、性能调优建议

  1. 内存配置

    • 预留20%内存给系统进程
    • yarn.nodemanager.resource.memory-mb应小于物理内存
  2. 容器大小

    • 典型容器大小建议4-8GB
    • 小文件处理可配置更小的容器
  3. 垃圾回收

    <property>
     <name>yarn.nodemanager.env-whitelist</name>
     <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME,XMX_SETTINGS</value>
    </property>
    
  4. 日志管理

    <property>
     <name>yarn.nodemanager.log-aggregation-enable</name>
     <value>true</value>
    </property>
    

九、常见问题解决

9.1 资源分配失败

9.2 NodeManager未启动

9.3 Web UI无法访问

十、总结

YARN的合理配置对Hadoop集群性能至关重要。建议: 1. 根据硬件资源仔细调整内存/CPU参数 2. 生产环境务必配置HA 3. 使用适当的调度器并配置队列 4. 启用日志聚合和监控 5. 定期审查资源配置与实际使用情况

通过本文的配置指南,您应该能够建立高效的YARN集群环境。实际配置时请根据具体工作负载特点进行调整,并通过监控工具持续优化配置参数。 “`

这篇文章提供了约2300字的YARN配置指南,包含: - 10个主要章节 - 30+个关键配置项 - 多种调度器配置示例 - HA和安全配置指导 - 性能调优建议 - 常见问题解决方案

格式采用标准的Markdown语法,包含代码块、列表、表格等元素,适合技术文档发布。

推荐阅读:
  1. Hadoop 之 Yarn
  2. HADOOP YARN(一)

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

hadoop

上一篇:怎么进行redis批量查询优化接口

下一篇:web前后端分离开发Bug解决思路分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》