zoukankan      html  css  js  c++  java
  • Spark高可用集群搭建

    Spark的安装与部署

    Spark的安装部署方式有以下几种模式

    1. Standalone
    2. YARN
    3. Mesos
    4. Amazon EC2

    伪分布式部署

    配置:conf/spark-env.sh

    vim conf/spark-env.sh
    
    # 配置jdk
    export JAVA_HOME=/root/training/jdk1.7.0_75
    
    # 指定master
    export SPARK_MASTER_HOST=hdp00
    export SPARK_MASTER_PORT=7077
    

    配置:conf/slave

    vim conf/slave
    
    # 指定worker节点
    hdp00
    

    分布式部署

    conf/spark-env.sh中配置项和伪分布式配置是一样的,只不过在conf/slave中配置的worker节点不一样而已。

    vim conf/slave
    
    # 配置两个worker节点
    hdp02
    hdp03
    

    启动spark集群

    sbin/start-all.sh
    

    Spark的HA

    基于文件系统的单点恢复

    主要用于开发或测试环境。当spark提供目录保存spark Application和worker的注册信息,并将他们的恢复状态写入该目录中,这时,一旦Master发生故障,就可以通过重新启动Master进程(sbin/start-master.sh),恢复已运行的spark Application和worker的注册信息。

    基于文件系统的单点恢复,主要是在spark-en.sh里对SPARKDAEMONJAVA_OPTS设置:

    spark.deploy.recoveryMode:设置为FILESYSTEM开启单点恢复功能,默认值:NONE

    spark.deploy.recoveryDirectory:Spark 保存恢复状态的目录

    export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=FILESYSTEM -Dspark.deploy.recoveryDirectory=/root/training/spark-2.1.0-bin-hadoop2.7/recovery
    

    测试:

    1、在hdp00上启动Spark集群
    
    2、在hdp02上启动spark shell
        MASTER=spark://hdp00:7077 spark-shell
    
    3、在hdp00上停止master
        stop-master.sh
    
    4、观察hdp02上的输出
    
    5、sbin/start-master.sh
    

    基于Zookeeper

    ZooKeeper提供了一个Leader Election机制,利用这个机制可以保证虽然集群存在多个Master,但是只有一个是Active的,其他的都是Standby。当Active的Master出现故障时,另外的一个Standby Master会被选举出来。由于集群的信息,包括Worker, Driver和Application的信息都已经持久化到ZooKeeper,因此在切换的过程中只会影响新Job的提交,对于正在进行的Job没有任何的影响。加入ZooKeeper的集群整体架构如下图所示。

    主要修改配置:conf/spark-env.sh

    spark.deploy.recoveryMode 设置为ZOOKEEPER开启单点恢复功能,默认值:NONE

    spark.deploy.zookeeper.url ZooKeeper集群的地址

    spark.deploy.zookeeper.dir Spark信息在ZK中的保存目录,默认:/spark

    # 注释如下两项
    #export SPARK_MASTER_HOST=hdp00
    #export SPARK_MASTER_PORT=7077  
    
    export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hdp00:2181,hdp02:2181,hdp03:2181 -Dspark.deploy.zookeeper.dir=/spark"
    

    启动spark集群

    # 在hdp00上启动集群
    sbin/start-all.sh
    
    # 此时也可以在hdp02上再启动一个master
    sbin/start-master.sh

    在hdp02节点上,此时master节点宕掉,hdp02就会自动切换为master:

  • 相关阅读:
    scoket --- 练习
    网络编程---scoket使用,七层协议,三次挥手建连接,四次挥手断连接
    类的总复习
    面向对象 --- 类的绑定方法,面向对象高阶
    组合,访问限制机制,抽象类 --- 练习
    面向对象 --- 类的组合,封装,多态
    类的继承 --- 练习
    面向对象 --- 类的继承
    基于面向对象设计一个游戏
    请求头类型content-type
  • 原文地址:https://www.cnblogs.com/tianboblog/p/9313743.html
Copyright © 2011-2022 走看看