如何搭建spark yarn 模式的集群

搭建Spark on YARN集群的步骤

Spark on YARN模式允许Spark作业在Hadoop YARN资源管理器上运行,这样可以更好地与Hadoop生态系统集成并共享集群资源。以下是搭建Spark YARN集群的详细步骤:

前提条件

  1. 已安装并配置好Hadoop集群(包括HDFS和YARN)

  2. 所有节点已配置SSH免密登录

  3. Java环境已安装(推荐JDK 8或11)

一、安装Spark

  1. 下载Spark

    • Spark官网下载与Hadoop版本兼容的Spark预编译包

    • 例如:wget https://dlcdn.apache.org/spark/spark-3.3.2/spark-3.3.2-bin-hadoop3.tgz

  2. 解压安装包

    bash 复制代码
    tar -xzf spark-3.3.2-bin-hadoop3.tgz -C /opt/
    ln -s /opt/spark-3.3.2-bin-hadoop3 /opt/spark
  3. 配置环境变量 (在所有节点):

    在**/etc/profile** 或**~/.bashrc**中添加:

    bash 复制代码
    export SPARK_HOME=/opt/spark
    export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

    然后执行:source /etc/profile

二、配置Spark

  1. 配置spark-env.sh

    bash 复制代码
    cd $SPARK_HOME/conf
    cp spark-env.sh.template spark-env.sh

    编辑spark-env.sh,添加:

    bash 复制代码
    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
    export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
    export SPARK_EXECUTOR_MEMORY=2g
    export SPARK_DRIVER_MEMORY=1g
  2. 配置spark-defaults.conf

    bash 复制代码
    cp spark-defaults.conf.template spark-defaults.conf

    编辑spark-defaults.conf,添加:

    bash 复制代码
    spark.master                     yarn
    spark.eventLog.enabled           true
    spark.eventLog.dir               hdfs://namenode:8020/spark-logs
    spark.history.fs.logDirectory    hdfs://namenode:8020/spark-logs
    spark.yarn.jars                  hdfs://namenode:8020/spark/jars/*
  3. 上传Spark依赖到HDFS

    bash 复制代码
    hdfs dfs -mkdir -p /spark/jars
    hdfs dfs -put $SPARK_HOME/jars/* /spark/jars/

三、配置YARN

  1. 确保YARN配置正确

    • 检查**$HADOOP_HOME/etc/hadoop/yarn-site.xml**:

      XML 复制代码
      <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>false</value>
      </property>
      <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
      </property>
      <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>8192</value> <!-- 根据实际内存调整 -->
      </property>
  2. 重启YARN服务

    bash 复制代码
    stop-yarn.sh
    start-yarn.sh

四、验证安装

  1. 运行Spark Pi示例

    bash 复制代码
    spark-submit --class org.apache.spark.examples.SparkPi \
    --master yarn \
    --deploy-mode cluster \
    $SPARK_HOME/examples/jars/spark-examples_2.12-3.3.2.jar 100
  2. 查看YARN Web UI

    访问**http://<yarn-resourcemanager>:8088**查看作业状态

  3. 查看Spark History Server(可选):

    bash 复制代码
    $SPARK_HOME/sbin/start-history-server.sh

    访问**http://<spark-history-server>:18080**

五、常见问题解决

  1. 内存不足错误

    • 调整**spark-submit** 的**--executor-memory** 和**--driver-memory**参数

    • 增加YARN的**yarn.nodemanager.resource.memory-mb**值

  2. 类路径问题

    • 确保**HADOOP_CONF_DIR** 和**YARN_CONF_DIR**正确指向Hadoop配置目录
  3. 网络连接问题

    • 检查所有节点之间的网络连接

    • 确保防火墙不会阻止必要的端口

  4. 权限问题

    • 确保HDFS目录有正确的权限

    • 使用**hdfs dfs -chmod**调整权限

通过以上步骤,您应该能够成功搭建一个Spark on YARN集群。根据实际环境和需求,可能需要调整内存配置和其他参数

相关推荐
大模型探索者几秒前
2026 企业智能体平台选型指南:从通用到行业深耕,怎么选?
大数据·人工智能
用户938515635074 小时前
从零构建《天龙八部》知识库:EPUB 加载→文本分割→向量嵌入→Milvus 存储→RAG 问答,一条链路打通
javascript·人工智能·全栈
阿三08125 小时前
跨境电商售后自动化分级标准:哪些能全自动、哪些半自动、哪些禁止自动化
大数据·人工智能·自动化
柚yuzumi6 小时前
变量明明定义了,为什么访问不到?深入理解 JavaScript 作用域
javascript
何时梦醒6 小时前
React + TypeScript + Vite 实战:从零构建 Color Picker 应用
前端·javascript·架构
Highcharts.js6 小时前
基于Highcharts开发的OHLC 股票K线图完全指南
javascript·信息可视化·echarts·数据可视化·highcharts·ohlc
默_笙6 小时前
😋 我让 DeepSeek-R1 在浏览器本地跑了起来,后端同事说"你认真的?"
前端·javascript
游戏新手村7 小时前
蝴蝶图在餐饮门店数据可视化中的应用
大数据·信息可视化·产品经理·数据可视化
GlobalHRTalk8 小时前
埃及名义雇主EOR业务概述与市场发展优势分析
大数据·运维·人工智能
JasonMa1538 小时前
从零搭建一个微信小程序活动管理平台(一):架构设计与技术选型
javascript·微信小程序·node.js