• Spark的集群环境部署


    一、Standalone集群

    1.1、架构

    架构:普通分布式主从架构 
    主:Master:管理节点:管理从节点、接客、资源管理和任务 
    调度,等同于YARN中的ResourceManager 
    从:Worker:计算节点:负责利用自己节点的资源运行主节点 
    分配的任务 
    功能:提供分布式资源管理和任务调度,基本上与YARN是一致的

    1.2、部署 

    1.2.1环境

    需要在三台机器上都安装python3的环境,若是没有可以下载一下

    pip install python3

    没有环境则会报这个错误

    若是有其他工具需要用到不同版本的python环境,就安装一个Anaconda用来模拟环境,安装包在百度网盘
    链接:https://pan.baidu.com/s/1b8FqR8BZ8QfMfGmMzepcAw?pwd=1234 
    提取码:1234

    上传,或者同步:
    xsync.sh /opt/modules/Anaconda3-2021.05-Linux-x86_64.sh
    # 添加执行权限
    chmod u+x Anaconda3-2021.05-Linux-x86_64.sh
    # 执行
    sh ./Anaconda3-2021.05-Linux-x86_64.sh
    # 过程
    #第一次:【直接回车,然后按q】
       Please, press ENTER to continue
       >>>
    #第二次:【输入yes】
     Do you accept the license terms? [yes|no]
     [no] >>> yes
    #第三次:【输入解压路径:/opt/installs/anaconda3】
     [/root/anaconda3] >>> /opt/installs/anaconda3
     #第四次:【输入yes,是否在用户的.bashrc文件中初始化
    Anaconda3的相关内容】
     Do you wish the installer to initialize  Anaconda3
       by running conda init? [yes|no]
       [no] >>> yes

    刷新环境变量:
    # 刷新环境变量
    source /root/.bashrc
    # 激活虚拟环境,如果需要关闭就使用:conda deactivate
    conda activate
    配置环境变量:
    # 编辑环境变量
    vi /etc/profile
    # 添加以下内容
    # Anaconda Home
    export ANACONDA_HOME=/opt/installs/anaconda3
    export PATH=$PATH:$ANACONDA_HOME/bin
    # 刷新环境变量
    source /etc/profile

    1.2.2安装spark

    在第一台机器上进行部署

    # 上传之后解压安装
    cd /opt/modules
    tar -zxf spark-3.1.2-bin-hadoop3.2.tgz -C /opt/installs
    # 重命名
    cd /opt/installs
    mv spark-3.1.2-bin-hadoop3.2 spark-standalone
    # 重新构建软连接
    rm -rf spark  #之前创建过名字为spark的就删除一下,没有就跳过
    ln -s spark-standalone spark

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

    cd /opt/installs/spark/conf
    mv spark-env.sh.template spark-env.sh
    vim spark-env.sh

    下面是配置,路径换成自己的

    # 22行:申明JVM环境路径以及Hadoop的配置文件路径
    export JAVA_HOME=/opt/installs/jdk
    export HADOOP_CONF_DIR=/opt/installs/hadoop/etc/hadoop
    # 60行左右
    export SPARK_MASTER_HOST=bigdata01 # 主节点所在的地址
    export SPARK_MASTER_PORT=7077 #主节点内部通讯端口,用于接收客户端请求
    export SPARK_MASTER_WEBUI_PORT=8080 #主节点用于供外部提供浏览器web访问的端口
    export SPARK_WORKER_CORES=1     # 指定这个集群总每一个从节点能够使用多少核CPU
    export SPARK_WORKER_MEMORY=1g   #指定这个集群总每一个从节点能够使用多少内存
    export SPARK_WORKER_PORT=7078
    export SPARK_WORKER_WEBUI_PORT=8081
    export SPARK_DAEMON_MEMORY=1g  # 进程自己本身使用的内存
    export SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://bigdata01:9820/spark/eventLogs/ -Dspark.history.fs.cleaner.enabled=true"
    # Spark中提供了一个类似于jobHistoryServer的进程,就叫做HistoryServer, 用于查看所有运行过的spark程序

    在HDFS上创建程序日志存储目录。首先如果没有启动hdfs,需要启动一下

    # 第一台机器启动HDFS
    start-dfs.sh
    # 创建程序运行日志的存储目录
    hdfs dfs -mkdir -p /spark/eventLogs/

    spark-defaults.conf:Spark属性配置文件

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

    # 末尾
    spark.eventLog.enabled           true
    spark.eventLog.dir              hdfs://bigdata01:9820/spark/eventLogs
    spark.eventLog.compress              true

    workers:从节点地址配置文件

    mv workers.template workers
    vim workers

    # 删掉localhost,添加以下内容
    bigdata01
    bigdata02
    bigdata03

    log4j.properties:日志配置文件

    mv log4j.properties.template log4j.properties
    vim log4j.properties

     #这一步是为了在运行过程中不显示那么多没用的提示

    # 19行:修改日志级别为WARN
    log4j.rootCategory=WARN, console

    log4j的5种 级别  debug --> info --> warn --error -->fatal

    把安装的spark同步到第二台以及第三胎机器上 ,不要忘记创建软连接

    1.3、启动集群

    启动master:
    cd /opt/installs/spark
    sbin/start-master.sh
    启动所有worker:
    sbin/start-workers.sh
    如果你想启动某一个worker
    sbin/start-worker.sh

    启动日志服务:
    sbin/start-history-server.sh

    要想关闭某个服务,将start换为stop

    1.4、监控集群

    master监控界面:

    http://bigdata01:8080/

     二、Yarn模式

    为什么要将Spark的程序运行在YARN上,不运行在自带的 Standalone集群上?
    1、统一化资源管理 
    Standalone是Spark专用的资源管理集群,只能用于运行 Spark程序 
    YARN是功能的分布式资源管理平台,可以运行各种分布式程 序:MR、Tez、Spark、Flink 
    工作中硬件集群只有一套,只能选择一个平台来管理,从整个技术架构来说选择YARN更合适
    2、YARN调度机制更加完善和成熟 
    支持动态资源分配以及多种调度机制,比如容量调度、公平调度。

    2.1、关闭以前的StandAlone老集群

    cd /opt/installs/spark
    sbin/stop-master.sh
    sbin/stop-workers.sh
    sbin/stop-history-server.sh

    2.2、配置第一台服务器

    每一个模式使用一个安装包,这样以后要使用那个模式,将软连接修改成对应文件夹就行

    cd /opt/modules/
    tar -zxf spark-3.1.2-bin-hadoop3.2.tgz -C /opt/installs
    cd /opt/installs
    mv spark-3.1.2-bin-hadoop3.2 spark-yarn
    rm -rf /opt/installs/spark
    ln -s /opt/installs/spark-yarn /opt/installs/spark

    2.3、配置环境

    修改spark-env.sh配置文件

    cd /opt/installs/spark/conf
    mv spark-env.sh.template spark-env.sh
    vim /opt/installs/spark/conf/spark-env.sh
    ## 22行左右设置JAVA安装目录、HADOOP和YARN配置文件
    目录
    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://bigdata01:9820/spark/eventLogs/ -Dspark.history.fs.cleaner.enabled=true"

    修改spark-defaults.conf 文件:

    cd /opt/installs/spark/conf
    mv spark-defaults.conf.template spark-defaults.conf

    vim spark-defaults.conf
    ## 添加内容:
    spark.eventLog.enabled           true
    spark.eventLog.dir           hdfs://bigdata01:9820/spark/eventLogs
    spark.eventLog.compress           true
    spark.yarn.historyServer.address bigdata01:18080
    spark.yarn.jars           hdfs://bigdata01:9820/spark/jars/*

    修改log4j.properties

    mv log4j.properties.template log4j.properties

    修改级别为WARN,打印日志少一点。

    上传spark jar包:

    #因为YARN中运行Spark,需要用到Spark的一些类和方法
    #如果不上传到HDFS,每次运行YARN都要上传一次,比较慢
    #所以自己手动上传一次,以后每次YARN直接读取即可
    hdfs dfs -mkdir -p /spark/jars/
    hdfs dfs -put /opt/installs/spark/jars/* /spark/jars/

    修改yarn-site.xml

    cd /opt/installs/hadoop/etc/hadoop

    检查以下内置少什么,就配什么。

      yarn.log-aggregation-enable
      true




      yarn.log-aggregation.retain-seconds
      604800


      yarn.log.server.url
      http://bigdata01:19888/jobhistory/logs



      yarn.nodemanager.pmem-check-enabled
      false


      yarn.nodemanager.vmem-check-enabled
      false

    将yarn-site.xml的配置同步到另外两台机器上

    2.4、启动集群

    # 启动yarn
    start-yarn.sh
    # 启动MR的JobHistoryServer:19888
    mapred --daemon start historyserver
    # 启动Spark的HistoryServer:18080
    /opt/installs/spark/sbin/start-history-server.sh

  • 相关阅读:
    Set 集合和其之类 HashSet、LinkedHashSet
    js 生成随机数(含随机颜色)
    写读后感的时候,可以适当地引用书中的内容吗?
    蓝桥杯2022年第十三届决赛真题-修路
    使用sentinel实现熔断限流——微服务总结(四)
    CorelDRAW2023最新版矢量设计软件
    面试24K字节测试开发岗被血虐,到底具有怎样的技术才算高级水平?
    LeetCode 热题 HOT 100 第七十四天 337. 打家劫舍 III 中等题 用python3求解
    最新最全面的Spring详解(一)——Spring概述与IOC容器
    【Transformers】预训练模型使用工具Transformer(1):初识Hugging Face
  • 原文地址:https://blog.csdn.net/xieyichun_/article/details/143415473