Spark集群的搭建

1.1搭建Spark集群

Spark集群环境可分为单机版环境、单机伪分布式环境和完全分布式环境。本节任务是学习如何搭建不同模式的Spark集群,并查看Spark的服务监控。读者可从官网下载Spark安装包,本文使用的是spark-2.0.0-bin-hadoop2.7.gz。

1.1.1搭建单机版集群

单机版环境可以支持对Spark的应用程序测试工作,对于初学者而言是非常有益。

搭建单机版Spark集群步骤如下:

1.在Spark官网选择对应版本的Spark安装包并下载至Windows本地路径下。

2.将Spark安装包上传至linux虚拟机的/opt目录下。

3.将Spark安装包解压至/usr/local/src/目录下。

1)解压Spark安装包

cpp 复制代码
tar -zxf /opt/software/spark-2.0.0-bin-hadoop2.7.gz -C /usr/local/src/

2)进入Spark安装目录的/bin目录,使用"SparkPi"计算Pi值

cpp 复制代码
#进入目录
cd /usr/local/src/spark/bin/
#执行如下命令,其中2是指两个并行度
./run-example SparkPi 2

使用"SparkPi"计算Pi值的结果

1.1.2搭建单机伪分布式集群

Spark单机伪分布式集群指的是在一台机器上既有Master进程,又有Worker进程。Spark单机伪分布式集群可在Hadoop伪分布式环境基础上进行搭建。读者可自行了解如何搭建Hadoop伪分布式集群,本文不做介绍。搭建Spark单机伪分布式集群的步骤如下:

(1)将Spark安装包解压至Linux的/usr/loca/src/目录下。

(2)进入解压后的Spark安装目录,对安装包进行改名

cpp 复制代码
mv spark-2.0.0-bin-hadoop2.7 spark

(3)进入Spark的/conf目录下,复制spark-env.sh.template文件并重命名为spark-env.sh

cpp 复制代码
[root@master spark]# cd conf/

[root@master conf]# cp spark-env.sh.template spark-env.sh

(4)打开spark-env.sh文件,在文件末尾添加代码

cpp 复制代码
export JAVA_HOME=/usr/local/src/jdk
export HADOOP_HOME=/usr/lcoal/src/hadoop
export HADOOP_CONF_DIP=/usr/local/src/hadoop/etc/hadoop
export SPARK_MASTER_IP=master
export SPARK_LOCAL_USR_IP=master

|--------------------|-------------------|
| 参数 | 解释 |
| JAVA_HOME | Java的安装路径 |
| HADOOP_HOME | Hadoop的安装路径 |
| HADOOP_CONF_DIP | Hadoop配置文件的路径 |
| SPARK_MASTER_IP | Spark主节点的IP地址或主机名 |
| SPARK_LOCAL_USR_IP | Spark本地IP地址或主机名 |

(5)切换到Spark安装目录的/sbin目录下,启动Spark集群

cpp 复制代码
[root@master sbin]# cd /usr/local/src/spark/sbin/

[root@master sbin]# ./start-all.sh

通过命令"jps"查看进程,如果既有Master进程又有Worker进程,那么说明Spark集群启动成功

(6)切换至Spark安装包的/bin目录下,使用"SparkPi"计算Pi值

cpp 复制代码
[root@master bin]# ./run-example SparkPi 2

由于计算Pi的值时采用随机数,因此每次计算结果也会有差异

1.1.3搭建完全分布式集群

Spark完全分布式集群使用主从模式,即其中一台机器作为主节点master,其他的几台机器作为子节点slave。本文使用的Spark完全分布式共有三个节点,分别是一个主节点和2个子节点

Spark完全分布式集群是在Hadoop完全分布式集群的基础上进行搭建的。读者可自行了解如何搭建Hadoop完全分布式集群,本文不做介绍

(1)在前面的基础之上切换至Spark安装目录下的/conf目录下,并打开spark-env.sh文件,并添加如下代码:

cpp 复制代码
#将原来伪分布式集群添加上去的那几行代码删掉从新添加下面代码,防止后面发生影响


export JAVA_HOME=/usr/local/src/jdk
export HADOOP_CONF_DIP=/usr/local/src/hadoop/etc/hadoop
export SPARK_MASTER_IP=master
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_MEMORY=512m
export SPARK_WORKER_CORES=1
export SPARK_EXECUTOR_MEMORY=512m
export SPARK_EXECUTOR_CORES=1
export SPARK_WORKER_INSTANCES=1

spark-env.sh文件的配置参数解释

