构建一个由 Master + Slave 构成的 Spark 集群,Spark 运行在集群中。 这个要和 Hadoop 中的 Standalone 区别开来. 这里的 Standalone 是指只用 Spark 来搭建一个集群, 不需要借助其他的框架.是相对于 Yarn 和 Mesos 来说的.
Spark是基于内存计算的大数据并行计算框架,实际中运行计算任务肯定是使用集群模式,那么我们先来学习Spark自带的standalone集群模式了解一下它的架构及运行机制。
假设集群中有三台节点,hadoop002,hadoop003,hadoop004
hadoop002 | master |
hadoop003 | slave/worker |
hadoop004 | slave/worker |
[bigdata@hadoop002 module]$ cp -r spark-2.1.1-bin-hadoop2.7 spark
[bigdata@hadoop002 spark-standalone]$ cd conf/
[bigdata@hadoop002 conf]$ cp spark-env.sh.template spark-env.sh
[bigdata@hadoop002 conf]$ vim spark-env.sh
#指定默认master的ip或主机名
export SPARK_MASTER_HOST=hadoop002
#指定maaster提交任务的默认端口为7077
export SPARK_MASTER_PORT=7077
[bigdata@hadoop002 conf]$ cp slaves.template slaves
[bigdata@hadoop002 conf]$ vim slaves
# 在slaves文件中配置如下内容:
hadoop002
hadoop003
hadoop004
sbin/spark-config.sh
中添加入JAVA_HOME
变量export JAVA_HOME=/opt/module/jdk1.8.0_144
此处如果不添加会出现如下错误:
spark
通过scp 命令将配置文件分发到其他机器上
scp -r /opt/module/spark hadoop003:/opt/module/
scp -r /opt/module/spark hadoop004:/opt/module/
[bigdata@hadoop002 spark]$ sbin/start-all.sh
地址
: http://hadoop002:8080[bigdata@hadoop002 spark]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop002:7077 \
--executor-memory 1G \
--total-executor-cores 2 \
./examples/jars/spark-examples_2.11-2.1.1.jar \
100
完成上述的操作 standalone集群模式就算是大概完成了。
[bigdata@hadoop002 spark]$ sudo vim /etc/profile
配置spark环境变量(建议不添加,避免和Hadoop的命令冲突)
export SPARK_HOME=/opt/module/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
[bigdata@hadoop002 spark]$ source /etc/profile
解决方案
:
// 通过scp 命令将配置文件分发到其他机器上
scp /etc/profile root@hadoop003:/etc
scp /etc/profile root@hadoop004:/etc
source /etc/profile
在主节点上启动Spark集群
/export/servers/spark/sbin/start-all.sh
在主节点上停止spark集群
/export/servers/spark/sbin/stop-all.sh
在 master 安装节点上启动和停止 master:
start-master.sh
stop-master.sh
在 Master 所在节点上启动和停止worker(work指的是slaves 配置文件中的主机名)
start-slaves.sh
stop-slaves.sh
本次的分享就到这里了