Spark的Standalone模式安装部署

Spark运行模式

Spark 有不少种模式,最简单就是单机本地模式,还有单机伪分布式模式,复杂的则运行在集群中,目前能很好的运行在 Yarn和 Mesos 中,固然 Spark 还有自带的 Standalone 模式,对于大多数状况 Standalone 模式就足够了,若是企业已经有 Yarn 或者 Mesos 环境,也是很方便部署的。node

  • local(本地模式):经常使用于本地开发测试,本地还分为local单线程和local-cluster多线程;
  • standalone(集群模式):典型的Mater/slave模式,不过也能看出Master是有单点故障的;Spark支持ZooKeeper来实现 HA
  • on yarn(集群模式): 运行在 yarn 资源管理器框架之上,由 yarn 负责资源管理,Spark 负责任务调度和计算
  • on mesos(集群模式): 运行在 mesos 资源管理器框架之上,由 mesos 负责资源管理,Spark 负责任务调度和计算
  • on cloud(集群模式):好比 AWS 的 EC2,使用这个模式能很方便的访问 Amazon的 S3;Spark 支持多种分布式存储系统:HDFS 和 S3

Spark Standalone集群部署

准备工做

  • 这里我下载的是Spark的编译版本,不然须要事先自行编译
  • Spark须要Hadoop的HDFS做为持久化层,因此在安装Spark以前须要安装Hadoop,这里Hadoop的安装就不介绍了,给出一个教程Hadoop安装教程_单机/伪分布式配置
  • 实现建立hadoop用户,Hadoop、Spark等程序都在该用户下进行安装
  • ssh无密码登陆,Spark集群中各节点的通讯须要经过ssh协议进行,这须要事先进行配置。经过在hadoop用户的.ssh目录下将其余用户的id_rsa.pub公钥文件内容拷贝的本机的authorized_keys文件中,便可事先无登陆通讯的功能
  • Java环境的安装,同时将JAVA_HOME、CLASSPATH等环境变量放到主目录的.bashrc,执行source .bashrc使之生效

部署配置

这里配置工做须要如下几个步骤:shell

  1. 解压Spark二进制压缩包
  2. 配置conf/spark-env.sh文件
  3. 配置conf/slave文件

下面具体说明一下:浏览器

  • 配置Spark的运行环境,将spark-env.sh.template模板文件复制成spark-env.sh,而后填写相应须要的配置内容:bash

    export SPARK_MASTER_IP=hadoop1
    export SPARK_MASTER_PORT=7077
    export SPARK_WORKER_CORES=1
    export SPARK_WORDER_INSTANCES=1
    export SPARK_WORKER_MEMORY=3g

    其余选项内容请参照下面的选项说明:多线程

    # Options for the daemons used in the standalone deploy mode:
    # - SPARK_MASTER_IP, to bind the master to a different IP address or hostname
    # - SPARK_MASTER_PORT / SPARK_MASTER_WEBUI_PORT, to use non-default ports for the master
    # - SPARK_MASTER_OPTS, to set config properties only for the master (e.g. "-Dx=y")
    # - SPARK_WORKER_CORES, to set the number of cores to use on this machine
    # - SPARK_WORKER_MEMORY, to set how much total memory workers have to give executors (e.g. 1000m, 2g)
    # - SPARK_WORKER_PORT / SPARK_WORKER_WEBUI_PORT, to use non-default ports for the worker
    # - SPARK_WORKER_INSTANCES, to set the number of worker processes per node
    # - SPARK_WORKER_DIR, to set the working directory of worker processes
    # - SPARK_WORKER_OPTS, to set config properties only for the worker (e.g. "-Dx=y")
    # - SPARK_HISTORY_OPTS, to set config properties only for the history server (e.g. "-Dx=y")
  • conf/slave文件用户分布式节点的配置,这里只须要在slave文件中写入该节点的主机名便可框架

  • 将以上内容都配置好了,将这个spark目录拷贝到各个节点scp -r spark hadoop@hadoop2:~ssh

  • 接下来就能够启动集群了,在Spark目录中执行sbin/start-all.sh,而后能够经过netstat -nat命令查看端口7077的进程,还能够经过浏览器访问hadoop1:8080了解集群的概况分布式

Spark Client部署

Spark Client的做用是,事先搭建起Spark集群,而后再物理机上部署客户端,而后经过该客户端提交任务给Spark集群。
因为上面介绍了Standalone分布式集群是如何搭建的,这里只需将集群上的spark文件夹拷贝过来。
最简单的Spark客户端访问集群的方式就是经过Spark shell的方式:bin/spark-shell --master spark://hadoop1:7077这样就能够访问集群了。
这样在浏览器的Spark集群界面上就能够看到Running Applications一栏中有Spark shell的应用在执行。oop

Spark Standalone伪分布式部署

伪分布式是在一台机器上进行部署来模拟分布式的集群,这里部署的过程和Standalone集群的部署是相似的,事前的工做都是同样的,这里只是在配置文件中作相应的修改就能够了。测试

这里仍是配置这两个文件:

配置conf/spark-env.sh文件
配置conf/slave文件

  • 修改spark-env.sh文件,修改master的ip,这里主机名和用户ip分别在/etc/hostname/etc/hosts文件中进行配置
    export SPARK_MASTER_IP=jason
    export SPARK_MASTER_PORT=7077
    export SPARK_WORKER_CORES=1
    export SPARK_WORDER_INSTANCES=1
    export SPARK_WORKER_MEMORY=3g
  • slave文件中,填写本身的主机名,好比个人主机名jason


 

文/JasonDing(简书做者) 原文连接:http://www.jianshu.com/p/9d96fdc79fcb 著做权归做者全部,转载请联系做者得到受权,并标注“简书做者”。