一、安装Scala
1.到官网下载Scala安装压缩包,本次试验下载的为2.12.8版本。
2.h1用户下新建Scala文件夹,并将下载好的压缩包解压缩到Scala文件夹中。
3.配置 /etc/profile文件
4.source /etc/profile使环境变量配置生效。
二、安装Spark
1.到官网下载Spark安装压缩包,本次试验下载的为2.4.0版本。
2.在h1用户下新建Spark文件夹,并将下载好的压缩包解压到Spark文件夹中。
3.进入 /con文件夹中对Spark进行配置:
4.配置spark-env.sh文件:
export SCALA_HOME=/home/h1/Scala/scala-2.12.8
export JAVA_HOME=/usr/java/jdk1.8.0_191
export SPARK_WORKER_MEMORY=1g
export SPARK_MASTER_IP=master
export MASTER=spark://master:7077
5.修改conf/slaves文件
在slaves文件中添加slave1
6.使用scp命令将master上的scala及spark文件拷到slave1机器上,并修改环境变量使其生效。
三、启动集群
1.start-all.sh启动hadoop集群。
2.然后切到spark安装目录下的sbin文件夹中使用./start-all.sh启动spark。
3.使用jps可以查看到相应进程
四、WordCount实验
1.安装sbt
echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2EE0EA64E40A89B84B2DF73499E82A75642AC823
sudo apt-get update
sudo apt-get install sbt
2.sbt默认安装到了/usr/bin文件夹下。
3.在h1用户下新建sparkapp文件夹。
mkdir ~/sparkapp
并创建程序所需的文件夹结构:
mkdir -p ~/sparkapp/src/main/scala
4.使用下列命令创建一个Wordcount.scala文件,并写入代码:
import org.apache.spark._
import org.apache.spark.SparkContext._
object WordCount {
def main(args: Array[String]){
val conf = new SparkConf()
val sc = new SparkContext(conf)
val line = sc.textFile(args(0))
val result = line.flatMap(_.split("[^a-zA-Z]+")).map((_, 1)).reduceByKey(_+_)
result.saveAsTextFile(args(1))
sc.stop()
}
}
~
5.vim ~/sparkapp/WordCount.sbt创建一个sbt文件,并声明依赖关系:
6.使用/usr/bin/sbt package
进行打包
显示success时表明打包成功,在~/sparkapp/target/scala-2.11
下生成了wordcount_2.11-1.0.jar包。
7.在h1目录下新建spark.txt文件用于wordcount实验,并写入内容:we are good
8.并将.txt文件上传到hdfs中。
9.切换到spark下的bin目录中,使用./spark-submit --class “WordCount” ~/sparkapp/target/scala-2.11/wordcount_2.11-1.0.jar /Spark/spark.txt /Spark/out
命令执行任务
10.使用cat命令可查看实验结果。
注意:
1.机器上安装的Scala版本可能会与编译Spark的Scala版本不同,会导致sbt打包的jar包出现版本冲突错误,应在.sbt文件中声明依赖关系时使用Spark编译的Scala版本,可在Spark的jars文件夹中查看编译Spark的Scala版本。
2.注意权限问题。