简介

image.png

master节点主要运行集群管理器的中心化部分,所承载的作用是分配Application到Worker节点,维护Worker节点,Driver,Application的状态

Worker节点负责具体的业务运行

配置spark(standalone)

spark部署模式有Local,Local-Cluster,Standalone,Yarn,Mesos
我们选择最具有代表性的standalone集群部署模式

进入到spark安装目录

  1. cd ./spark-2.1.1-bin-hadoop2.7/conf

将slaves.template复制为slaves
添加内容

  1. slave1
  2. slave2

spark-env.sh.template复制为spark-env.sh
添加内容

  1. export HADOOP_CONF_DIR=/root/tools/hadoop-2.7.2
  2. # 指定spark老大master的ip地址,如果是HA,这样不配置,配了ip就是单机,不配ip就要配高可用
  3. export SPARK_MASTER_IP=master
  4. # 指定可用的cpu内核数量(默认: 所有可用)
  5. #export SPARK_WORKER_CORES=1
  6. # 作业可使用的内存容量,默认格式为1000m或者2g(默认:所有RAM去掉给操作系统用的1GB)
  7. #export SPARK_WORKER_MEMORY=500m
  8. # 机器上的worker数量(默认:1).当你有一个非常强大的计算机时可启动多个worker进程
  9. #export SPARK_WORKER_INSTANCES=1
  10. export SPARK_MASTER_PORT=7077
  11. export JAVA_HOME=/usr/jdk8
  12. #(可选)配置两个spark master实现高可靠(首先要配置zookeeper集群,在spark-env.sh添加SPARK_DAEMON_JAVA_OPTS)
  13. #export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master:2181,slave1:2181,slave2:2181 -Dspark.deploy.zookeeper.dir=/spark"

启动

在sbin目录下

  1. ./start-all.sh

日志

  1. starting org.apache.spark.deploy.master.Master, logging to /root/tools/spark-1.6.2-bin-hadoop2.6/logs/spark-root-org.apache.spark.deploy.master.Master-1-master.out
  2. slave2: starting org.apache.spark.deploy.worker.Worker, logging to /root/tools/spark-1.6.2-bin-hadoop2.6/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-slave2.out
  3. slave1: starting org.apache.spark.deploy.worker.Worker, logging to /root/tools/spark-1.6.2-bin-hadoop2.6/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-slave1.out

在web上访问master:8080

停止

  1. ./stop-all.sh

高可用

spark-env.sh修改下

  1. export HADOOP_CONF_DIR=/root/tools/hadoop-2.7.2
  2. # 指定spark老大master的ip地址,如果是HA,这样不配置,配了ip就是单机,不配ip就要配高可用
  3. #export SPARK_MASTER_IP=master
  4. # 指定可用的cpu内核数量(默认: 所有可用)
  5. #export SPARK_WORKER_CORES=1
  6. # 作业可使用的内存容量,默认格式为1000m或者2g(默认:所有RAM去掉给操作系统用的1GB)
  7. #export SPARK_WORKER_MEMORY=500m
  8. # 机器上的worker数量(默认:1).当你有一个非常强大的计算机时可启动多个worker进程
  9. #export SPARK_WORKER_INSTANCES=1
  10. export SPARK_MASTER_PORT=7077
  11. export JAVA_HOME=/usr/jdk8
  12. #(可选)配置两个spark master实现高可靠(首先要配置zookeeper集群,在spark-env.sh添加SPARK_DAEMON_JAVA_OPTS)
  13. export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master:2181,slave1:2181,slave2:2181 -Dspark.deploy.zookeeper.dir=/spark"

然后把配置文件分发到各个机器上

然后启动

  1. ./start-all.sh

web上看到状态是Status: RECOVERING

如果想启动多个master,在其他机器上

  1. ./start-master.sh

运行spark-shell

两种方式运行

  1. 直接运行spark-shell,他是单机通过多线程跑任务,只运行一个进程叫submit
  2. 运行spark-shell --master spark://master:7077,将任务运行在集群中,运行submit在master上,运行executor在worker上
    还可以这样
  1. spark-shell --master spark://master:7077 --executor-memory 512M --total-executor-cores 2

指定master机器并且指定内存大小并且指定核数是2核