如何搭建spark yarn模式的集群

一、环境准备

  1. 操作系统:建议使用 CentOS、Ubuntu 等 Linux 系统。

  2. Java 环境:安装 JDK 1.8 或以上版本。

  3. Hadoop 环境:安装并配置 Hadoop 集群,确保 HDFS 和 YARN 服务正常运行。

二、安装 Spark

  1. 下载并解压 Spark:

下载 Spark 安装包(如 `spark-3.1.2-bin-hadoop3.2.tgz`)。

解压到指定目录,例如 `/opt/installs`:

复制代码
tar -zxf spark-3.1.2-bin-hadoop3.2.tgz -C /opt/installs

重命名并创建符号链接:

复制代码
     mv /opt/installs/spark-3.1.2-bin-hadoop3.2 /opt/installs/spark-yarn
     ln -s /opt/installs/spark-yarn /opt/installs/spark
  1. 配置环境变量:

在 `/etc/profile` 或用户主目录下的 `.bashrc` 文件中添加:

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

执行 `source /etc/profile` 或 `source ~/.bashrc` 使环境变量生效。

三、配置 Spark

  1. 修改 `spark-env.sh` 配置文件:

进入 Spark 配置目录:

复制代码
 cd /opt/installs/spark/conf

复制模板文件并编辑:

复制代码
     cp spark-env.sh.template spark-env.sh
     vim spark-env.sh

添加以下内容:

复制代码
     export JAVA_HOME=/opt/installs/jdk
     export HADOOP_CONF_DIR=/opt/installs/hadoop/etc/hadoop
     export YARN_CONF_DIR=/opt/installs/hadoop/etc/hadoop
     export SPARK_DAEMON_MEMORY=1g
     export SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://master:9820/spark/eventLogs -Dspark.history.fs.cleaner.enabled=true"

其中 `master` 是 NameNode 的主机名。

  1. 修改 `spark-defaults.conf` 文件:

复制模板文件并编辑:

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

添加以下内容:

复制代码
    spark.eventLog.enabled true
     spark.eventLog.dir hdfs://master:9820/spark/eventLogs
     spark.eventLog.compress true
     spark.yarn.historyServer.address master:18080
     spark.yarn.jars hdfs://master:9820/spark/jars/*
  1. 修改 `log4j.properties` 文件:

复制模板文件并编辑:

复制代码
cp log4j.properties.template log4j.properties

修改日志级别为 `WARN`:

复制代码
  log4j.rootCategory=WARN, console
  1. 上传 Spark JAR 包到 HDFS:

    复制代码
    hdfs dfs -mkdir -p /spark/jars
    hdfs dfs -put /opt/installs/spark/jars/* /spark/jars/

四、配置 YARN

  1. 修改 `yarn-site.xml` 文件:

编辑 Hadoop 的 `yarn-site.xml` 文件:

复制代码
vim /opt/installs/hadoop/etc/hadoop/yarn-site.xml

添加或修改以下配置:

复制代码
<property>
       <name>yarn.log-aggregation-enable</name>
       <value>true</value>
     </property>
     <property>
       <name>yarn.log-aggregation.retain-seconds</name>
       <value>604800</value>
     </property>
     <property>
       <name>yarn.log.server.url</name>
       <value>http://master:19888/jobhistory/logs</value>
     </property>
     <property>
       <name>yarn.nodemanager.pmem-check-enabled</name>
       <value>false</value>
     </property>
     <property>
       <name>yarn.nodemanager.vmem-check-enabled</name>
       <value>false</value>
     </property>
  1. 分发配置文件:

使用工具(如 `xsync.sh`)将修改后的 `yarn-site.xml` 文件分发到集群的其他节点。

五、启动集群

  1. 启动 Hadoop 集群:

    复制代码
    start-dfs.sh
    start-yarn.sh
  2. 启动 Spark 的 History Server:

    /opt/installs/spark/sbin/start-history-server.sh

六、测试集群

  1. 提交测试作业:

使用 Spark Shell 测试:

复制代码
spark-shell --master yarn

在 Spark Shell 中运行示例代码,如计算 PI 值:

Scala 复制代码
     spark.sparkContext.setLogLevel("WARN")
     val count = spark.sparkContext.parallelize(1 to 1000000, 10).map{i =>
       val x = Math.random()
       val y = Math.random()
       if (x*x + y*y < 1) 1 else 0
     }.reduce(_ + _)
     println(s"Pi is roughly ${4.0 * count / 1000000}")
  1. 查看 YARN Web UI:

访问 `http://master:8088`,查看作业运行情况。

通过以上步骤,即可成功搭建并运行 Spark on YARN 模式的集群。

相关推荐
Georgeviewer1 小时前
商业落地评测|实体门店GEO优化性价比与服务体系深度复盘
大数据·人工智能
腻害兔2 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
GIR1233 小时前
官方出品 | 多通道土壤呼吸测量系统市场现状与十五五规划深度报告:行业分析+趋势预测全收录
大数据·人工智能·机器学习
南讯股份Nascent4 小时前
洽洽全域会员项目启动会圆满召开
大数据·人工智能
大郭鹏宇4 小时前
基于 LangGraph 构建智能分诊系统(一):项目概述与环境搭建
大数据·人工智能·microsoft·langchain
Database_Cool_5 小时前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
天天爱吃肉82188 小时前
【电源拆解:跟着问答逐一认识开关适配器PCB元器件】
大数据·人工智能·python·功能测试·嵌入式硬件·汽车
Elastic 中国社区官方博客8 小时前
将你的 Grafana Kubernetes 仪表板迁移到 Elastic Observability:相同的 PromQL,30 倍更快的查询
大数据·人工智能·elasticsearch·搜索引擎·容器·kubernetes·grafana
abcy0712138 小时前
storm核心实时机制
大数据·storm
灵机一物8 小时前
合伙制律所分红和提成律师个税怎么合规优化?
大数据·人工智能