栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 云计算 > 云平台

(超详细) Spark环境搭建(Local模式、 StandAlone模式、Spark On Yarn模式)

云平台 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

(超详细) Spark环境搭建(Local模式、 StandAlone模式、Spark On Yarn模式)

Spark环境搭建

JunLeon——go big or go home


目录

Spark环境搭建

目录

Spark环境搭建

一、环境准备

1、软件准备

2、Hadoop集群搭建

3、Anaconda环境搭建

二、Spark Local模式搭建

1、Spark下载、上传和解压

2、配置环境变量

3、配置Spark配置文件

4、测试

5、补充:spark-shell、spark-submit

三、Spark Standone模式搭建

1、Hadoop集群与Spark集群节点规划

2、三台虚拟机分别安装Anaconda3环境

3、配置Spark配置文件

(1)配置spark-env.sh文件

(2)配置spark-defaults.conf文件

(3)配置slaves文件(新版本为workers文件)

(4)配置log4j.properties 文件 [可选配置]

4、将配置好的spark分发到其他两台服务器上

5、启动节点

6、web端访问:

 四、Spark On Yarn模式搭建


前言:

        Spark部署模式主要有4种:Local模式(单机模式)、Standalone模式(使用Spark自带的简单集群管理器)、Spark On Yarn模式(使用YARN作为集群管理器)和Spark On Mesos模式(使用Mesos作为集群管理器)。

        本教程做前三种环境搭建的详细讲解。

一、环境准备

1、软件准备

Linux:CentOS-7-x86_64-DVD-1708.iso

Hadoop:hadoop-2.7.3.tar.gz

Java:jdk-8u181-linux-x64.tar.gz

Anaconda:Anaconda3-2021.11-Linux-x86_64.sh

Spark:spark-2.4.0-bin-without-hadoop.tgz

2、Hadoop集群搭建

请查看 大数据学习——Hadoop集群完全分布式的搭建(超详细)_IT路上的军哥的博客-CSDN博客_hadoop完全分布式搭建

注:本教程中使用Hadoop完全分布式集群,主机名分别为spark-master、spark-slave01、spark-slave02

3、Anaconda环境搭建

(1)下载Anaconda3

Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

注:如果打不开网页,可以尝试换浏览器打开

(2)上传Anaconda的文件到Linux

上传到指定目录:/opt/software        #没有的话就创建

(3)Anaconda On Linux 安装

在该目录下,执行Anaconda文件

cd /opt/software
sh ./Anaconda3-2021.11-Linux-x86_64.sh

进入以下界面:直接回车即可

接下来 阅读许可条款 ,一直空格

在此处是询问是否同意许可条款,输入 yes

指定 anaconda3 安装路径:

将路径修改为 /opt/anaconda3 目录下 

 此处需要初始化,输入 yes

最后,使用exit退出远程连接工具,重新连接,如果出现以下base字样,说明安装成功!

 注:base是默认的虚拟环境。

以上单台 Anaconda On Linux 环境搭建成功,即可开始安装spark。

(4)配置国内源:

vi  ~/.condarc这个文件,追加以下内容:

注:该文件是一个空文件,直接添加即可

channels:
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

 (5)创建pyspark环境

conda create -n pyspark python=3.6  # 基于python3.6创建pyspark虚拟环境
conda activate pyspark      # 激活(切换)到pyspark虚拟环境

注:如果执行 conda create -n pyspark python=3.6 命令下载失败,可能是你的虚拟机不能ping通网络,可以看看ping www.baidu.com是否能够ping通

(6)pip下载pyhive、pyspark、jieba包

在pyspark环境中使用pip下载pyhive、pyspark、jieba包

pip install pyspark==2.4.0 jieba pyhive -i https://pypi.tuna.tsinghua.edu.cn/simple

二、Spark Local模式搭建

Spark Local模式也称单机或者本地模式,仅供测试用。并在spark-master主机进行操作。

1、Spark下载、上传和解压

(1)Spark版本下载

该环境搭建spark使用spark-2.4.0版本

下载地址:Index of /dist/spark/spark-2.4.0

(2)上传Spark压缩包

上传到指定目录:/opt/software

(3)解压上传好的压缩包

cd /opt/software
tar -zxvf spark-2.4.0-bin-without-hadoop.tgz -C /opt
mv spark-2.4.0-bin-without-hadoop/ spark-2.4.0

解压之后进行重命名,重命名为spark-2.4.0

2、配置环境变量

配置Spark由如下5个环境变量需要设置

  • SPARK_HOME: 表示Spark安装路径在哪里

  • PYSPARK_PYTHON: 表示Spark想运行Python程序, 那么去哪里找python执行器

  • JAVA_HOME: 告知Spark Java在哪里

  • HADOOP_CONF_DIR: 告知Spark Hadoop的配置文件在哪里

  • HADOOP_HOME: 告知Spark  Hadoop安装在哪里

