大数据课设笔记2:Win10 Spark集群本地开发环境搭建

亡梦爱人 提交于 2020-10-25 19:34:28


这里附上WIN10 利用docker toolbox搭建hadoop和spark集群的方法

一、安装Java

1.下载java

jdk1.8下载链接

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

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


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!