安装部署:java
1. 配置spark为1个master,2个slave的独立集群(Standlone)模式,linux
能够在VMWare中构建3台运行Ubuntu的机器做为服务器;web
master主机配置以下:ubuntu
vim /etc/hostname 编辑此文件,设置主机名为mastervim
vim /etc/hosts 编辑此文件,添加以下主机内容信息:浏览器
192.168.189.128 masterbash
192.168.189.129 slave1服务器
192.168.189.130 slave2oracle
同理配置slave1,slave2主机。app
2. 下载安装jdk1.8.0_91,并设置好环境变量;
jdk下载路径:https://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.tar.gz
下载安装scala-2.12.2,下载路径:https://downloads.lightbend.com/scala/2.12.8/scala-2.12.8.tgz
并设置好环境变量(spark是基于scala语言编写的,同时scala又运行于JVM之上),
以下命令:
vim .bashrc 编辑此文件,添加以下内容:
export JAVA_HOME=/usr/local/jdk1.8.0_91
export JAVA_BIN=$JAVA_HOME/bin
export JAVA_LIB=$JAVA_HOME/lib
export CLASSPATH=.:$JAVA_LIB/tools.jar:$JAVA_LIB/dt.jar
export PATH=$JAVA_BIN:$PATH
export SCALA_BIN=/usr/local/scala-2.12.2/bin
export PATH=$PATH:$SCALA_BIN
退出root帐户,从新登录,使环境变量生效。
master,slave1,slave2三台服务器配置同样。
3. 安装配置ssh,使得三台主机ssh登陆免密码,由于集群里面的主机须要在后台通讯。
(1)安装:
SSH分客户端openssh-client和openssh-server,若是你只是想登录别的机器的SSH只须要安装openssh-client(ubuntu有默认安装客户端),若是要使本机开放SSH服务就须要安装openssh-server。
(2) 配置免密码登录:
在master主机上登录root用户,输入命令:ssh-keygen -t rsa
而后根据提示一直按enter,就会按默认的选项生成的密钥对(私钥id_rsa和公钥id_rsa.pub)并保存在/root/.ssh文件夹中;
将master服务器上的公钥拷贝到slave1上,输入命令:ssh-copy-id root@slave1(root为slave1上的帐户)
将master服务器上的公钥拷贝到slave2上,输入命令:ssh-copy-id root@slave2(root为slave2上的帐户)
能够测试免密码登录是否成功,输入命令:ssh slave1
4. Spark独立集群中的workers配置
在Spark 目录下建立一个文件conf/slaves, 列出全部启动Spark workers的主机名,每行一条记录,以下面master主机的配置:
#localhost
slave1
slave2
5. 配置SPARK的JAVA_HOME
编辑全部主机上的sbin/spark-config文件,添加export JAVA_HOME=/usr/local/jdk1.8.0_91
6. 配置整个集群的环境变量(可选)
经过conf/spark-env.sh进一步配置整个集群的环境变量,以下变量,这里先用默认的值 。
变量 |
描述 |
SPARK_MASTER_IP |
绑定一个外部IP给master. |
SPARK_MASTER_PORT |
从另一个端口启动master(默认: 7077) |
SPARK_MASTER_WEBUI_PORT |
Master的web UI端口 (默认: 8080) |
SPARK_WORKER_PORT |
启动Spark worker 的专用端口(默认:随机) |
SPARK_WORKER_DIR |
伸缩空间和日志输入的目录路径(默认: SPARK_HOME/work); |
SPARK_WORKER_CORES |
做业可用的CPU内核数量(默认: 全部可用的); |
SPARK_WORKER_MEMORY |
做业可以使用的内存容量,默认格式1000M或者 2G (默认: 全部RAM去掉给操做系统用的1 GB);注意:每一个做业本身的内存空间由SPARK_MEM决定。 |
SPARK_WORKER_WEBUI_PORT |
worker 的web UI 启动端口(默认: 8081) |
SPARK_WORKER_INSTANCES |
每台机器上运行worker数量 (默认: 1). 当你有一个很是强大的计算机的时候和须要多个Spark worker进程的时候你能够修改这个默认值大于1 . 若是你设置了这个值。要确保SPARK_WORKER_CORE 明确限制每个r worker的核心数, 不然每一个worker 将尝试使用全部的核心 。 |
SPARK_DAEMON_MEMORY |
分配给Spark master和 worker 守护进程的内存空间 (默认: 512m) |
SPARK_DAEMON_JAVA_OPTS |
Spark master 和 worker守护进程的JVM 选项(默认: none) |
7. 启动集群
经过命令:sbin/start-all.sh
同时启动master以及上面所说文件中指定的slave
8. 输入http://localhost:8080/看集群是否启动成功
成功启动后的界面
9. 在web界面上监控集群执行的细节
须要打开conf/spark-default.conf文件,添加以下内容:
spark.eventLog.enabled true
spark.eventLog.dir file:/tmp/spark-events
注意须要先在/tmp目录下建立文件夹spark-events,由于后面全部应用执行的事件日志会存放在这。
修改文件夹权限: chmod 777 spark-events , 以便JVM有权建立和读取文件。
在master主机上启动spark-history-server,执行命令:./sbin/start-history-server.sh
在浏览器中输入: http://master:18080/ 查看应用执行状况,以下图所示:
点击具体某一个application,能够查看具体每个应用执行的细节
10. spark执行流程
11. spark-submit应用程序提交时,master参数配置项可取值