spark-配置yarn模式

96 阅读2分钟

Apache Spark 是一个分布式计算框架,而 YARN(Yet Another Resource Negotiator)是 Hadoop 的资源管理器,用于管理集群资源。在 YARN 模式下运行 Spark,可以充分利用 YARN 的资源管理能力,实现资源的动态分配和隔离。以下是配置 Spark 以 YARN 模式运行的详细步骤:

1. 环境准备

  • 安装 Hadoop:确保 Hadoop 已正确安装并配置好 YARN。可以通过运行以下命令检查 YARN 是否正常运行:

    bash

    复制

    yarn --version
    
  • 安装 Spark:下载并安装 Spark。确保 Spark 的版本与 Hadoop 版本兼容。可以通过运行以下命令检查 Spark 是否正常运行:

    bash

    复制

    spark-shell
    

2. 配置 Spark 以使用 YARN

a. 设置环境变量

在 Spark 的配置文件 conf/spark-env.sh 中设置以下环境变量:

bash

复制

export HADOOP_CONF_DIR=/path/to/hadoop/etc/hadoop
export SPARK_HOME=/path/to/spark
  • HADOOP_CONF_DIR:指向 Hadoop 的配置目录,Spark 会从这里读取 YARN 的配置信息。
  • SPARK_HOME:指向 Spark 的安装目录。

b. 修改 Spark 配置文件

在 Spark 的配置文件 conf/spark-defaults.conf 中添加以下配置:

properties

复制

spark.master yarn
spark.submit.deployMode cluster
spark.yarn.am.memory 512m
spark.executor.memory 2g
spark.executor.cores 2
spark.executor.instances 3
  • spark.master yarn:指定 Spark 使用 YARN 作为资源管理器。
  • spark.submit.deployMode cluster:指定以集群模式提交作业。
  • spark.yarn.am.memory:YARN 应用管理器的内存大小。
  • spark.executor.memory:每个执行器的内存大小。
  • spark.executor.cores:每个执行器的 CPU 核心数。
  • spark.executor.instances:执行器的数量。

c. 配置 Hadoop 的 YARN

确保 Hadoop 的 YARN 配置文件(如 yarn-site.xmlcapacity-scheduler.xml)正确配置了资源管理器的地址和资源限制。例如:

xml

复制

<!-- yarn-site.xml -->
<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>your-yarn-resource-manager-hostname</value>
    </property>
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>8192</value>
    </property>
</configuration>

3. 提交 Spark 作业到 YARN

使用 spark-submit 命令提交 Spark 作业到 YARN。例如:

bash

复制

spark-submit \
  --class org.apache.spark.examples.SparkPi \
  --master yarn \
  --deploy-mode cluster \
  --executor-memory 2g \
  --executor-cores 2 \
  --num-executors 3 \
  /path/to/examples.jar \
  10
  • --class:指定 Spark 应用程序的主类。
  • --master yarn:指定使用 YARN 作为资源管理器。
  • --deploy-mode cluster:指定以集群模式运行。
  • --executor-memory:每个执行器的内存大小。
  • --executor-cores:每个执行器的 CPU 核心数。
  • --num-executors:执行器的数量。
  • /path/to/examples.jar:Spark 应用程序的 JAR 文件路径。
  • 10:Spark 应用程序的参数。

4. 监控和调试

  • YARN UI:可以通过 YARN 的 Web UI(通常在 http://<yarn-resource-manager-host>:8088)查看作业的运行状态和资源使用情况。
  • Spark UI:可以通过 Spark 的 Web UI(通常在 http://<executor-host>:4040)查看作业的详细信息和性能指标。

5. 常见问题

  • 资源不足:如果 YARN 报告资源不足,可以调整 spark.executor.memoryspark.executor.cores 的值,或者增加 YARN 的资源限制。
  • 权限问题:确保提交作业的用户有权限访问 Hadoop 和 YARN 的资源。
  • 配置文件路径错误:确保 HADOOP_CONF_DIRSPARK_HOME 的路径正确。