• Spark Standalone


    环境:CentOS 6.6 x64  选用Spark版本 1.4.1、Zookeeper 3.4.6

    一、安装

    1、Spark运行模式

        Local:使用于windows和linux平台(多用于测试,细分可分为5种情况)

          Standalone:spark集群模式,使用spark自己的调度方式

          On Yarn:运行在Hadoop 2的Yarn资源管理框架之上,由Yarn负责资源管理,Spark负责任务调度和计算(又可分为2种情况)

          On Mesos:Mesos是一个类似Yarn的资源调度框架,提供了有效的、跨分布式应用或框架的资源隔离和共享,可以运行Hadoop、Spark等框架。同上

      On Cloud:Spark支持HDFS、S3等多种分布式存储系统,可以进行云存储,例如AWS 的 EC2,使用这个模式能很方便的访问 Amazon的 S3

    2、Standalone模式集群安装

    2.1、前置环境准备

      安装好JDK,推荐版本: 1.7.x;

      设置SSH免密码登录、hosts、hostname、静态ip、iptables等

    2.2、下载、解压安装包到指定目录下(注意版本问题):

    # wget http://219.238.7.75/files/5165000007D0B131/www.eu.apache.org/dist/spark/spark-1.4.1/spark-1.4.1-bin-hadoop2.6.tgz
    # tar -zxvf softs/spark-1.4.1-bin-hadoop2.6.tgz -C /usr/local/
    # cd /usr/local/
    # mv spark-1.4.1-bin-hadoop2.6/ spark-1.4.1
    View Code

    2.3、修改配置文件

    (1)修改spark-env.sh,根据实际情况,在文件末尾添加参数

    # cd spark-1.4.1/conf/
    # cp spark-env.sh.template spark-env.sh
    # vim spark-env.sh
    View Code

    配置参数说明:

      基本配置: 

    export JAVA_HOME=/opt/jdk1.7.0_45    
    export SPARK_MASTER_IP=127.0.0.1   #指定主节点,可以填写ip或者主机名,所以要在前置环境中配置好hosts文件里ip和hostname的映射关系
    export SPARK_WORKER_CORES=6         #配置worker节点的cpu核数
    export SPARK_MASTER_PORT=7076      #spark URL端口,如 spark://master:7076
    export SPARK_MASTER_WEBUI_PORT=8080    #master webUI地址
    export SPARK_WORKER_WEBUI_PORT=8081    #worker webUI地址
    export SPARK_WORKER_MEMORY=10g    #每个worker占多少内存
    View Code

      高级参数:

    export SPARK_JAVA_OPTS="-verbose:gc -XX:-PrintGCDetails -XX:+PrintGCTimeStamps”  #用来设置GC参数
    export SPARK_WORKER_INSTANCES=2    #启动多少个worker,一台从节点机器可以有多个WORKER,一个worker启动一个JVM
    #       提示:SPARK_WORKER_CORES * SPARK_WORKER_INSTANCES = 每台机器总cores
    #       应用场景:单台服务器的内存超过200G时。原因是单个机器内存配置超过200G时配置,因为java VM在超过200G的服务器上性能不好。
    
    export SPARK_PID_DIR=/usr/local/spark/tmp    #worker.pid或者master.pid默认位置在/tmp 文件夹
    #       说明:RHEL6系统默认会每隔30天自动清理/tmp文件夹
    
    export spark.local.dir=/opt1/spark, /opt2/spark, /opt3/spark #各个磁盘挂载到不同opt目录下面
    #       说明:这是spark写shuffle输出的地⽅,增加IO输出到不同的磁盘等于加快了执行速度
    View Code

      注意:参数和=号之间没有空格。

    (2)创建slaves文件

      创建slaves文件,将全部节点的hostname或者ip列表添加进去。

    (3)分发软件包

      将上述配置好的软件包用scp工具分发到各个节点上的同一目录。

    2.4、集群启动与验证

    (1)启动集群各节点

    # sbin/start-all.sh   
    starting org.apache.spark.deploy.master.Master, logging to /usr/local/spark-1.4.1/sbin/../logs/spark-root-org.apache.spark.deploy.master.Master-1-node0.out
    node0: starting org.apache.spark.deploy.worker.Worker, logging to /usr/local/spark-1.4.1/sbin/../logs/spark-root-org.apache.spark.deploy.worker.Worker-1-node0.out
    node0: failed to launch org.apache.spark.deploy.worker.Worker:
    node0: full log in /usr/local/spark-1.4.1/sbin/../logs/spark-root-org.apache.spark.deploy.worker.Worker-1-node0.out
    # jps                #注意:启动有延迟,可以用jps命令查看进程,如果启动成功后会有Master和Worker进程
    Master
    Worker
    Jps
    View Code

    (2)验证

       浏览器访问对应节点的8080端口,如果能正常访问说明集群搭建成功。

    注意:1、Windows下访问时需要设置hosts文件,其映射列表从Linux上的hosts复制即可。

       2、如果8080端口被其他程序占用,可以修改其他端口,方法:

        编辑文件:sbin/start-master.sh,找到SPARK_MASTER_WEBUI_PORT=8080 进行修改即可。

    3、Standalone配置HA

    3.1、下载、解压Zookeeper

    # wget http://124.205.69.171/files/71380000000A6162/mirrors.cnnic.cn/apache/zookeeper/stable/zookeeper-3.4.6.tar.gz^C
    # tar -zxvf zookeeper-3.4.6.tar.gz -C /usr/local
    View Code

    3.2、配置zk.conf文件

    # mv zookeeper-3.4.6 zookeeper
    # cd zookeeper/conf
    # vim zoo.cfg
    参数如下:
    tickTime=2000       
    initLimit=10
    syncLimit=5
     
    dataDir=/usr/local/zookeeper/data      #需要修改的参数
    logDir=/usr/local/zookeeper/logs         #需要修改的参数
    
    clientPort=2181
    
    server.0=IP0:2888:3888 #需要修改的参数,注意这里对应集群的IP
    server.1=IP1:2888:3888 
    server.2=IP2:2888:3888 
    server.3=IP3:2888:3888 
    View Code

    注意重命名zookeeper文件名,否则带有-3.4.6可能会导致zk启动失败

    3.3、创建节点标识

      在数据存储目录下创建当前节点的标识myid

    # cd zookeeper/
    # mkdir data
    # cd data/
    # vim myid
    0
    View Code

    配置成功后,将Zookeeper软件包分发到各个节点上的同一位置。

    注意:修改各个节点的myid标识,要和当前zoo.cfg中IP和标识的对应关系一致。

    3.4、启动、验证zk集群

    (1)启动

      在各个节点上均启动zk,执行指令如下:

    # bin/zkServer.sh start

    (2)验证

    # bin/zkServer.sh status  #查看当前节点上的zk角色
    # jps  #查看进程

    3.4、配置Spark

    (1)停止Spark

    # /usr/local/spark-1.4.1/sbin/stop-all.sh

      注:HA的前提是standalone模式已经能够正常运行。

    (2)修改spark-env.sh

    # cd /usr/local/spark-1.4.1/conf
    # vim spark-env.sh
    View Code

      注释掉SPARK_MASTER_IP参数,不强制某一节点为主节点。

      添加如下参数:

    export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node0:2181,node1:2181 -Dspark.deploy.zookeeper.dir=/spark"       #指定Zookeeper的地址及HA方式给Spark

    (3)分发配置文件,启动各个节点

      使用scp命令分发新的配置文件spark-env.sh到各节点,覆盖原文件,并用sbin/start-all.sh启动各个节点上的Spark。

    3.5、验证

      在master所在的机器执行jps,查看进程,然后在另一节点上执行sbin/start-master.sh。

    此时,在8080端口访问的Web页面上,可以看到集群有两个master,一个处于活跃状态active,另一个处于备用状态standby。

    强制关闭活跃master节点上的Spark :sbin/stop-master.sh,过一会儿若备用的master变为活跃状态,说明HA配置成功。

     4、可能出现的问题及解决方案

    (1)Zookeeper集群启动失败

       一:集群时钟不同步,解决同步集群时钟;根据实际情况,可考虑自己在集群内部部署一台时钟服务器。

       二:时钟同步正常,但集群不能正常操作,通过zkCli连接某些节点时,一直打印日志:

           解决方案:bin/zkCleanup.sh count 3

       三:   查看myid、zk.cfg等配置文件有无遗漏,是否有配置冲突等现象;

          删除zk节点中,data目录下除myid文件之外的所有内容

          将Zookeeper的文件夹名称里的-3.4.6等版本信息去掉;

    扩展参考:    

     Spark运行模式及原理(一) - 图书-炼数成金-Dataguru专业数据分析社区  http://www.dataguru.cn/article-6803-1.html

  • 相关阅读:
    360网盘书籍分享
    oracle11g字符集问题之一
    order by 的列名不能参数化,要拼sql
    oracle11g的冷热备份
    Spring 事务管理的使用
    Spring 事务管理的API
    事务总结
    Excel 单元格中内容的换行
    手动配置IP地址
    MyBatis 三剑客
  • 原文地址:https://www.cnblogs.com/chinas/p/5557707.html
Copyright © 2020-2023  润新知