Apache Spark渐进式学习教程(八):Spark集群部署(standalone)和运行

目录

一,前言

1.1 集群规划

1.2 前置条件

1.3 安装包下载

二,安装部署

2.1,解压和修改配置文件

2.2 复制文件到另外2台机器

三,运行和测试

3.1启动集群

3.2启动spark-shell连接集群

3.2提交spark任务到集群


一,前言

1.1 集群规划

需要已经配置免密登录的三台CentOS7服务器:

IP地址 hosts 节点身份
172.16.49.246 docker01 Master,Worker
172.16.49.247 docker02 Worker
172.16.49.248 docker03 Worker

 

1.2 前置条件

1)提前安装JDK1.8,请参考:https://www.t9vg.com/archives/346

2)提前安装Scala,请参考:https://www.t9vg.com/archives/635

1.3 安装包下载

官方下载页面:http://spark.apache.org/downloads.html

本文使用spark-2.2.2-bin-hadoop2.7,下载地址:https://pan.baidu.com/s/1kEQ09N8VPG_9oLwoxwDUaA 密码: 22gk

二,安装部署

2.1,解压和修改配置文件

###解压spark
tar -zxvf spark-2.2.2-bin-hadoop2.7.tgz

###修改conf
cd conf/
mv slaves.template slaves
vim slaves

###添加工作节点
docker01
docker02
docker03

###编辑sbin/spark-config文件,添加配置文件

export JAVA_HOME=/usr/local/jdk1.8.0_91 #这个要根据自身java_home修改

配置整个集群的环境变量(可选) 通过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)

2.2 复制文件到另外2台机器

scp -r spark-2.2.2-bin-hadoop2.7/ docker02:/hadoop/
scp -r spark-2.2.2-bin-hadoop2.7/ docker03:/hadoop/

三,运行和测试

3.1启动集群

###在任意一台机器运行命令
[root@docker01 spark-2.2.2-bin-hadoop2.7]# sbin/start-all.sh 

starting org.apache.spark.deploy.master.Master, logging to /hadoop/spark-2.2.2-bin-hadoop2.7/logs/spark-root-org.apache.spark.deploy.master.Master-1-docker01.out
docker03: starting org.apache.spark.deploy.worker.Worker, logging to /hadoop/spark-2.2.2-bin-hadoop2.7/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-localhost.localdomain.out
docker02: starting org.apache.spark.deploy.worker.Worker, logging to /hadoop/spark-2.2.2-bin-hadoop2.7/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-docker02.out
docker01: starting org.apache.spark.deploy.worker.Worker, logging to /hadoop/spark-2.2.2-bin-hadoop2.7/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-docker01.out

###jps命令查看启动情况
[root@docker01 spark-2.2.2-bin-hadoop2.7]# jps

13168 Worker
13076 Master
13244 Jps

[root@docker02 hadoop]# jps
8704 Jps
8642 Worker

[root@docker03 hadoop]# jps
8704 Jps
8642 Worker

访问web界面:docker01:8080

Apache Spark渐进式学习教程(八):Spark集群部署(standalone)和运行_第1张图片

3.2启动spark-shell连接集群

#在本地客户端连接服务器集群spark-shell

mbp15:bin mac$ ./spark-shell --master spark://docker01:7077

Apache Spark渐进式学习教程(八):Spark集群部署(standalone)和运行_第2张图片

此时spark的监控界面会有对应的任务显示:

Apache Spark渐进式学习教程(八):Spark集群部署(standalone)和运行_第3张图片

3.2提交spark任务到集群

本文将提交一个spark自带的examples

### --class:命名空间(包名)+类名;--master:spark集群的master;.jar:jar包位置;3:core并行度
mbp15:bin mac$ ./spark-submit --class org.apache.spark.examples.JavaSparkPi --master spark://docker01:7077 ../examples/jars/spark-examples_2.11-2.2.2.jar 3

Apache Spark渐进式学习教程(八):Spark集群部署(standalone)和运行_第4张图片

注意:spark-client 和spark集群需要版本一致,否则将报错:Can only call getServletHandlers on a running MetricsSystem

转载请注明出处。

欢迎加入:Java/Scala/大数据/SpringCloud 技术讨论qq群:854150511

此文转载至:https://www.t9vg.com/archives/631

你可能感兴趣的:(spark)