|------------------------|------------------------------|
| 参数 | 解释 |
| JAVA_HOME | Java的安装路径 |
| HADOOP_CONF_DIR | Hadoop配置文件的路径 |
| SPARK_MASTER_IP | Spark主节点的IP地址或主机名 |
| SPARK_MASTER_PORT | Spark主节点的端口号 |
| SPARK_WORKER_MEMORY | 工作(worker)节点能给予Executor的内存大小 |
| SPARK_WORKER_CORES | 每个节点可以使用的内核数 |
| SPARK_EXECUTOR_MEMORY | 每个Executor内存大小 |
| SPARK_EXECUTOR_CORES | Executor的内核数 |
| SPARK_WORKER_INSTANCES | 每个节点的Worker进程数 |

(2)配置Workers文件。复制Workers.template文件并重命名为Workers,打开Workers文件删除原有内容,并添加如下代码,每一行代表一个子节点的主机名,这里的workers文件名为,slaves.template

cpp 复制代码
slave1
slave2

(3)配置spark-defaults.conf文件。复制spark-defaults.conf.template文件并重命名为spark-defaults.conf,打开spark-defaults.conf文件,并添加如下代码:

cpp 复制代码
spark.master                     spark://master:7077
spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://master:8020/spark-logs
spark.history.fs.logDirectory    hdfs://master:8020/spark-logs

spark-defaults.conf文件的配置参数解释

|-------------------------------|-------------------------------|
| 参数 | 解释 |
| spark.master | Spark主节点所在机器及端口,默认写法是spark:// |
| spark.eventLog.enabled | 是否打开任务日志功能,默认为false,既不打开 |
| spark.eventLog.dir | 任务日志默认存放位置,配置一个HDFS路径即可 |
| spark.history.fs.logDirectory | 存放历史应用日志文件目录 |

(4)在主节点(master节点)中,将配置好的Spark安装目录远程复制至子节点(slave1,slave2节点)的/usr/local/src/目录下,代码如下:

cpp 复制代码
[root@master src]# scp -r /usr/local/src/spark root@slave1:/usr/local/src/
[root@master src]# scp -r /usr/local/src/spark root@slave2:/usr/local/src/

(5)启动Spark集群前,需要先启动Hadoop集群,并创建/spark-logs目录,如代码:

cpp 复制代码
#启动Hadoop集群
cd /usr/local/src/hadoop
./sbin/start-dfs.sh
./sbin/start-yarn.sh
./sibn/mr-jobhistory-daemon.sh start historyserver
#创建/spark-logs目录
hdfs dfs -mkdir /spark-logs

(6)切换至Spark安装目录的/sbin目录下,启动Spark集群

cpp 复制代码
cd /usr/local/src/spark/sbin/

./start-all.sh
./start-history-server.sh

(7)通过命令jps查看进程,开启Spark集群后,master节点增加了Master进程,而子节点则增加了Worker进程。

Spark集群启动成功后,打开浏览器访问"http://master:8080",可进入主节点的监控界面。其中master指代主节点的IP地址

Hisory Server的监控端口为18080端口,打开浏览器访问"http://master:18080",即可看到监控界面,界面记录了作业信息,包括已经运行完成的作业的信息和正在运行的作业信息。

相关推荐
.生产的驴几秒前
SpringBoot 消息队列RabbitMQ 消费者确认机制 失败重试机制
java·spring boot·分布式·后端·rabbitmq·java-rabbitmq
shuxianshrng1 小时前
大气网格化精细化监管监测系统
大数据·服务器·windows·经验分享
aqymnkstkw1 小时前
2024年【电气试验】考试题库及电气试验模拟试题
大数据·c语言·人工智能·嵌入式硬件·安全
人生百态,人生如梦1 小时前
大数据处理从零开始————3.Hadoop伪分布式和分布式搭建
hadoop·分布式
环能jvav大师2 小时前
基于R语言的统计分析基础:使用dplyr包进行数据操作
大数据·开发语言·数据分析·r语言
芊言芊语2 小时前
分布式缓存服务Redis版解析与配置方式
redis·分布式·缓存
不睡懒觉的橙4 小时前
【医疗大数据】医疗保健领域的大数据管理:采用挑战和影响
大数据·人工智能·信息可视化·人机交互·健康医疗
数分大拿的Statham5 小时前
PostgreSQL中的regexp_split_to_table函数详解,拆分字段为多行
大数据·数据库·postgresql·数据分析·数据清洗
月夜星辉雪6 小时前
【RabbitMQ 项目】服务端:路由交换模块
分布式·rabbitmq
super_journey6 小时前
RabbitMq中交换机(Exchange)、队列(Queue)和路由键(Routing Key)
分布式·中间件·rabbitmq