Spark集群配置
部署模式对比
| 模式 | Spark 安装机器数 | 需启动的进程 | 所属者 | 应用场景 |
|---|---|---|---|---|
| Local | 1 | 无 | Spark | 测试 |
| Standalone | 3 | Master 及 Worker | Spark | 单独部署 |
| Yarn | 1 | Yarn 及 HDFS | Hadoop | 混合部署 |
端口号
Ø Spark 查看当前 Spark-shell 运行任务情况端口号:4040(计算)
Ø Spark Master 内部通信服务端口号:7077
Ø Standalone 模式下,Spark Master Web 端口号:8081(资源)
Ø Spark 历史服务器端口号:18080
Ø Hadoop YARN 任务运行情况查看端口号:8088
spark-local
local模式就是不需要其他任何节点资源就可以在本地执行 Spark 代码的环境,一般用于教学,调试,演示等, 在 IDEA 中运行代码的环境我们称之为开发环境,不太一样。
将 spark-2.0.0-bin-hadoop3.2.tgz 文件上传到Linux 并解压缩,放置在指定位置路径中
[root@master software]# tar -zxvf spark-3.0.0-bin-hadoop2.7.tgz -C /usr/local/src/
[root@master src]# mv spark-3.0.0-bin-hadoop2.7/ spark-local
启动local环境
进入解压缩后的路径,执行如下指令
bin/spark-shell
启动成功后,可以输入网址进行 Web UI 监控页面访问
http://地址:8081
提交引用,执行jar包
bin/spark-submit --class org.apache.spark.examples.SparkPi --master local[2] ./examples/jars/spark-examples_2.12-3.0.0.jar 10
–class 表示要执行程序的主类,此处可以更换为咱们自己写的应用程序
–master local[2] 部署模式,默认为本地模式,数字表示分配的虚拟CPU 核数量
spark-examples_2.12-3.0.0.jar 运行的应用类所在的 jar 包,实际使用时,可以设定为咱们自己打的 jar 包
数字 10 表示程序的入口参数,用于设定当前应用的任务数量
spark-standalone
local 本地模式毕竟只是用来进行练习演示的,真实工作中还是要将应用提交到对应的集群中去执行,这里我们来看看只使用 Spark 自身节点运行的集群模式,也就是我们所谓的独立部署(Standalone)模式。Spark 的 Standalone 模式体现了经典的master-slave 模式。集群规划:
安装scala
[root@slave1 ~]# tar -zxvf scala-2.11.8.tgz /usr/local/src/
文件改名
[root@slave1 src]# mv scala-2.11.8 scala
安装spark
[root@slave1 src]# tar -zxvf spark-2.0.0-bin-hadoop2.6.tgz -C /usr/local/src/
文件改名
[root@slave1 src]# mv spark-2.0.0-bin-hadoop2.6 spark-standalone
配置环境
[root@slave1 src]# vim /etc/profile.d/my_p.sh
export SCALA_HOME=/usr/local/src/scala
export PATH=$PATH:$SCALA_HOME/bin
export SPARK_HOME=/usr/local/src/spark-standalone
export PATH=$PATH:$SPARK_HOME/bin
export PATH=$PATH:$SPARK_HOME/sbin
//分发配置文件
[root@slave1 src]# scp /etc/profile.d/my_p.sh slave2:/etc/profile.d/
[root@slave1 src]# scp /etc/profile.d/my_p.sh slave3:/etc/profile.d/
配置文件
//修改文件名
[root@slave1 conf]# mv spark-env.sh.template spark-env.sh
[root@slave1 conf]# vim spark-env.sh
export JAVA_HOME=/usr/local/src/java
export HADOOP_HOME=/usr/local/src/hadoop
export HADOOP_CONF_DIR=/usr/local/src/hadoop/etc/hadoop
export SCALA_HOME=/usr/local/src/scala
export SPARK_MASTER_HOST=slave1
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=1
export SPARK_WORKER_MEMORY=1G
[root@slave1 conf]# mv slaves.template slaves
[root@slave1 conf]# vim slaves
slave1
slave2
slave3


分发配置好的spark文件
[root@slave1 src]# scp -r spark slave2:/usr/local/src/[root@slave1 src]# scp -r spark slave3:/usr/local/src/
启动集群(由于与Hadoop启动命令相同最好在spark的sbin目录下启动)
[root@slave1 spark]# sbin/start-all.sh//对应进程分别是master和worker



