Spark Standalone集群模式部署(Window)及其Python开发环境搭建

概述

Spark提供了两种交互式shell, 一个是pyspark(基于Python), 一个是spark_shell(基于Scala). 这两个环境相互独立并无依赖关系, 所以如果仅仅是使用pyspark交互环境, 是可以不安装scala的。

常见的几种spark部署模式

  • local(本地模式):常用于本地开发测试,本地还分为local单线程和local-cluster多线程;
  • standalone(集群模式):Spark本身是一个master/slaves的模式,可以看出Master是有单点故障的。
  • on yarn(集群模式): 运行在 yarn 资源管理器框架之上,由 yarn 负责资源管理,Spark 负责任务调度和计算

其中standalone模式,需要通过手工或者用启动脚本来启动主从节点,进而实现单个机器作为工作域。

环境准备

从apache spark网站下载spark-2.3.2-bin-hadoop2.6.tgz预编译包, 选择预编译包, 免去了从源码直接编译的麻烦. spark2.3.2 在Java8+, python2.7+/3.4+ 运行,park的各个版本需要跟相应的Scala版本对应,因此我们使用的Scala2.11版本。

同时本机电脑配置 win7 4核8线程 8G内存.

所需所有的安装文件见下图:

Spark Standalone集群模式部署(Window)及其Python开发环境搭建

安装JDK并设置环境变量

JAVA必须为1.7以上版本,如已安装请确认系统变量是否配置正确(在桌面右击【计算机】--【属性】--【高级系统设置】,然后在系统属性里选择【高级】--【环境变量】)。

假设JAVA安装目录在 D:\Program Files\Java,需要新建系统变量JAVA_HOME,值为D:\Program Files\Java\jdk1.8.0_181 ,如下图:

Spark Standalone集群模式部署(Window)及其Python开发环境搭建

在PATH中加入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin,如下图

Spark Standalone集群模式部署(Window)及其Python开发环境搭建

解压并设置hadoop环境变量

Spark需要Hadoop的HDFS作为持久化层,所以在安装Spark之前需要安装Hadoop。解压hadoop-2.6.5.tar.gz到D盘根目录,hadoop-2.6.5目录重命名为hadoop

新建系统变量名HADOOP_HOME, 变量值为D:\hadoop,如下图

Spark Standalone集群模式部署(Window)及其Python开发环境搭建

在PATH中加入%HADOOP_HOME%;%HADOOP_HOME%\bin,如下图

Spark Standalone集群模式部署(Window)及其Python开发环境搭建

复制winutils.exe到D:\hadoop\bin 文件夹, winutils可以使windows使用linux命令。

解压spark并设置spark环境变量

Spark 由 Scala语言开发,而Scala也是运行于JVM之上,因此也可以看作是跨平台的,所以在下载spark-2.3.2-bin-hadoop2.6.tgz之后, 在Windows 平台直接解压即可。解压spark-2.3.2-bin-hadoop2.6.tgz 到D盘根目录,spark-2.3.2目录重命名为Spark。

新建系统变量名为SPARK_HOME ,设置变量值为D:\Spark,如下图

Spark Standalone集群模式部署(Window)及其Python开发环境搭建

在PATH中加入%SPARK_HOME%;%SPARK_HOME%\bin,如下图

Spark Standalone集群模式部署(Window)及其Python开发环境搭建

启动standalone集群

手动启动主从节点,打开cmd命令行,进入spark解压路径,D:\Spark\bin。

启动主节点:

spark-class org.apache.spark.deploy.master.Master
Spark Standalone集群模式部署(Window)及其Python开发环境搭建

打开新的cmd终端启动从节点,从节点的IP为本机IP

spark-class org.apache.spark.deploy.worker.Worker spark://xx.xx.240.58:7077 
Spark Standalone集群模式部署(Window)及其Python开发环境搭建

启动完成可以登录Spark管理界面查看集群状态,localhost:8080 ,如下图

Spark Standalone集群模式部署(Window)及其Python开发环境搭建

从上图我们可以看到我们的主从节点是都是本机240.58,但是目前没有运行任何应用,所以Running Applications为0。

注意,启动完成请勿关闭上述两个终端。同时如果启动spark shell时没有指定master,也可以正常启动spark shell和执行spark shell中的程序,但其实是启动了spark的local模式,仅在本机启动一个进程,并没有与集群建立联系。

运行Scala应用

打开新的cmd终端,输入

spark-shell --master spark://xx.xx.240.58:7077 --total-executor-cores 1 --executor-memory 1G 
  • total-executor-cores 1 表示 总共使用一个核心,
  • executor-memory 1G 表示每个executor的内存为1G

如能显示如下界面,则可以运行scala命令。

Spark Standalone集群模式部署(Window)及其Python开发环境搭建

输入

 spark.range(1).withColumn("status", lit("All seems fine. Congratulations!")).show(false)
Spark Standalone集群模式部署(Window)及其Python开发环境搭建

如果能显示 All sems fine……语句,则Spark Standalone集群搭建成功。

查看集群运行状态

Spark Standalone集群模式部署(Window)及其Python开发环境搭建

由上图可以看到目前有 Spark shell的应用正在运行,点击可查看详细。

使用pycharm编写pyspark脚本并提交到集群服务器运行

环境准备

安装 anaconda 版本的 Python 2.7

https://store.continuum.io/cshop/anaconda/

安装 py4j-0.10.7-py2.py3-none-any.whl

pip install py4j-0.10.7-py2.py3-none-any.whl

py4j是个能访问java 对象的python程序,同样也能使java访问python对象。

导入pyspark模块

复制 D:\Spark\python 下的pyspark文件夹到python的安装目录,比如我的安装文件夹路径为C:\Anaconda2\Lib\site-packages,验证pyspark能否可以导入成功:

Spark Standalone集群模式部署(Window)及其Python开发环境搭建

使用pycharm创建spark任务

Spark Standalone集群模式部署(Window)及其Python开发环境搭建

打开localhost:8080 ,查看任务状态:

Spark Standalone集群模式部署(Window)及其Python开发环境搭建

后续将介绍如何使用spark sql进行简单的数据挖掘与分析,若对你有帮助,点赞支持哦。


分享到:


相關文章: