Spark 的Standalone和Yarn模式的环境配置

1 Standalone 模式

Spark 的Standalone 模式体现了经典的master-slave 模式。

集群规划:

hadoop102hadoop103hadoop104
SparkWorker MasterWorkerWorker

解压缩文件

spark-3.0.0-bin-hadoop3.2.tgz资源
链接:https://pan.baidu.com/s/1d-FqvRByjUKKRoMn_PfsEA?pwd=3j14
提取码:3j14
–来自百度网盘超级会员V5的分享

将 spark-3.0.0-bin-hadoop3.2.tgz 文件上传到Linux 并解压缩在指定位置

tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module 
cd /opt/module  
mv spark-3.0.0-bin-hadoop3.2 spark-standalone 

修改配置文件

  1. 进入解压缩后路径的 conf 目录,修改slaves.template 文件名为slaves

    mv slaves.template slaves 
    
  2. 修改 slaves 文件,添加work 节点

    hadoop102
    hadoop103
    hadoop104
    
  3. 修改 spark-env.sh.template 文件名为spark-env.sh

    mv spark-env.sh.template spark-env.sh 
    
  4. 修改 spark-env.sh 文件,添加JAVA_HOME 环境变量和集群对应的 master 节点

    export JAVA_HOME=/opt/module/jdk1.8.0_144 
    SPARK_MASTER_HOST=hadoop102 
    SPARK_MASTER_PORT=7077 
    

    注意:7077 端口,相当于 hadoop3 内部通信的 8020 端口,此处的端口需要确认自己的Hadoop 配置

  5. 分发 spark-standalone 目录

    xsync spark-standalone 
    

启动集群

sbin/start-all.sh 

查看三台服务器运行进程

================hadoop102================ 
3330 Jps 
3238 Worker 
3163 Master 
================hadoop103================ 
2966 Jps 
2908 Worker 
================hadoop104================ 
2978 Worker 
3036 Jps 
  1. 查看 Master 资源监控Web UI 界面: http://hadoop102:8080

提交应用

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop102:7077 \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
  • –class 表示要执行程序的主类
  • –master spark://hadoop102:7077 独立部署模式,连接到Spark 集群
  • spark-examples_2.12-3.0.0.jar 运行类所在的jar
  • 数字 10 表示程序的入口参数,用于设定当前应用的任务数量

提交参数说明

bin/spark-submit \
--class <main-class> 
--master <master-url> \
... # other options 
<application-jar> \
[application-arguments] 
参数解释可选值举例
–classSpark 程序中包含主函数的类
–masterSpark 程序运行的模式(环境)模式:local[*]、spark://hadoop102:7077、 Yarn
–executor-memory 1G指定每个 executor 可用内存为1G符合集群内存配置即可,具体情况具体分析。
–total-executor-cores 2指定所有executor 使用的cpu 核数为 2 个
–executor-cores指定每个executor 使用的cpu 核数
application-jar打包好的应用 jar,包含依赖。这个 URL 在集群中全局可见。 比如 hdfs:// 共享存储系统,如果是file:// path,那么所有的节点的path 都包含同样的 jar
application-arguments传给 main()方法的参数

配置历史服务

  1. 修改 spark-defaults.conf.template 文件名为spark-defaults.conf

    mv spark-defaults.conf.template spark-defaults.conf 
    
  2. 修改 spark-default.conf 文件,配置日志存储路径

    spark.eventLog.enabled          true 
    spark.eventLog.dir               hdfs://hadoop102:8020/directory 
    

    注意:需要启动hadoop 集群,HDFS 上的directory 目录需要提前存在。

    sbin/start-dfs.sh 
    hadoop fs -mkdir /directory 
    
  3. 修改 spark-env.sh 文件, 添加日志配置

    export SPARK_HISTORY_OPTS=" 
    -Dspark.history.ui.port=18080  
    -Dspark.history.fs.logDirectory=hdfs://hadoop102:8020/directory  
    -Dspark.history.retainedApplications=30" 
    
    • 参数 1 含义:WEB UI 访问的端口号为18080
    • 参数 2 含义:指定历史服务器日志存储路径
    • 参数 3 含义:指定保存Application 历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数。
  4. 分发配置文件

    xsync conf  
    
  5. 重新启动集群和历史服务

    sbin/start-all.sh 
    sbin/start-history-server.sh 
    
  6. 重新执行任务

    bin/spark-submit \
    class org.apache.spark.examples.SparkPi \
    master spark://hadoop102:7077 \
    examples/jars/spark-examples_2.12-3.0.0.jar \
    10 
    
  7. 查看历史服务:http://hadoop102:18080

