栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

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

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

文章目录

一、环境准备二、Spark环境搭建

1. Spark部署方式2. 安装spark

1) 下载Spark

关于版本的选择 2)安装Spark

上传安装包解压并创建软链接Spark的目录结构配置环境变量配置Hadoop信息修改日志级别 3)测试安装

注意进入scala交互界面运行代码 4)配置pyspark

安装python安装pyspark开发包 5) 配置Spark伪Standalone模式

切换至配置文件目录spark-env.shslaves 6) 测试standalone模式

standalone启动查看进程web查看测试停止 7) 配置Web交互式环境 3. 代码提交

编写wordcount程序提交代码到local提交代码到Standalone提交代码到YARN 三、相关资源

一、环境准备

虚拟机安装

虚拟机软件:VMware

操作系统 :Ubuntu1804

参考:https://blog.csdn.net/tangyi2008/article/details/120311293

JDK1.8

Hadoop安装

版本:2.7.7

参考:https://blog.csdn.net/tangyi2008/article/details/121908766

二、Spark环境搭建 1. Spark部署方式

Local模式:单机模式集群模式:

Standalone模式:使用Spark自带的简单集群管理器YARN模式:使用YARN作为集群管理器Mesos模式:使用Mesos作为集群管理器Kubernetes模式:实验阶段 2. 安装spark 1) 下载Spark

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

可以在下载页面的下方进入它的release archives:https://archive.apache.org/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 ~/opt
cd ~/opt
ln -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/spark
export PATH=$SPARK_HOME/bin:$PATH

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

source ~/.bashrc
配置Hadoop信息

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

cd ~/opt/spark/conf
cp spark-env.sh.template  spark-env.sh
vi spark-env.sh

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

export SPARK_DIST_CLASSPATH=$(/home/xiaobai/opt/hadoop/bin/hadoop classpath)
修改日志级别

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

cd ~/opt/spark/conf
cp 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 unsupported
java.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, 需要运行命令sudo apt-get install python3安装python3,当然也可以安装像Anaconda这样的Python发行版

创建python3的软链接,这样在使用Pyspark时,会以系统设置的python环境运行。

sudo ln -s /usr/bin/python3 /usr/bin/python
安装pyspark开发包

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

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

在线安装

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

手动拷贝

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

import sys
sys.path

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

cd ~/opt/spark/python/lib
unzip py4j-0.10.7-src.zip  -d /usr/local/lib/python3.6/dist-packages
unzip 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/jdk
export HADOOP_CONF_DIR=/home/xiaobai/opt/hadoop/etc/hadoop
slaves
vi slaves

配置从节点信息

node1
6) 测试standalone模式 standalone启动
~/opt/spark/sbin/start-all.sh

可以使用start-master.sh、start-slave.sh和start-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.sh、stop-slave.sh和stop-slaves.sh分别停止Master节点,本机slave节点和所有slave节点

7) 配置Web交互式环境

安装jupyter

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

启动jupyter进入交互界面

jupyter notebook

或者

jupyter lab

尝试运行代码

from pyspark import SparkConf, SparkContext
conf = 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, SparkContext
conf = 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即可。


    yarn.nodemanager.pmem-check-enabled
    false


    yarn.nodemanager.vmem-check-enabled
    false

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") or
                           on one of the worker machines inside the cluster ("cluster"), (Default: client).  
--class CLASS_NAME          Your 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 driver
                           and executor classpaths.
--packages                  Comma-separated list of maven coordinates of jars to include
                           on the driver and executor classpaths. Will search the local
                           maven repo, then maven central and any additional remote
                           repositories given by --repositories. The format for the
                           coordinates should be groupId:artifactId:version
三、相关资源
链接:https://pan.baidu.com/s/1u3Qbj2VQ8UbuSuGQOWjWCg 
提取码:nuli 
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/745257.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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