Spark完全分布式安装及简单Scala编程

基于Hadoop环境的Spark完全分布式安装及在Windows下使用IDEA进行Scala编程
一、Spark完全分布式安装
首先确保已经安装好完全分布式Hadoop环境,谨记Spark与Hadoop版本的兼容性
安装包 |
---|
scala-2.11.12.tgz |
spark-2.4.5-bin-hadoop2.7.tgz |
1、安装Scala
1 | tar -xzvf scala-2.11.12.tgz |
配置环境变量
1 | export SCALA_HOME=/home/sunshj/scala-2.11.12 |
测试scala&打印版本信息
1 | scala |
2、安装Spark
1 | tar -xzvf spark-2.4.5-bin-hadoop2.7.tgz |
配置环境变量
1 | export SPARK_HOME=/home/sunshj/spark-2.4.5 |
使配置文件立即生效
1 | source .bashrc |
3、配置Spark
进入Spark的conf目录
1 | cp spark-env.sh.template spark-env.sh |
1 | cp slaves.template slaves |
spark-env.sh
配置信息
1 | export JAVA_HOME=/home/sunshj/jdk1.8 |
slaves
添加
1 | slave1 |
分发到子节点
1 | scp -r spark-2.4.5/ sunshj@slave1:/home/sunshj/ |
1 | scp -r .bashrc sunshj@slave1:/home/sunshj/ |
4、启动Spark集群
- 首先要启动hadoop集群
- 进入Spark的sbin目录,将
start-all.sh
修改为start-spark.sh
,同样把stop-all.sh
修改为stop-spark.sh
,这样做是因为Spark的sbin目录与Hadoop的sbin目录中有重名shell脚本。 - jps查看master进程中是否多了Master以及Worker,slave1与slave2中是否多了worker。如果有,则正常。
二、Scala编程实现WordCount程序
1、windows下安装Scala
安装包 |
---|
scala2.11.12.msi |
添加系统环境变量
1 | 新建SCALA_HOME,内容为scala安装路径 |
测试
1 | scala -version |
2、IDEA配置
IDEA需要安装Scala插件
新建Maven工程,选中
Create from archetype
,选择org.scala-tools.archetypes:scala-archetypes-simples
,按流程创建工程。修改
pom.xml
,将scala.version
标签内容改为2.11.12
。并添加以下内容1
2
3
4
5
6
7
8
9
10<dependency>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>2.11</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.5.1</version>
</dependency>删除test文件夹内容
3、编写程序
新建
Scala Class
,选择Object
,命名为WordCount添加依赖
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.4.5</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.7</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.7.7</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.7.7</version>
</dependency>程序代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
object WordCount
{
def main(args : Array[String])
{
val conf = new SparkConf().setAppName("WordCount")
val sc = new SparkContext(conf)
val inFile = sc.textFile("hdfs://master:9000/input/test.txt")
val wordCount = inFile.flatMap(_.split(" ")).map(word => (word,1)).reduceByKey((a,b)=>a+b)
wordCount.foreach(println)
}
}
4、打包提交
打包:和java程序打包方法相同,打包为WordCount.jar
上传至master主机,使用以下命令执行程序,其中 {Main-Class}
为你的MANIFEST.MF
文件中的 Main-Class
。
首先删除不必要的文件
1 | zip -d WordCount.jar META-INF/*.RSA META-INF/*.DSA META-INF/*.SF |
执行程序
1 | spark-submit --class {Main-Class} WordCount.jar |
评论