配置高可用(HA)

  • 因为当前集群中的 Master 节点只有一个,所以会存在单点故障问题。
  • 为了解决单点故障问题,需要在集群中配置多个 Master 节点
  • 一旦处于活动状态的 Master发生故障时,由备用 Master 提供服务,保证作业可以继续执行。
hadoop102hadoop103hadoop104
SparkMaster
Zookeeper
Worker
Master
Zookeeper
Worker
Zookeeper
Worker
  1. 停止集群
    sbin/stop-all.sh

  2. 启动Zookeeper
    xstart zk

  3. 修改 spark-env.sh 文件添加如下配置

    注释如下内容: 
    #SPARK_MASTER_HOST=linux1 
    #SPARK_MASTER_PORT=7077 
     
    添加如下内容: 
    #Master 监控页面默认访问端口为 8080,但是可能会和 Zookeeper 冲突,所以改成 8989,也可以自
    定义,访问 UI 监控页面时请注意 
    SPARK_MASTER_WEBUI_PORT=8989 
     
    export SPARK_DAEMON_JAVA_OPTS=" 
    -Dspark.deploy.recoveryMode=ZOOKEEPER  
    -Dspark.deploy.zookeeper.url=hadoop102,hadoop103,hadoop104  
    -Dspark.deploy.zookeeper.dir=/spark" 
    
  4. 分发配置文件
    xsync conf/

  5. 启动集群
    sbin/start-all.sh

  6. 启动 linux2 的单独 Master 节点,此时linux2 节点 Master 状态处于备用状态
    sbin/start-master.sh

  7. 提交应用到高可用集群

    bin/spark-submit \
    --class org.apache.spark.examples.SparkPi \
    --master spark://hadoop102:7077,hadoop103:7077 \
    ./examples/jars/spark-examples_2.12-3.0.0.jar \
    10 
    
  8. 停止 hadoop102 的 Master 资源监控进程

  9. 查看 hadoop103 的 Master 资源监控Web UI,稍等一段时间后,hadoop103 节点的 Master 状态提升为活动状态

2 Yarn 模式

解压缩文件

将spark-3.0.0-bin-hadoop3.2.tgz 文件上传到linux 并解压缩,放置在指定位置。

tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module 
cd /opt/module  
mv spark-3.0.0-bin-hadoop3.2 spark-yarn 

修改配置文件

  1. 修改 hadoop 配置文件/opt/module/hadoop/etc/hadoop/yarn-site.xml, 并分发

    <!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是 true --> 
    <property> 
         <name>yarn.nodemanager.pmem-check-enabled</name> 
         <value>false</value> 
    </property> 
     
    <!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是 true --> 
    <property> 
         <name>yarn.nodemanager.vmem-check-enabled</name> 
         <value>false</value> 
    </property> 
    
    xsync yarn-site.xml
    
  2. 修改 conf/spark-env.sh,添加JAVA_HOME 和YARN_CONF_DIR 配置

    mv spark-env.sh.template spark-env.sh 
    。。。 
    export JAVA_HOME=/opt/module/jdk1.8.0_144 
    YARN_CONF_DIR=/opt/module/hadoop/etc/hadoop 
    

启动 HDFS 以及 YARN 集群

提交应用

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10 

查看http://hadoop103:8088 页面,点击History,查看历史页面

配置历史服务器

  1. 修改 spark-defaults.conf.template 文件名为spark-defaults.conf

    mv spark-defaults.conf.template spark-defaults.conf

  2. 修改 spark-default.conf 文件,配置日志存储路径

    spark.eventLog.enabled          true 
    spark.eventLog.dir              hdfs://hadop102:8020/directory 
    

    注意:需要启动hadoop 集群,HDFS 上的目录需要提前存在。

    [root@hadop102 hadoop]# sbin/start-dfs.sh 
    [root@hadop102 hadoop]# hadoop fs -mkdir /directory 
    
  3. 修改 spark-env.sh 文件, 添加日志配置

    export SPARK_HISTORY_OPTS=" 
    -Dspark.history.ui.port=18080  
    -Dspark.history.fs.logDirectory=hdfs://hadop102:8020/directory  
    -Dspark.history.retainedApplications=30" 
    

    参数 1 含义:WEB UI 访问的端口号为18080
    参数 2 含义:指定历史服务器日志存储路径
    参数 3 含义:指定保存Application 历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数。

  4. 修改 spark-defaults.conf

    spark.yarn.historyServer.address=hadop102:18080 
    spark.history.ui.port=18080 
    
  5. 启动历史服务

    sbin/start-history-server.sh

  6. 重新提交应用

    bin/spark-submit \
    --class org.apache.spark.examples.SparkPi \
    --master yarn \
    --deploy-mode client \
    ./examples/jars/spark-examples_2.12-3.0.0.jar \
    10 
    
  7. Web 页面查看日志:http://hadop103:8088

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值