这5个环境变量 都需要配置在: /etc/profile中

# JAVA_HOME
export JAVA_HOME=/opt/jdk1.8.0_181
# HADOOP_HOME
export HADOOP_HOME=/opt/hadoop-2.7.3
# SPARK_HOME
export SPARK_HOME=/opt/spark-2.4.0
# HADOOP_CONF_DIR
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
# PYSPARK_PYTHON
export PYSPARK_PYTHON=/opt/anaconda3/envs/pyspark/bin/python
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SPARK_HOME/bin:$PATH

PYSPARK_PYTHON和JAVA_HOME 需要同样配置在: ~/.bashrc中

vi  ~/.bashrc

# 默认启动pyspark虚拟环境
conda activate pyspark

# JAVA_HOME
export JAVA_HOME=/opt/jdk1.8.0_181
# PYSPARK_PYTHON
export PYSPARK_PYTHON=/opt/anaconda3/envs/pyspark/bin/python
export PATH=$JAVA_HOME/bin:$PATH

 配置好环境变量记得使文件生效:

source /etc/profile
source ~/.bashrc
3、配置Spark配置文件

(1)spark-env.sh

cd /opt/spark-2.4.0/conf
cp spark-env.sh.template spark-env.sh

在该文件最后追加以下内容:

export JAVA_HOME=/opt/jdk1.8.0_181
export SPARK_DIST_CLASSPATH=$(/opt/hadoop-2.7.3/bin/hadoop classpath)

4、测试

(1)验证Spark是否安装成功

pyspark

进入pyspark虚拟环境后,输入pyspark后出现spark的logo则说明已成功:

(2)运行Spark自带的Pi实例

run-example SparkPi
run-example SparkPi 2>&1 | grep "Pi is roughly"     # 过滤日志信息

(3)运行WordCount.py文件

在家目录下,创建一个.py文件,添加以下代码:

附:WordCount.py代码

# ~/WordCount.py
if __name__ == '__main__':
  # 导入相关依赖包
  from pyspark import SparkConf, SparkContext
  # 创建SparkConf,创建一个SparkContext对象
  conf = SparkConf().setMaster("local").setAppName("My App")
  sc = SparkContext(conf = conf)
  # 设置文件路径
  logFile = "file:///opt/spark-2.4.0/README.md"
  # 负责读取README.md文件生成RDD
  logData = sc.textFile(logFile, 2).cache()
  # 统计RDD元素中包含字母a和字母b的行数
  numAs = logData.filter(lambda line: 'a' in line).count()
  numBs = logData.filter(lambda line: 'b' in line).count()
  # 打印输出统计结果
  print('Lines with a: %s, Lines with b: %s' % (numAs, numBs))

 执行任务提交:

spark-submit ~/WordCount.py

5、补充:spark-shell、spark-submit

(1)spark-shell

同样是一个解释器环境, 和pyspark不同的是, 这个解释器环境运行的不是python代码, 而是scala程序代码。

scala> sc.parallelize(Array(1,2,3,4,5)).map(x=> x + 1).collect()
res0: Array[Int] = Array(2, 3, 4, 5, 6)

(2)spark-submit

作用: 提交指定的Spark代码到Spark环境中运行

使用方法:

# 语法
bin/spark-submit [可选的一些选项] jar包或者python代码的路径 [代码的参数]
​
# 示例
bin/spark-submit /opt/spark-2.4.0/examples/src/main/python/pi.py 10
# 此案例运行Spark官方所提供的示例代码,来计算圆周率值。后面的10是主函数接受的参数, 数字越高, 计算圆周率越准确。

(3)pyspark、spark-shell、spark-submit对比

功能bin/spark-submitbin/pysparkbin/spark-shell
功能提交javascalapython代码到spark中运行提供一个python
解释器环境用来以python代码执行spark程序提供一个scala
解释器环境用来以scala代码执行spark程序
特点提交代码用解释器环境 写一行执行一行解释器环境 写一行执行一行
使用场景正式场合, 正式提交spark程序运行测试学习写一行执行一行用来验证代码等测试学习写一行执行一行用来验证代码等

三、Spark StandAlone模式搭建

1、Hadoop集群与Spark集群节点规划

(1)集群主机名、IP规划

主机名IP地址节点类型
spark-master192.168.83.100Master
spark-slave01192.168.83.101Slave
spark-slave02192.168.83.102Slave

(2)节点规划

节点进程spark-masterspark-slave01spark-slave02
NameNode
Secondary NameNode
DataNode
ResourceManager
NodeManager
JobHistoryServer(YARN)
Master
Worker
HistoryServer(Spark)

注:

