跟我一起学Spark之——Windows10下spark2.3.0本地开发环境搭建-亲测

相关组件版本:

JDK1.8.0_171,hadoop-2.7.6,Spark-2.3.0,Scala-2.11.8,Maven-3.5.3,ideaIC-2018.1.4.exe,spark-2.3.0-bin-hadoop2.7

1.1  JDK1.8.0_171

a.    下载JDK,jdk-8u171-windows-x64.exe,安装到目录:D:\setupedsoft\Java,并设置 JAVA_HOME 变量

http://www.oracle.com/technetwork/java/javase/downloads/index.html

b. 设置 Path 变量,添加 ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

c. 设置 Classpath 添加:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

d. 分别使用java/javac来验证环境变量是否配置成功

注意:老老实实把安装路径变成没有空格的!!!!!!

路径上包含空格的,有以下2个解决办法:(但是在启动节点和关闭节点时会报错“C:\Program” 不是个命令)

1.用路径替代符(需要重启电脑)         C:\PROGRA~1\Java\jdk1.8.0_171

2.用引号括起来                                     "C:\Program Files"\Java\jdk1.8.0_171

1.2   hadoop-2.7.6

1.2.1 下载并解压

下载地址:https://archive.apache.org/dist/hadoop/common/hadoop-2.7.6/     

下载:hadoop-2.7.6.tar.gz 解压至安装目录D:\setupedsoft\hadoop-2.7.6 

1.2.2 设置环境变量

HADOOP_HOME=D:\setupedsoft\hadoop-2.7.6
Path=;%HADOOP_HOME%\bin

1.2.3 支持windows运行

下载地址:https://pan.baidu.com/s/1_C4TALLBW9TbIrJMC4JKtA 密码: dc63

一个支持在windows运行hadoop的工具

用解压后的bin、etc目录覆盖hadoop的bin、etc目录(亲测这个工具适用于hadoop2.5和2.7,其他的尚且不知)

1.2.4 创建HADOOP数据存储目录

在/D:/datafile/hadoop-2.7.6目录新建workplace目录,进入workplace,新建子文件夹temp、data、name 

1.2.5 修改hadoop配置文件

链接:https://pan.baidu.com/s/1y178KxOUPbcZH_Efmvx1Kg 密码:qgez

1.2.6 格式化命名节点

终端运行hdfs namenode -format,出现类似INFO util.ExitUtil: Exiting with status0则说明没有错 

D:\setupedsoft\hadoop-2.7.6\bin>hdfs namenode -format

1.2.7 启动hadoop

sbin目录下,执行start-all.cmd 

D:\setupedsoft\hadoop-2.7.6\sbin>start-all.cmd

1.2.8 web ui界面查看

http://localhost:8088/cluster 

http://localhost:50070/dfshealth.html#tab-overview

1.2.9 停止所有节点

stop-all.cmd

1.3Spark-2.3.0

1.3.1 下载并解压

下载地址: http://spark.apache.org/downloads.html

下载spark-2.3.0-bin-hadoop2.7.tgz,解压至安装目录 D:\setupedsoft\spark-2.3.0-bin-hadoop2.7

1.3.2 新建环境变量SPARK_HOME 

新建环境变量SPARK_HOME,值为spark安装目录 

将%SPARK_HOME%\bin添加至环境变量path 

1.3.3 运行SPARK

终端输入spark-shell或pyspark或sparkR,能成功打开则安装成功

1.3.4 界面查看

http://localhost:4040

1.4  Scala-2.11.8

下载地址:https://www.scala-lang.org/download/2.11.8.html(2.12.6报错,改为安装2.11.8)

a.设置 SCALA_HOME

b.设置 Path 变量:添加 ;%SCALA_HOME%\bin

c.设置 Classpath 添加:.;%SCALA_HOME%\bin;

配置JDK和Scala SDK 菜单路径:Project Structure>>Platform Settings

SDKs,添加上述安装的jdk

Global Libraries,添加Scala SDK,选择上述安装的Scala,版本选择2.11,并将Scala SDK2.11添加到当前项目

1.5  Maven-3.5.3

下载地址:http://maven.apache.org/download.cgi,解压到目录:D:\setupedsoft\apache-maven-3.5.3

a.设置 MAVEN_HOME 变量,值为:D:\setupedsoft\apache-maven-3.5.3

