如何搭建spark yarn模式的集群

一、基础环境准备
  1. 安装JDK 1.8+
    所有节点需安装JDK并配置环境变量,确保JAVA_HOME正确指向安装路径14。
  2. 部署Hadoop集群
    • 安装Hadoop(推荐3.x版本),配置YARN资源管理器4。

    • yarn-site.xml中启用资源调度:

      XML 复制代码
      <property>  
        <name>yarn.resourcemanager.hostname</name>  
        <value>主节点IP或主机名</value>  
      </property>  

设置HADOOP_HOMEHADOOP_CONF_DIR环境变量4。

  • 安装Spark

    • 下载与Hadoop兼容的Spark版本(如Spark 3.5.5对应Hadoop 3.x)4。

    • 解压至统一目录(如/opt/spark),配置SPARK_HOME环境变量4。

      二、Spark集成YARN配置
    • 修改spark-env.sh
      添加以下配置以关联Hadoop和YARN:

      复制代码

      bashCopy Code

      export JAVA_HOME=/opt/java/jdk8 export HADOOP_HOME=/opt/hadoop/hadoop-3.2.2 export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export SPARK_DIST_CLASSPATH=$(hadoop classpath) # 动态加载Hadoop类路径:ml-citation{ref="4" data="citationList"}

    • 配置spark-defaults.conf
      指定YARN为资源管理器:

      复制代码

      textCopy Code

      spark.master yarn spark.yarn.jars hdfs:///spark/jars/* # 可选,将Spark依赖上传至HDFS:ml-citation{ref="4,8" data="citationList"}


    三、集群分发与服务启动
    • 同步配置到所有节点
      使用scp或集群管理工具(如Ansible)将配置文件和安装目录分发至所有工作节点4。
    • 启动Hadoop与YARN服务
      • 启动HDFS:start-dfs.sh
      • 启动YARN:start-yarn.sh
        确认ResourceManager和NodeManager进程正常4。

    四、验证集群部署
    • 提交测试任务到YARN
      使用spark-submit提交示例程序:

      复制代码

      bashCopy Code

      spark-submit --class org.apache.spark.examples.SparkPi \ --master yarn \ $SPARK_HOME/examples/jars/spark-examples_2.12-3.5.5.jar 100
      检查YARN Web UI(默认端口8088)中任务状态和日志输出34。

    • 验证资源分配
      确认任务执行后,在YARN监控界面查看资源使用情况(CPU、内存分配)3。


    五、注意事项
    • 版本兼容性
      Spark、Hadoop、Scala版本需严格匹配(如Spark 3.5.5需Scala 2.12.x和Hadoop 3.3+)48。
    • 网络与权限
      • 确保节点间SSH无密码互通。
      • 防火墙开放YARN相关端口(如ResourceManager的8032、8088端口)4。
    • 依赖管理
      若将Spark JAR包上传至HDFS,需提前通过hadoop fs -put命令部署,避免任务运行时重复传输4。

    以上步骤通过整合Hadoop YARN与Spark配置实现集群资源统一管理,适用于生产环境的大规模任务调度。

相关推荐
Lhappy嘻嘻8 小时前
Java IO|File 文件操作 + 字节流 / 字符流完整笔记 + 递归删除文件实战
java·笔记·php
伊玛目的门徒8 小时前
试用leetcode之典中典 二数之和问题
java·算法·leetcode
jkyy20149 小时前
深耕AI健康医疗数据智库,赋能企业构建主动健康管理新生态
大数据·人工智能·健康医疗
懒鸟一枚11 小时前
深入理解 Linux 内存、Swap 交换分区与分页机制的关系
java·linux·数据库
2601_9619460811 小时前
AI API 网关实战:从单 Key 管理到企业级多租户架构
大数据·人工智能·金融·架构·api·个人开发
我命由我1234512 小时前
执行 Gradle 指令报错,无法将“grep”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
考虑考虑13 小时前
Sentinel安装
java·后端·微服务
大大大大晴天13 小时前
Flink CDC 深度解析:从原理到实践的全链路指南
大数据·flink
IT新视界14 小时前
Elasticsearch信创国产化替代
大数据·elasticsearch·搜索引擎
凤凰院凶涛QAQ14 小时前
《Java版数据结构 & 集合类剖析》栈与队列:“push/pop 是栈的灵魂,offer/poll 是队列的骨架——四组 API,两种人生”
java·开发语言·数据结构