2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Spark环境搭建(保姆级教程)

Spark环境搭建(保姆级教程)

时间:2022-06-14 04:59:24

相关推荐

Spark环境搭建(保姆级教程)

文章目录

一、环境准备二、Spark环境搭建1. Spark部署方式2. 安装spark1) 下载Spark关于版本的选择2)安装Spark上传安装包解压并创建软链接Spark的目录结构配置环境变量配置Hadoop信息修改日志级别3)测试安装注意进入scala交互界面运行代码4)配置pyspark安装python安装pyspark开发包5) 配置Spark伪Standalone模式切换至配置文件目录spark-env.shslaves6) 测试standalone模式standalone启动查看进程web查看测试停止7) 配置Web交互式环境3. 代码提交编写wordcount程序提交代码到local提交代码到Standalone提交代码到YARN三、相关资源

一、环境准备

虚拟机安装

虚拟机软件:VMware

操作系统 :Ubuntu1804

参考:/tangyi/article/details/120311293

JDK1.8

Hadoop安装

版本:2.7.7

参考:/tangyi/article/details/121908766

二、Spark环境搭建

1. Spark部署方式

Local模式:单机模式集群模式: Standalone模式:使用Spark自带的简单集群管理器YARN模式:使用YARN作为集群管理器Mesos模式:使用Mesos作为集群管理器Kubernetes模式:实验阶段

2. 安装spark

1) 下载Spark

Spark官网的Download界面/downloads.html可选版本较少,比较这里打开的网页,只有三个版本可选。

可以在下载页面的下方进入它的release archives:/dist/spark/ 选择想要的版本。

关于版本的选择

这里以2.4.8版本为例,我们下载的安装文件应该是形如:spark-2.4.8-bin-xxxxxx.tgz的文件,很多人很困惑如何选择这些版本。

之所以会有这么多版本的选择,是因为Spark需要一些Hadoop客户端的依赖包(需要访问HDFS和YARN), 这些版本主要分为两类:

pre-packaged binary,将Hadoop客户端的依赖包编译到所下载的压缩包当中,比如spark-2.4.8-bin-hadoop2.6.tgz 和spark-2.4.8-bin-hadoop2.7.tgz ,

“Hadoop free” binary,需要自己通过配置SPARK_DIST_CLASSPATH变量,以便可以包含指定版本的Hadoop的相关jar包,比如:spark-2.4.8-bin-without-hadoop-scala-2.12.tgz、spark-2.4.8-bin-without-hadoop.tgz 。

我们这里选择“Hadoop free” binary形式的spark-2.4.8-bin-without-hadoop.tgz进行下载,直接使用浏览器下载过慢,可以使用迅雷加速下载,也可以去后面的网盘资源进行下载。

2)安装Spark

这里约定虚拟机主机名为node1,用户名为xiaobai, 安装路径为/home/xiaobai/opt,如果不是,请自行修改相应配置文件。

上传安装包

将下载好的安装包上传至虚拟机(当然你也可以直接在虚拟机中下载,省得上传文件)

解压并创建软链接

tar -xvf spark-2.4.8-bin-without-hadoop.tgz -C ~/optcd ~/optln -s spark-2.4.8-bin-without-hadoop spark

Spark的目录结构

ls ~/opt/spark

bin: 可执行脚本,比如常用的spark-shell, pyspark等。data:示例程序使用数据jars:依赖的jar包R:R API包yarn:整合yarn相关内容conf:配置文件目录examples:示例程序kubernetes:K8S相关内容licenses:许可文件python:python API包sbin:管理使用的脚本,比如: start-all.sh、start-master.sh等。

配置环境变量

vi ~/.bashrc修改 .bashrc 文件,在文件末尾添加Spark的PATH路径

export SPARK_HOME=/home/xiaobai/opt/sparkexport PATH=$SPARK_HOME/bin:$PATH

运行下面的命令使配置生效

source ~/.bashrc

配置Hadoop信息

因为我们下载的是“Hadoop free” 版本,所以要配置SPARK_DIST_CLASSPATH变量才能正常运行。

cd ~/opt/spark/confcp spark-env.sh.template spark-env.shvi spark-env.sh

在文件末尾添加配置如下信息

export SPARK_DIST_CLASSPATH=$(/home/xiaobai/opt/hadoop/bin/hadoop classpath)