b.设置 Path 变量:添加 ;%MAVEN_HOME%\bin;

查看MAVEN安装是否成功:mvn -v

1.6  IntelliJIDEA 安装 

下载地址:http://www.jetbrains.com/idea/download/#section=windows

选择开源版本64位

1.7   IDEA环境安装

1.7.1 安装idea

执行EXE文件安装

1.7.2 修改maven配置

配置maven 菜单路径:File>>Setting>>Build,Execution,Deployment>>BuildTools>>Maven 设置maven安装路径

1.7.3 Scala插件安装

Scala插件安装 菜单路径:File>>Setting>>Plugins>>Browse Repositories 搜索Scala,安装,重启IntelliJ IDEA

1.7.4 全局JDK和Library的设置

欢迎界面>>Configure>>Project Defaults>>Project Structure>>SDKs

 

1.7.5 配置全局的Scala SDK

欢迎界面>>Configure>>Project Defaults>>Project Structure>>GlobalLibraries>>加号>>Scala SDK

1.7.6 新建maven项目

新建maven项目,main中新建scala目录,并在File>>projectstructure>>modules中,将scala目录标记为sources

1.7.7 导入spark依赖

修改pom.xml文件,并修改设置为自动导入依赖File>>Settings>>Importing>>Import Maven projects automatically 

链接:https://pan.baidu.com/s/1xmy7cPE_BkKNFv04G-perg 密码:rdas

1.7.8编写sprak代码

依赖添加成功后,新建scala 的object 文件然后填写如下代码:

import org.apache.spark.{SparkConf, SparkContext}
/**
  *
  * @author migu-orrin on 2018/5/3.
  */
object WordCount {
  def main(args: Array[String]) {
    /**
      * SparkContext 的初始化需要一个SparkConf对象
      * SparkConf包含了Spark集群的配置的各种参数
      */
    val conf=new SparkConf()
      .setMaster("local")//启动本地化计算
      .setAppName("WordCount")//设置本程序名称

    //Spark程序的编写都是从SparkContext开始的
    val sc=new SparkContext(conf)
    //以上的语句等价与val sc=new SparkContext("local","testRdd")
    val data=sc.textFile("E:/data/wordcount.txt")//读取本地文件
    var result = data.flatMap(_.split(" "))//下划线是占位符,flatMap是对行操作的方法,对读入的数据进行分割
      .map((_,1))//将每一项转换为key-value,数据是key,value是1
      .reduceByKey(_+_)//将具有相同key的项相加合并成一个

    result.collect()//将分布式的RDD返回一个单机的scala array,在这个数组上运用scala的函数操作,并返回结果到驱动程序
      .foreach(println)//循环打印
    result.saveAsTextFile("E:/data/wordcountres")
  }
}

1.7.9打包运行

运行成功后,可以讲代码打包成jar 包发送到远端或者本地的spark 集群上运行。打包有以下步骤

点击“File“然后选择“project Structure“

然后如图所示进行如下操作 ,在弹出的对话框中点击按钮,选择主类进行如下4步操作。

由于我们的jar包实在spark 上运行的,故可以删除其他不需要的依赖包

注意:outputdirectory 的路径。此处是你导出 jar 的路径。

执行 bulid 构建你的jar

jar 包导出以后就可以在spark上运行了。包导出路径是在project structure的output directory:D:\hanrworkspace\mytest\out\artifacts\mytest_jar

此时进入终端,进入到spark安装包的 bin 目录下。执行如下命令:

spark-submit--class SparkPi --master spark://spark1:7077/D:/hanrworkspace/mytest/out/artifacts/mytest_jar/mytest.jar

注:

SparkPi:是启动类的名字,如果有包命,要加包名,(例如 com.edu.SparkPi)

spark1:7077 :是你远端的spark 的地址,(spark1:7077为提交到本机测试)。

/D:/hanrworkspace/mytest/out/artifacts/mytest_jar/mytest.jar:是你jar 包的路径。

 

参考博客:

添加自己总结的部分,下面为借鉴博客原文地址:

https://blog.csdn.net/u011521890/article/details/78577582

https://my.oschina.net/orrin/blog/1812035

https://blog.csdn.net/huan_chen/article/details/78574835

https://blog.csdn.net/Gnd15732625435/article/details/81062381

https://blog.csdn.net/hambition/article/details/80769771?utm_source=copy