Spark集群安装

1.前提条件

  1. 下载安装

    官网下载预编译版本:https://spark.apache.org/downloads.html Spark的版本选择地址

    本次使用的Spark 3.2.1 版本下载地址:https://dlcdn.apache.org/spark/spark-3.2.1/spark-3.2.1-bin-hadoop3.2.tgz

    将tgz解压到安装目录后同步到所有机器

  2. 配置Spark环境变量(全部机器)

    vim /etc/profile
    //在文件中输入如下内容
    export SPARK_HOME=/opt/spark-3.2.1-bin-hadoop3.2
    export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME
    
    //使文件生效
    source /etc/profile 
    

2.环境和参数准备

  1. 集群中共有4个节点,分别为:bigdata1bigdata2bigdata3bigdata4
  2. Spark的安装目录定为:/opt/spark-3.2.1-bin-hadoop3.2
  3. Spark的数据目录定为:/data/spark/work

3.配置及安装

  1. 配置Spark的配置文件

    cp slaves.template slaves
    cp spark-defaults.conf.template spark-defaults.conf
    cp spark-env.sh.template spark-env.sh
    
    • 首先配置slaves文件,指定Spark的worker节点有哪些

      bigdata2
      bigdata3
      bigdata4
      
    • 配置spark-defaults.conf

      spark.master  spark://bigdata1:7077
      
    • 配置spark-env.sh

      SPARK_MASTER_HOST=bigdata1
      SPARK_MASTER_PORT=7077
      SPARK_MASTER_WEBUI_PORT=8080
      SPARK_WORKER_WEBUI_PORT=8081
      # spark运行应用程序的临时目录,包括日志和临时空间,默认值为spark安装目录下的work目录
      SPARK_WORKER_DIR=/data/spark/work
      # spark运行时pid存放的目录,这个默认是在/tmp下
      SPARK_PID_DIR=/var/run
      
  2. 将配置文件同步到其他机器

    rsync -av spark-3.2.1-bin-hadoop3.2 bigdata2:/opt 
    rsync -av spark-3.2.1-bin-hadoop3.2 bigdata3:/opt
    rsync -av spark-3.2.1-bin-hadoop3.2 bigdata4:/opt
    
  3. 启动Spark集群(master节点)

    sbin/start-all.sh
    

    访问master节点的8080端口即可查看集群状态

    使用如下启动命令可启动相应master和worker。在master节点启动脚本,本机即为master节点,或者采用conf/spark-env.sh中绑定master主机号和端口号

    • sbin/start-master.sh
    • sbin/start-slaves.sh
    • sbin/start-all.sh
    • sbin/stop-master.sh
    • sbin/stop-slaves.sh
    • sbin/stop-all.sh
  4. Spark使用

    使用Spark有两种方式,一种是命令行方式,一种是提交程序方式

    • 命令行

      bin/spark-shell --master spark://bigdata1:7077 
      

      –master 参数指定集群主节点,如果指定 local[*] 则表示spark只调用主节点机器

    • 提交程序

      bin/spark-submit --properties-file properties.conf Spark-1.0-SNAPSHOT.jar
      

FAQ:

  1. Spark中的配置优先级

    SparkConf(程序代码) > spark-submit 或 spark-shell > spark-defaults.conf > spark-env.sh > 默认值

  2. 静态配置和动态配置

    在代码中配置的为静态配置

    在spark-submit提交和spark-default.conf设置的参数为动态配置

  3. spark-defaults.conf 和 spark-env.sh 区别

    spark-env.sh 配置全局的 Spark 服务级别的参数

    spark-defaults.config 配置都是针对于 Spark 任务级别的,比如 driver、executor 的内存,jvm 参数等