前言:
spark
Spark提供了一个全面、统一的框架用于管理各种有着不同性质(文本数据、图表数据等)的数据集和数据源(批量数据或实时的流数据)的大数据处理的需求
官方资料介绍Spark可以将Hadoop集群中的应用在内存中的运行速度提升100倍,甚至能够将应用在磁盘上的运行速度提升10倍
由于Spark框架大多都搭建在Hadoop系统之上,要明白Spark核心运行原理还是得对Hadoop体系有个熟悉的认知。从Hadoop1.0到Hadoop2.0架构的优化和发展探索详解这篇博客大家可以先去温习一下Hadoop整个体系,然后再来了解Spark框架会更有效率。
对于Spark的框架大家可以参考我之前的Spark三部曲:
Spark框架深度理解一:开发缘由及优缺点
Spark框架深度理解二:生态圈
Spark框架深度理解三:运行架构、核心数据集RDD
PySpark
PySpark 是 Spark 为 Python 开发者提供的 API。
- 支持使用python API编写spark程序
- 提供了PySpark shell,用于在分布式环境中交互式的分析数据
通过py4j,将pythonAPI链接到sparkContext上,以此python程序可以动态的访问jvm中的java对象,java也可以动态的回调python对象
首先SparkContext是spark程序的入口,SparkContext使用Py4J启动 JVM 并创建 JavaSparkContext。py4J启动sparkContext后, 分发到work节点, 所以集群节点上必须有python环境才能解析python文件。
那么废话不多说我们现在开始搭建。 若是大家安装速度过慢可以私聊博主分享网盘。
一、安装JDK
也就是下载JAVA的JDK了,这里给出官网链接:
我这里本地已经部署了,大家选择对应的版本下载就好,本人的JDK为 1.8.0_201Window-x64版本。
安装完成即可,然后配置一下本地环境:
然后classpath有:
".;%JAVA_HOME%\lib\dt.jar";%JAVA_HOME%\lib\tools.jar;C:\PROGRA~1\Java\JDK18~1.0_2\lib;"
之后在终端里输入:
java -version
这样就OK了
二、安装anaconda
这个我本地已经装好了,去官网上下载:
选择对应版本下载就好了
这两个地方记得全勾上, 这样就省去了添加环境变量的麻烦。
这样就安装完毕,一般使用他的Jupyter notebook。
三、安装spark
还是去spark的官网,这里为什么不先装Hadoop呢?是因为spark的版本要适配对应Hadoop的。
我这里直接下的是最新版本的
我建议用最新版本,当然可能会报一些不兼容的错误,回退版本就行,但是还是建议用最新版本的软件。
然后继续配置环境变量:
然后记得在Path上再加上个:
四、安装Hadoop
我这里的hadoop版本是2.6.0的版本已经很老了:
这里我们直接升级到新版本,不用删除老版本的hadoop直接下载新版本的hadoop然后更改一下环境变量就行了:
这里要注意一下版本问题,根据前面Spark我们选择的适配版本下载hadoop:
binary和source的区别
binaries表示已编译好的文件,可以直接使用的版本;
source表示源代码版本,需要自己编译;
我们下binary版本的,解压一下:
然后继续修改环境变量:
在Path上加上:
就好了。
五、安装Scala
Scala的安装方法我在另一篇博客有些完全没有问题:
安装以及使用都十分详细了,这里不做过多演示。
六、配置在Jupyter Lab中运行PySpark
首先确保自己是有JupyterLab的:
用conda list也能够看到:
没有安装的话使用conda install jupyterlab进行安装,然后继续修改环境变量就好了:
PYSPARK_DRIVER_PYTHON
PYSPARK_DRIVER_PYTHON_OPTS
有了这两个以后直接输入pyspark就好了
输入sc:
七、配置pyspark
下载的spark下面的python文件下面是自带pyspark包的,需要讲此包复制到anaconda的目录下面防止出现通过anaconda下载的pyspark和spark不兼容的情况。
转移到:
就可以了。
八、配置winutils
根据我们下载的Hadoop版本下载对应的winutils:
我这里是hadoop-3.3版本的就下了3.3版本的winutils:
放到hadoop的bin目录下。
九、安装findspark
直接输入:
pip install findspark
九、检验是否存在错误
在cmd上输入spark-shell是否存在问题:
spark-shell
证明Spark安装是没有产生任何问题的。
那么我们进行pyspark的测试:
在cmd上面输入pyspark:
进入Jupyterlib:
检验一下findspark:
import findspark findspark.init() findspark.find()
没有问题。 跑个实例:
import findspark findspark.init() from pyspark import SparkContext sc = SparkContext("local", "count app") words = sc.parallelize( ["scala", "java", "hadoop", "spark", "akka", "spark vs hadoop", "pyspark", "pyspark and spark" ]) counts = words.count() print("Number of elements in RDD -> %i" % counts)
能跑通就说明没问题。
当然Juypterlib上面也一样: