一:环境准备
1.1 安装
java
scala
hadoop(Hadoop中bin文件,需要替换为winutils里面Hadoop对应编译好的版本)
spark(spark与hadoop的版本需要对应)
1.2 配置环境变量(路径中不能有空格(如Program Files这种路径会报错),否则hadoop找不到路径)
JAVA:
添加系统变量JAVA_HOME:
D:\home\Java\jdk1.8.0_171
添加系统变量CLASSPATH:
%JAVA_HOME%\lib
在Path中添加:
%JAVA_HOME%\bin
Scala:
安装中已经自动配置,如果没有,将Scala的bin文件加入Path中。
Hadoop:
加入系统变量HADOOP_HOME,路径设置为Hadoop所在的路径。
在Path中添加:
%HADOOP_HOME%\bin
Spark:
加入系统变量SPARK_HOME,路径设置为Spark所在的路径。
在Path中添加:
%SPARK_HOME%\bin
%SPARK_HOME%\sbin
激活变量:
打开Powershell:set PATH=C:
关闭Powershell再打开Powershell:echo %PATH%
1.3 Powershell中运行spark-shell
二.运行集群
Spark Standalone集群模式部署(Window):
2.1 概述
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模式,需要通过手工或者用启动脚本来启动主从节点,进而实现单个机器作为工作域。
2.2 启动standalone集群
手动启动主从节点,打开cmd命令行,进入spark解压路径,D:\Spark\bin。
2.2.1 启动主节点:
spark-class org.apache.spark.deploy.master.Master
2.2.2 打开新的cmd终端启动从节点,从节点的IP为主节点IP :
spark-class org.apache.spark.deploy.worker.Worker spark://IP地址:7077
启动完成可以登录Spark管理界面查看集群状态,localhost:8080 ,如下图
注意, 启动完成请勿关闭上述两个终端。 同时如果启动spark shell时没有指定master,也可以正常启动spark shell和执行spark shell中的程序,但其实是启动了spark的local模式,仅在本机启动一个进程,并没有与集群建立联系。
2.3 运行程序
import findspark
findspark.init()
import pyspark
from pyspark import SparkContext
from pyspark import SparkConf
master = "spark://55.195.175.51:7077"
# spark_driver_host = "55.195.175.51"
#conf=SparkConf().setAppName("miniProject").setMaster(master).set("spark.driver.host", spark_driver_host)
conf=SparkConf().setAppName("miniProject").setMaster(master).set("spark.executor.cores", 2)
# sc=SparkContext.getOrCreate(conf)
sc = SparkContext(conf = conf)
# my_list = [1,2,3,4,5] #存放在当前环境内存当中的list
# rdd = sc.parallelize(my_list)
# rdd
print(sc.parallelize([i for i in range(1,1000,20)]).collect())