JobHistoryServer:YARN资源管理器的历史服务器,将YARN运行的程序的历史日志记录下来,通过历史服务器方便用户查看程序运行的历史信息。

HistoryServer:Spark的历史服务器,将Spark运行的程序的历史日志记录下来, 通过历史服务器方便用户查看程序运行的历史信息。

2、三台虚拟机分别安装Anaconda3环境

此Anaconda环境搭建参考以上 环境准备中的第3点。也可以从第一台分发到另外两台:

scp -r /opt/anaconda3 root@spark-slava01:/opt
scp -r /opt/anaconda3 root@spark-slava02:/opt
3、配置Spark配置文件

可以在spark-master主机操作,最后再进行分发。

注:Spark安装路径为:/opt/spark-2.4.0

spark配置文件路径为:/opt/spark-2.4.0/conf

cd /opt/spark-2.4.0/conf

(1)配置spark-env.sh文件
# 1. 改名
mv spark-env.sh.template spark-env.sh
# 2. 编辑spark-env.sh, 在底部追加如下内容
vi spark-env.sh

在spark-env.sh文件底部追加以下内容

## 设置JAVA安装目录
export JAVA_HOME=/opt/jdk1.8.0_181
## 设置hadoop命令路径
export SPARK_DIST_CLASSPATH=$(/opt/hadoop-2.7.3/bin/hadoop classpath)
## 以上两行在local模式中已经添加,如果有请勿重复配置
## HADOOP软件配置文件目录,读取HDFS上文件和运行YARN集群
HADOOP_CONF_DIR=/opt/hadoop-2.7.3/etc/hadoop
YARN_CONF_DIR=/opt/hadoop-2.7.3/etc/hadoop
## 指定spark老大Master的IP和提交任务的通信端口
# 告知Spark的master运行在哪个机器上
export SPARK_MASTER_HOST=spark-master
# 告知sparkmaster的通讯端口
export SPARK_MASTER_PORT=7077
# 告知spark master的webui端口
SPARK_MASTER_WEBUI_PORT=8080
# worker cpu可用核数
SPARK_WORKER_CORES=1
# worker可用内存
SPARK_WORKER_MEMORY=1g
# worker的工作通讯地址
SPARK_WORKER_PORT=7078
# worker的webui地址
SPARK_WORKER_WEBUI_PORT=8081
## 设置历史服务器
# 配置的意思是  将spark程序运行的历史日志 存到hdfs的/sparklog文件夹中
SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://spark-master:9000/sparklog/ -Dspark.history.fs.cleaner.enabled=true"

(2)配置spark-defaults.conf文件
# 1. 改名
mv spark-defaults.conf.template spark-defaults.conf
vi spark-defaults.conf
# 2. 修改内容, 追加如下内容
# 开启spark的日期记录功能
spark.eventLog.enabled  true
# 设置spark日志记录的路径
spark.eventLog.dir   hdfs://spark-master:9000/sparklog/ 
# 设置spark日志是否启动压缩
spark.eventLog.compress  true

(3)配置slaves文件(新版本为workers文件)
# 改名, 去掉后面的.template后缀
mv slaves.template slaves
# 编辑worker文件
vi slaves
# 将文件里面最后一行的localhost删除

追加从节点worker运行的服务器,配置三台主机名

spark-master
spark-slave01
spark-slave02

(4)配置log4j.properties 文件 [可选配置]
# 1. 改名
mv log4j.properties.template log4j.properties
# 2. 修改内容 参考下图
vi log4j.properties

定位到19行:将INFO修改为WARN

4、将配置好的spark分发到其他两台服务器上

将在spark-master主机上配置好的spark分发到另外两台服务器上:

scp -r /opt/spark-2.4.0/ root@spark-slave01:/opt/
scp -r /opt/spark-2.4.0/ root@spark-slave02:/opt/

将主机的/etc/profile文件和~/.bashrc文件也同时分发到另外两台:

scp /etc/profile root@spark-slave01:/etc/
scp /etc/profile root@spark-slave02:/etc/
scp ~/.bashrc root@spark-slave01:~/
scp ~/.bashrc root@spark-slave02:~/

 分发过去之后需要分别在两台使配置文件生效:

source /etc/profile
source ~/.bashrc

5、启动节点

1)启动Hadoop集群

start-all.sh    # 只在spark-master主机上执行

2)启动spark集群

cd /opt/spark-2.4.0/sbin
./start-all.sh

开启全部节点后,如图所示:

6、web端访问:

web端访问需要关闭防火墙:

systemctl stop firewalld

1)访问HDFS

192.168.83.100:50070    # IP:端口号

2)访问YARN

192.168.83.100:8088 # IP:端口号

3)访问Spark

192.168.83.100:8080 # IP:端口号

如图所示说明成功:

 四、Spark On Yarn模式搭建

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/898232.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号