修改日志级别

这一步可选,将日志级别调整至WARN级别,不至于看到过多的无效打印信息

cd ~/opt/spark/confcp log4j.properties.template log4j.properties #日志配置文件vi log4j.properties

修改如下配置:

log4j.rootCategory= WARN, console

日志也可以通过代码进行调整,假设SparkContext对象为sc,则可以通过方法setLogLevel进行级别调整

sc.setLogLevel("WARN")

3)测试安装

到此,Spark安装完成,此时便可使用Spark的local模式了。

注意

我们下载的Spark版本是基于scala 2.11.12,这时会报如下错误,但不影响使用.

[ERROR] Failed to construct terminal; falling back to unsupportedjava.lang.NumberFormatException: For input string: "0x100"

可以修改环境变量TERM的值为xterm-color解决:

vi ~/.bashrc

在文件末尾添加

export TERM=xterm-color

使配置生效

source ~/.bashrc

进入scala交互界面

使用如下命令进入scala交互界面:

spark-shell

运行代码

var r = sc.parallelize(Array(1,2,3,4))r.map(_*10).collect()

4)配置pyspark

安装python

如果是ubuntu18+版本,系统已经默认安装Python3;在ubuntu16以前,系统默认安装python2

为了避免Python环境带来不必要的麻烦,这里将介绍两种安装Python环境的方式,建议选择安装Anaconda的方式。

所谓的Python环境主要包括Python解释器、Scripts目录(包含比如pip.exe)以及Lib目录(标准库和包安装目录site-pakages),在指定Python环境时,其实主要就是指定运行哪个目录下的Python解释器。

在安装之前,要注意python的版本问题,比如在使用Python3.8版本时,运行pyspark会出现如下错误,本文将安装Python 3.6版本。

安装官方的Python

(1)安装所需依赖

sudo apt-get install -y gcc make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev

(2)去官网下载对应版本源代码,这里以3.6.15为例

/downloads/source/

wget /ftp/python/3.6.15/Python-3.6.15.tar.xz

(3)安装Python

tar -xvf Python-3.6.15.tar.xzcd Python-3.6.15./configure --prefix=/opt/python3 --enable-optimizationssudo make && make install

注意,如果在安装过程中出现如下错误

subprocess.CalledProcessError: Command ‘(‘lsb_release’, ‘-a’)’ returned non-zero exit status 1

可以执行以下命令解决

rm -rf /usr/bin/lsb_release

(4)设置环境变量

为了使用刚才安装的Python版本,可以将包含python解释器的目录加入到path路径的最前面,所以在.bashrc的文件末尾添加如下设置,并使用source ~/.bashrc使配置生效。

export PATH=/opt/python3/bin:$PATH

安装Anaconda

(1)下载相应版本的Anaconda

可以在网页/archive/上选择相应版本进行下载,这里将下载Anaconda3-5.1.0-Linux-x86_64.sh,其python对应版本为3.6。

cd ~/softwget /archive/Anaconda3-5.1.0-Linux-x86_64.sh

(2)安装anaconda

bash Anaconda3-5.1.0-Linux-x86_64.sh

然后一路回车,等出现接受许可界面,输入yes接收许可。

接着可以配置anacoda的安装目录,这里配置的安装目录是:/home/xiaobai/opt/anaconda3

然后配置是否自动配置PATH路径,这里输入的yes,让其自动配置

最后提示是否安装VSCode,这里输入的no,拒绝安装。

(3)使配置生效

刚才在安装过程中已经自动配置了PATH路径,可以查看添加的配置内容:

tail ~/.bashrc

source ~/.bashrc

安装pyspark开发包

注意,这里的Pyspark指的是在使用python编程时需要使用的pyspark模块,类似Mysql与pymysql的关系。

可以使用在线安装和手动拷贝中的其中一种安装形式,推荐使用手动拷贝的方式。

在线安装

sudo apt install python3-pip #安装pip3sudo pip install pyspark==2.4.8 -i https://pypi.tuna./simple

手动拷贝

进入python交互界面,查看python的path值

import syssys.path

将~/opt/spark/python/lib下的py4j-0.10.7-src.zip和pyspark.zip解压拷贝到某一path路径,比如:

cd ~/opt/spark/python/libunzip py4j-0.10.7-src.zip -d /usr/local/lib/python3.6/dist-packagesunzip pyspark.zip -d /usr/local/lib/python3.6/dist-packages

5) 配置Spark伪Standalone模式

这里配置Standalone模式,为了方便初学者,这里只配置一台从节点,所以将其称为"伪Standalone模式"

切换至配置文件目录

cd ~/opt/spark/conf

spark-env.sh

vi spark-env.sh

添加如下配置信息

export SPARK_MASTER_HOST=node1#设置主节点地址export SPARK_WORKER_MEMORY=2g #设置节点内存大小,此处为4G。export SPARK_WORKER_CORES=2 #设置节点参与计算的核心数export SPARK_WORKER_INSTANCES=1#设置节点实例数export JAVA_HOME=/home/xiaobai/opt/jdkexport HADOOP_CONF_DIR=/home/xiaobai/opt/hadoop/etc/hadoop

slaves

vi slaves

配置从节点信息

node1

6) 测试standalone模式

standalone启动

~/opt/spark/sbin/start-all.sh

可以使用start-master.shstart-slave.shstart-slaves.sh分别启动Master节点,本机slave节点和所有slave节点

此外,还会经常用到historysever,会用到脚本:start-history-server.sh,需要在spark-env.sh中配置SPARK_HISTORY_OPTS参数:

SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://node1:9000/sparklog/ -Dspark.history.fs.cleaner.enabled=true"

查看进程

jps

web查看

node1:8080

测试

pyspark --master spark://node1:7077

运行测试代码

r = sc.parallelize(range(10))r.map(lambda x:x*2).collect()

停止

~/opt/spark/sbin/stop-all.sh

可以使用stop-master.shstop-slave.shstop-slaves.sh分别停止Master节点,本机slave节点和所有slave节点

7) 配置Web交互式环境

安装jupyter(如果在安装python时安装的anaconda,则不需要再安装jupyter, 因为anaconda本身包含了jupyter)

sudo pip3 install jupyter -i https://pypi.tuna./simple

启动jupyter进入交互界面

jupyter notebook

或者

jupyter lab

尝试运行代码

from pyspark import SparkConf, SparkContextconf = SparkConf().setMaster('local').setAppName("My App")sc = SparkContext(conf = conf)logFile = "file:///home/xiaobai/opt/spark/README.md"logData = sc.textFile(logFile, 2).cache()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))

3. 代码提交

编写wordcount程序

vi wordcount.py

编写代码:

from pyspark import SparkConf, SparkContextconf = SparkConf().setAppName("My App")sc = SparkContext(conf = conf)logFile = "file:///home/xiaobai/opt/spark/README.md"logData = sc.textFile(logFile, 2).cache()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))

提交代码到local

spark-submit wordcount.py

提交代码到Standalone

请确保已开启master和worker

spark-submit --master spark://node1:7077 wordcount.py

提交代码到YARN

spark-submit --master yarn wordcount.py

注意

因为我们采用的是伪分布式,主机内存可能不够,可能导致如下错误

ERROR TransportClient: Failed to send RPC RPC 6184886792270084293 to /192.168.206.129:56372: java.nio.channels.ClosedChannelException

可以修改Hadoop的yarn-site.xml配置,然后重启YARN即可。

<property><name>yarn.nodemanager.pmem-check-enabled</name><value>false</value></property><property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value></property>

spark-submit常用参数,可以使用help命令查看:

spark-submit --help

常用参数

Options:--master MASTER_URL spark://host:port, mesos://host:port, yarn,k8s://https://host:port, or local (Default: local[*]).--deploy-mode DEPLOY_MODE Whether to launch the driver program locally ("client") oron one of the worker machines inside the cluster ("cluster"), (Default: client). --class CLASS_NAMEYour application's main class (for Java / Scala apps).--name NAME A name of your application.--jars JARS Comma-separated list of jars to include on the driverand executor classpaths.--packages Comma-separated list of maven coordinates of jars to includeon the driver and executor classpaths. Will search the localmaven repo, then maven central and any additional remoterepositories given by --repositories. The format for thecoordinates should be groupId:artifactId:version

三、相关资源

链接:/s/1u3Qbj2VQ8UbuSuGQOWjWCg 提取码:nuli

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。