Spark集群Win10本地开发环境搭建
- 一、安装Java(必要)
- 1.下载java
- 2.安装java
- 3.配置环境变量
- 二、安装scala(不必要)
- 1.下载scala
- 2.安装scala
- 3.配置scala环境变量
- 4.验证安装
- 三、安装Hadoop(不必要)
- 1.下载hadoop2.7.7
- 2.解压hadoop
- 3.配置hadoop环境变量
- 4.验证安装
- 5.配置hadoop插件
- 四、安装maven(必要)
- 五、安装Scala IDE(必要)
- 1.下载Scala IDE
- 2.解压zip包
- 3.配置maven工程
- 六、利用maven创建Spark工程并使用scala编程
- 1.创建工程
- 2.编写一个单词计数程序
这里附上WIN10
利用docker toolbox搭建hadoop和spark集群的方法
一、安装Java(必要)
1.下载java
2.安装java
Win:双击可执行文件
Linux:解压压缩包
3.配置环境变量
请参考菜鸟教程,这里不多介绍。
二、安装scala(不必要)
注意:该步骤非必须,如果使用Scala IDE自带的scala可以直接跳过
1.下载scala
2.安装scala
将压缩包找一个目录解压
3.配置scala环境变量
在系统变量中添加SCALA_HOME及安装目录,在PATH里添加%%SCALA_HOME%\bin
4.验证安装
powershell里输入命令scala -version
验证
三、安装Hadoop(不必要)
使用maven可以不用安装hadoop,根据个人情况来定
1.下载hadoop2.7.7
链接:https://pan.baidu.com/s/1p5Xh7lw8clIw1VdIDWVbTQ 提取码:pqer
2.解压hadoop
找个目录解压
3.配置hadoop环境变量
在系统变量中添加HADOOP_HOME及安装目录,在PATH里添加%HADOOP_HOME%\bin
和%HADOOP_HOME%\sbin
4.验证安装
输入命令hadoop version
验证
5.配置hadoop插件
(1)下载插件
链接:https://pan.baidu.com/s/1GhhpPlttjXEy55gQop-ExQ 提取码:p5y4
(2)将hadoop.dll放到系统文件的Windows下的System32文件下。winutils放置在hadoop的bin目录下。
四、安装maven(必要)
maven的安装请参考这篇文章中安装maven的前5步。
五、安装Scala IDE(必要)
1.下载Scala IDE
下载链接 注意:截止到2020-06-15,官网已经不再提供scala的eclipse插件安装方式,以后是否会恢复不可预知。
2.解压zip包
我的解压目录是E:/eclipse-scala
3.配置maven工程
(1)打开窗口—》偏好
(2)这样,那样,再这样
(3)那样,这样,最后这样
(4)更改settings.xml为用户自定义(maven安装时修改过的那个maven设置文件)
(5)Apple and Close
六、利用maven创建Spark工程并使用scala编程
1.创建工程
(1)新建工程
(2)新建maven工程
(3)使用默认工作地址,使用quickstart
(4)设置ID和版本等,完成创建
(5)添加scala属性
(6)修改pom.xml
把下边的代码复制进pom.xml里
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>study</groupId>
<artifactId>WordCount</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>WordCount</name>
<url>http://maven.apache.org</url>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
<mirror>
<id>nexus-public-snapshots</id>
<mirrorOf>public-snapshots</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/repositories/snapshots/</url>
</mirror>
<!-- 设置公共属性 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<scala.version>2.11</scala.version>
<spark.version>2.1.0</spark.version>
</properties>
<!-- 设置第三方依赖库的资源服务器 -->
<repositories>
<repository>
<id>maven-ali</id>
<url>http://maven.aliyun.com/nexus/content/groups/public//</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
</repository>
<repository>
<id>scala-tools.org</id>
<name>Scala-Tools Maven2 Repository</name>
<url>http://scala-tools.org/repo-releases</url>
</repository>
</repositories>
<!-- 设置maven插件的资源服务器 -->
<pluginRepositories>
<pluginRepository>
<id>scala-tools.org</id>
<name>Scala-Tools Maven2 Repository</name>
<url>http://download.eclipse.org/releases/indigo/</url>
</pluginRepository>
</pluginRepositories>
<!-- 设置第三方依赖库 -->
<dependencies>
<!-- spark核心依赖包 -->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_${scala.version}</artifactId>
<version>${spark.version}</version>
</dependency>
<!-- 单元测试依赖包 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.specs</groupId>
<artifactId>specs</artifactId>
<version>1.2.5</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
(7)如下图这样编辑pom.xml
(8)新建scala object
(9)设置属性
(10)设置scala库
(11)新建一个文件并命名为log4j.properties
(12)将这段代码复制进去
# Configure logging for testing: optionally with log file
#log4j.rootLogger=debug,appender
#log4j.rootLogger=info,appender
log4j.rootLogger=error,appender
#\u8F93\u51FA\u5230\u63A7\u5236\u53F0
log4j.appender.appender=org.apache.log4j.ConsoleAppender
#\u6837\u5F0F\u4E3ATTCCLayout
log4j.appender.appender.layout=org.apache.log4j.TTCCLayout
2.编写一个单词计数程序
(1)在scala文件里输入如下代码
注意:word.txt需要自己创建,这里为了方便演示没有使用hdfs的地址,如果想要在spark集群和hadoop集群里运行,请更换为hdfs地址,并设置output
package study.WordCount
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
object WordCount {
def main(args:Array[String]) {
val conf = new SparkConf().setAppName("WordCount").setMaster("local")
val sc = new SparkContext(conf)
val inputFile = "file:///A:/Tmp/Word.txt"
val textFile = sc.textFile(inputFile)
val wordCount = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)
wordCount.foreach(println)
}
}
(2)运行结果
(3)集群运行后续步骤
将程序打包,上传到docker容器(spark-master子容器根目录下)
命令:docker cp XXXXXXX.jar spark-master:/
在本地磁盘创建words.txt,将本地文件上传至namenode子容器
命令:docker cp words.txt namenode:/
git bash 切换到namenode子容器
命令:winpty docker exec -it namenode bash
上传容器中的words.txt到hdfs /user目录下
命令:hadoop fs –put words.txt /user
Git bash 切换到spark-master子容器
命令:winpty docker exec -it spark-master bash
执行jar包
命令:Spark/bin/spark-submit --class study.WordCount.WordCount --master spark://spark-master:7077 XXXXXXX.jar