• Hapoop 搭建 (十一)spark(HA)+Hbase(HA)+zookeeper+hadoop 集群


    参考:https://blog.csdn.net/sunxiaoju/article/details/85918135

    spark下载地址:http://spark.apache.org/downloads.html

    spark版本:spark-3.0.0-preview2-bin-hadoop2.7

    部署采用 Spark Standalone 集群模式

    一、下载并上传解压安装包

    tar -xvf spark-3.0.0-preview2-bin-hadoop2.7.tar -C /opt/modules/

    二、修改配置文件,配置文件都在安装目录的conf文件夹中

    /opt/modules/spark-3.0.0-preview2-bin-hadoop2.7/conf

    1、修改slaves文件

    包含所有需要启动的worker节点的主机名

    [hadoop@centos01 conf]$ cp slaves.template slaves
    [hadoop@centos01 conf]$ vi slaves
    [hadoop@centos01 conf]$ cat slaves
    # A Spark Worker will be started on each of the machines listed below.
    centos02
    centos03

    表示centos02、centos03设置为worker节点

    2、修改spark-env.sh文件

    [hadoop@centos01 conf]$ cp spark-env.sh.template spark-env.sh
    [hadoop@centos01 conf]$ vi spark-env.sh
    
    export JAVA_HOME=/opt/modules/jdk1.8.0_181
    export SPARK_MASTER_IP=centos01
    export SPARK_MASTER_PORT=7077

    3、复制Spark安装文件到其它节点

    scp -r /opt/modules/spark-3.0.0-preview2-bin-hadoop2.7/ hadoop@centos02:/opt/modules/
    scp -r /opt/modules/spark-3.0.0-preview2-bin-hadoop2.7/ hadoop@centos03:/opt/modules/

    三、启动Spark集群

    启动 
    sh /opt/modules/spark-3.0.0-preview2-bin-hadoop2.7/sbin/start-all.sh
    停止
    sh /opt/modules/spark-3.0.0-preview2-bin-hadoop2.7/sbin/stop-all.sh
    [hadoop@centos01 sbin]$ sh /opt/modules/spark-3.0.0-preview2-bin-hadoop2.7/sbin/start-all.sh
    starting org.apache.spark.deploy.master.Master, logging to /opt/modules/spark-3.0.0-preview2-bin-hadoop2.7/logs/spark-hadoop-org.apache.spark.deploy.master.Master-1-centos01.out
    centos03: starting org.apache.spark.deploy.worker.Worker, logging to /opt/modules/spark-3.0.0-preview2-bin-hadoop2.7/logs/spark-hadoop-org.apache.spark.deploy.worker.Worker-1-centos03.out
    centos02: starting org.apache.spark.deploy.worker.Worker, logging to /opt/modules/spark-3.0.0-preview2-bin-hadoop2.7/logs/spark-hadoop-org.apache.spark.deploy.worker.Worker-1-centos02.out
    [hadoop@centos01 sbin]$ jps
    89105 Jps
    85024 Master
    4914 DataNode
    5635 JournalNode
    7731 ResourceManager
    3877 QuorumPeerMain
    6806 DFSZKFailoverController
    7830 HRegionServer
    7655 HMaster
    10429 NodeManager
    
    [hadoop@centos02 ~]$ jps
    6610 DFSZKFailoverController
    7522 ResourceManager
    130066 HMaster
    129924 HRegionServer
    5431 JournalNode
    74237 Worker
    78429 Jps
    3757 QuorumPeerMain
    4606 NameNode
    4750 DataNode
    10222 NodeManager
    
    [hadoop@centos03 ~]$ jps
    3747 QuorumPeerMain
    9797 NodeManager
    4729 DataNode
    111323 HRegionServer
    57610 Jps
    53341 Worker
    5391 JournalNode
    查看
    http://192.168.0.171:8080

    四、Spark HA 搭建

     

     1、停止Spark集群

    sh /opt/modules/spark-3.0.0-preview2-bin-hadoop2.7/sbin/stop-all.sh

    2、修改配置文件

    修改spark-env.sh文件

    添加
    export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=centos01:2181,centos02:2181,centos03:2181 -Dspark.deploy.zookeeper.dir=/spark"
    
    删除
    #export SPARK_MASTER_IP=centos01
    -Dspark.deploy.recoveryMode=ZOOKEEPER    
    #说明整个集群状态是通过zookeeper来维护的,整个集群状态的恢复也是通过zookeeper来维护的。就是说用zookeeper做了spark的HA配置,Master(Active)挂掉的话,Master(standby)要想变成Master(Active)的话,Master(Standby)就要像zookeeper读取整个集群状态信息,然后进行恢复所有Worker和Driver的状态信息,和所有的Application状态信息; 
    -Dspark.deploy.zookeeper.url=entos01:2181,centos02:2181,centos03:2181
    #将所有配置了zookeeper,并且在这台机器上有可能做master(Active)的机器都配置进来;(用了3台,就配置了3台) 
    
    -Dspark.deploy.zookeeper.dir=/spark
    #-Dspark.deploy.zookeeper.dir是保存spark的元数据,保存了spark的作业运行状态; 
    zookeeper会保存spark集群的所有的状态信息,包括所有的Workers信息,所有的Applactions信息,所有的Driver信息 同步到另2个节点
    复制到另外2个节点
    scp
    /opt/modules/spark-3.0.0-preview2-bin-hadoop2.7/conf/spark-env.sh hadoop@centos02:/opt/modules/spark-3.0.0-preview2-bin-hadoop2.7/conf/
    scp /opt/modules/spark-3.0.0-preview2-bin-hadoop2.7/conf/spark-env.sh hadoop@centos03:/opt/modules/spark-3.0.0-preview2-bin-hadoop2.7/conf/

    3、启动Spark集群  ⚠️在哪个节点上启动,活动状态的Master就在那个节点上

    在centos01启动 
    sh /opt/modules/spark-3.0.0-preview2-bin-hadoop2.7/sbin/start-all.sh
    在centos02启动第二个master
    sh /opt/modules/spark-3.0.0-preview2-bin-hadoop2.7/sbin/start-master.sh
    [hadoop@centos02 conf]$ sh /opt/modules/spark-3.0.0-preview2-bin-hadoop2.7/sbin/start-master.sh
    starting org.apache.spark.deploy.master.Master, logging to /opt/modules/spark-3.0.0-preview2-bin-hadoop2.7/logs/spark-hadoop-org.apache.spark.deploy.master.Master-1-centos02.out
    [hadoop@centos02 conf]$ 

    4、查看节点进程

    [hadoop@centos01 conf]$ jps
    4914 DataNode
    5635 JournalNode
    7731 ResourceManager
    3877 QuorumPeerMain
    6806 DFSZKFailoverController
    7830 HRegionServer
    7655 HMaster
    3559 Jps
    10429 NodeManager
    123598 Master
    
    [hadoop@centos02 conf]$ jps
    6610 DFSZKFailoverController
    7522 ResourceManager
    130066 HMaster
    129924 HRegionServer
    5431 JournalNode
    123224 Jps
    3757 QuorumPeerMain
    4606 NameNode
    4750 DataNode
    10222 NodeManager
    112590 Worker
    1282 Master
    
    [hadoop@centos03 ~]$ jps
    102592 Jps
    3747 QuorumPeerMain
    9797 NodeManager
    4729 DataNode
    111323 HRegionServer
    91850 Worker
    5391 JournalNode

    5、测试

    http://192.168.0.171:8080
    http://192.168.0.172:8080

     

     

    连接spark-shell
    sh /opt/modules/spark-3.0.0-preview2-bin-hadoop2.7/bin/spark-shell --master spark://192.168.0.171:7077
    [hadoop@centos01 bin]$ sh /opt/modules/spark-3.0.0-preview2-bin-hadoop2.7/bin/spark-shell --master spark://192.168.0.171:7077
    20/03/20 22:47:27 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
    Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
    Setting default log level to "WARN".
    To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
    Spark context Web UI available at http://centos01:4040
    Spark context available as 'sc' (master = spark://192.168.0.171:7077, app id = app-20200320224813-0000).
    Spark session available as 'spark'.
    Welcome to
          ____              __
         / __/__  ___ _____/ /__
        _ / _ / _ `/ __/  '_/
       /___/ .__/\_,_/_/ /_/\_   version 3.0.0-preview2
          /_/
             
    Using Scala version 2.12.10 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_181)
    Type in expressions to have them evaluated.
    Type :help for more information.
    
    scala> 

    五、配置详解

    1、spark-env.sh配置

    环境变量含义
    SPARK_MASTER_IP master实例绑定的IP地址,例如,绑定到一个公网IP
    SPARK_MASTER_PORT mater实例绑定的端口(默认7077)
    SPARK_MASTER_WEBUI_PORT master web UI的端口(默认8080)
    SPARK_MASTER_OPTS master专用配置属性,格式如”-Dx=y” (默认空),可能的选项请参考下面的列表。
    SPARK_LOCAL_DIRS Spark的本地工作目录,包括:映射输出的临时文件和RDD保存到磁盘上的临时数据。这个目录需要快速访问,最好设成本地磁盘上的目录。也可以通过使用逗号分隔列表,将其设成多个磁盘上的不同路径。
    SPARK_WORKER_CORES 本机上Spark应用可以使用的CPU core上限(默认所有CPU core)
    SPARK_WORKER_MEMORY 本机上Spark应用可以使用的内存上限,如:1000m,2g(默认为本机所有内存减去1GB);注意每个应用单独使用的内存大小要用 spark.executor.memory 属性配置的。
    SPARK_WORKER_PORT Spark worker绑定的端口(默认随机)
    SPARK_WORKER_WEBUI_PORT worker web UI端口(默认8081)
    SPARK_WORKER_INSTANCES 每个slave机器上启动的worker实例个数(默认:1)。如果你的slave机器非常强劲,可以把这个值设为大于1;相应的,你需要设置SPARK_WORKER_CORES参数来显式地限制每个worker实例使用的CPU个数,否则每个worker实例都会使用所有的CPU。
    SPARK_WORKER_DIR Spark worker的工作目录,包括worker的日志以及临时存储空间(默认:${SPARK_HOME}/work)
    SPARK_WORKER_OPTS worker的专用配置属性,格式为:”-Dx=y”,可能的选项请参考下面的列表。
    SPARK_DAEMON_MEMORY Spark master和worker后台进程所使用的内存(默认:1g)
    SPARK_DAEMON_JAVA_OPTS Spark master和workers后台进程所使用的JVM选项,格式为:”-Dx=y”(默认空)
    SPARK_PUBLIC_DNS Spark master和workers使用的公共DNS(默认空)

    注意: 启动脚本目前不支持Windows。如需在Windows上运行,请手工启动master和workers。

    SPARK_MASTER_OPTS支持以下属性:

    属性名默认值含义
    spark.deploy.retainedApplications 200 web UI上最多展示几个已结束应用。更早的应用的数将被删除。
    spark.deploy.retainedDrivers 200 web UI上最多展示几个已结束的驱动器。更早的驱动器进程数据将被删除。
    spark.deploy.spreadOut true 独立部署集群的master是否应该尽可能将应用分布到更多的节点上;设为true,对数据本地性支持较好;设为false,计算会收缩到少数几台机器上,这对计算密集型任务比较有利。
    spark.deploy.defaultCores (无限制) Spark独立模式下应用程序默认使用的CPU个数(没有设置spark.cores.max的情况下)。如果不设置,则为所有可用CPU个数(除非设置了spark.cores.max)。如果集群是共享的,最好将此值设小一些,以避免用户占满整个集群。
    spark.worker.timeout 60 如果master没有收到worker的心跳,那么将在这么多秒之后,master将丢弃该worker。

    SPARK_WORKER_OPTS支持以下属性:

    属性名默认值含义
    spark.worker.cleanup.enabled false 是否定期清理 worker 和应用的工作目录。注意,该设置仅在独立模式下有效,YARN有自己的清理方式;同时,只会清理已经结束的应用对应的目录。
    spark.worker.cleanup.interval 1800 (30 minutes) worker清理本地应用工作目录的时间间隔(秒)
    spark.worker.cleanup.appDataTtl 7 * 24 * 3600 (7 days) 清理多久以前的应用的工作目录。这个选项值将取决于你的磁盘总量。spark应用会将日志和jar包都放在其对应的工作目录下。随着时间流逝,应用的工作目录很快会占满磁盘,尤其是在你的应用提交比较频繁的情况下。

    结束

  • 相关阅读:
    PKUSC2022 游记
    「ZJOI2022」树
    「ZJOI2022」面条
    NOI2016~2021 Solution Set
    达梦数据库DM8企业版安装教程及问题解析
    Spring Boot 内置工具类 Binge
    ubuntu配置安装MySQL数据库
    Xshell连接腾讯云服务器
    Phoenix整合HBase安装部署、HBase整合Phoenix安装部署
    spring cloud gateway中解决第一次请求失败的问题
  • 原文地址:https://www.cnblogs.com/xuchen0117/p/12527525.html
Copyright © 2020-2023  润新知