进入spark-shell
[root@slave1 spark]# spark-shell

提交jar包命令
bin/spark-submit \--class org.apache.spark.examples.SparkPi \--master spark://master:7077 \./examples/jars/spark-examples_2.12-3.0.0.jar \ 10#解释–class 表示要执行程序的主类–master spark://linux1:7077 独立部署模式,连接到Spark 集群spark-examples_2.12-3.0.0.jar 运行类所在的 jar 包数字 10 表示程序的入口参数,用于设定当前应用的任务数量
spark on yarn
需要先将yarn集群关闭
在yarn-site.xml下添加
yarn分配的物理内存为1GB,默认的虚拟内存与物理内存的比例为2.1。因此虚拟内存不够,增大虚拟内存与物理内存的比例即可。 //在为容器设置内存限制时,虚拟内存与物理内存之间的比率 <property> <name>yarn.nodemanager.vmem-pmem-ratio</name> <value>5</value> </property>
启动集群(由于与Hadoop启动命令相同最好在spark的sbin目录下启动)
[root@slave1 spark]# sbin/start-all.sh//对应进程分别是master和worker
启动spark on yarn
[root@master flink]# spark-shell --master yarn-client



提交jar包命令
bin/spark-submit \--class org.apache.spark.examples.SparkPi \--master yarn \--deploy-mode cluster \./examples/jars/spark-examples_2.12-3.0.0.jar \10
spark HA
先安装好zookeeper
解压好scala和spark
进入spark/conf 更改spark-env.sh
[root@master spark]# vi conf/spark-env.sh
添加以下代码
export JAVA_HOME=/usr/local/src/javaexport SCALA_HOME=/usr/local/src/scalaexport HADOOP_HOME=/usr/local/src/hadoopexport HADOOP_CONF_DIR=/usr/local/src/hadoop/etc/hadoopexport SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master:2181,slave1:2181,slave2:2181 -Dspark.deploy.zookeeper.dir=/spark"export SPARK_WORKER_MEMORY=2gexport SPARK_EXECUTOR_MEMORY=2gexport SPARK_DRIVER_MEMORY=2Gexport SPARK_WORKER_CORES=2解释:SPARK_DAEMON_JAVA_OPTS: 设置所有守护进程的配置属性(例如:“dx = y”)-Dspark.deploy.recoveryMode: 表明整个集群的恢复和维护都是Zookeeper.-Dspark.deploy.zookeeper.url: 所有做HA机器,其中端口2181是默认端口。-Dspark.deploy.zookeeper.dir: 指定Spark在Zookeeper注册的信息SPARK_WORKER_CORES: 设置在这台机器上使用的核数SPARK_WORKER_MEMORY: 要设置worker必须给executor的内存总量(例如1000m, 2g)SPARK_EXECUTOR_MEMORY: 每个执行器的内存(例如1000M, 2G)(默认为1G)SPARK_DRIVER_MEMORY: 驱动程序内存(例如1000M, 2G)(默认1G)
在主节点启动集群
[root@master spark]# sbin/start-all.sh 在从节点上分别再启动master进程[root@slave1 spark]# sbin/start-master.sh [root@slave2 spark]# sbin/start-master.sh




spark历史服务器
在spark-defaults.conf.template文件下配置
spark.eventLog.enabled truespark.eventLog.dir hdfs://master:9000/spark/log
在spark-env.sh文件下配置
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=18080 -Dspark.history.fs.logDirectory=hdfs://master:9000/spark/log -Dspark.history.retainedApplicaions=30"

在spark-defaults.conf文件下配置
spark.eventLog.enabled truespark.eventLog.dir hdfs://master:9000/spark/tmp

分发配置文件
scp conf/ slave1:/usr/local/src/spark
启动历史服务器
sbin/start-all.sh[root@master spark]# sbin/start-history-server.sh


spark提交任务
集群提交
[root@master spark]# spark-submit --master spark://master:7077 --class org.apache.spark.examples.SparkPi examples/jars/spark-examples_2.11-2.1.1.jar

yarn提交
[root@master spark]# spark-submit --master yarn --class org.apache.spark.examples.SparkPi examples/jars/spark-examples_2.11-2.1.1.jar


3083

被折叠的 条评论
为什么被折叠?



