Spark簡介
Apache Spark 是專為大規(guī)模數(shù)據(jù)處理而設(shè)計(jì)的快速通用的計(jì)算引擎。
Spark最初作為一個(gè)研究項(xiàng)目,誕生于加州大學(xué)伯克利分校AMP實(shí)驗(yàn)室,主要原因是AMP實(shí)驗(yàn)室的研究人員發(fā)現(xiàn)在機(jī)器學(xué)習(xí)迭代算法場(chǎng)景下,Hadoop MapReduce的效率很低。為了迭代算法和交互式查詢兩種典型的場(chǎng)景,于是Spark應(yīng)運(yùn)而生。
Spark剛誕生時(shí),常常被稱為內(nèi)存計(jì)算,主要原因是在典型應(yīng)用中,Spark讀取HDFS中的文件,加載到內(nèi)存,在內(nèi)存中使用彈性分布式數(shù)據(jù)集(Resilient Distributed Dataset,RDD)來組織數(shù)據(jù)。RDD可以重用,支持重復(fù)訪問,在機(jī)器學(xué)習(xí)的各個(gè)迭代中它都會(huì)駐留在內(nèi)存,這樣可以顯著的提升性能。即便是必須使用磁盤進(jìn)行復(fù)雜計(jì)算的場(chǎng)景,Spark也常常比Hadoop MapReduce更加高效。
Saprk是一個(gè)通用計(jì)算框架,包含了特定場(chǎng)景下的計(jì)算庫:Streaming、SQL、MLlib、Graphx等,除了支持常見的MapReduce范式,還能夠支持圖計(jì)算、流式計(jì)算等復(fù)雜計(jì)算場(chǎng)景,在很大程度上彌補(bǔ)了Hadoop的不足。
Spark分布式安裝部署
安裝Scala
首先在集群中的主節(jié)點(diǎn)服務(wù)器hadoop-1中進(jìn)行安裝配置,Scala安裝包可以到官方網(wǎng)站https://www.scala-lang.org/進(jìn)行下載。
使用Xftp將Scala和Spark安裝包上傳到hadoop-1的/usr目錄下:

安裝Scala,進(jìn)入/user目錄,使用tar命令將壓縮包進(jìn)行解壓,執(zhí)行命令:
# tar zxvf scala-2.12.2.tgz

解壓完成后會(huì)在/usr目錄下生成scala-2.12.2目錄:

使用vim編輯環(huán)境變量:
# vim /etc/profile
新增內(nèi)容如下:
export SCALA_HOME=/usr/scala-2.12.2
export PATH=$SCALA_HOME/bin:$PATH

保存退出,,執(zhí)行命令使修改生效:
# source /etc/profile
執(zhí)行以下命令查看安裝是否成功:
# scala -version

顯示版本信息則安裝成功,hadoop-2和hadoop-3節(jié)點(diǎn)主機(jī)環(huán)境變量做相同配置。
安裝Spark
Spark安裝包可以到官方網(wǎng)站http://spark.apache.org/進(jìn)行下載。
安裝Spark,進(jìn)入/user目錄,使用tar命令將壓縮包進(jìn)行解壓,執(zhí)行命令:
# tar zxvf spark-2.4.4-bin-hadoop2.7.tgz

解壓完成后會(huì)在/usr目錄下生成spark-2.4.4-bin-hadoop2.7目錄:

使用vim編輯環(huán)境變量:
# vim /etc/profile
新增內(nèi)容如下:
export SPARK_HOME=/usr/spark-2.4.4-bin-hadoop2.7
export PATH=$SPARK_HOME/bin:$PATH

保存退出,,執(zhí)行命令使修改生效:
# source /etc/profile
Spark配置
進(jìn)入Spark的配置文件目錄,并查看該目錄下的文件:
# cd /usr/spark-2.4.4-bin-hadoop2.7/conf/
# ll

執(zhí)行以下命令,創(chuàng)建spark-env.sh文件和slaves文件:
# cp spark-env.sh.template spark-env.sh
# cp slaves.template slaves

使用vim編輯配置文件spark-env.sh:
# vim spark-env.sh
新增以下內(nèi)容:
export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
export HADOOP_HOME=/usr/hadoop-2.7.7
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export SCALA_HOME=/usr/scala-2.12.2
export SPARK_HOME=/usr/spark-2.4.4-bin-hadoop2.7
export SPARK_MASTER_IP=hadoop-1
export SPARK_EXECUTOR_MEMORY=1G

保存退出,使用vim編輯配置文件slaves文件:
# vim slaves
新增以下內(nèi)容:
hadoop-2
hadoop-3

保存退出。
部署
使用scp命令將Scala和Spark分別遠(yuǎn)程拷貝到hadoop-2和hadoop-3節(jié)點(diǎn)主機(jī)中:
# scp -r /usr/scala-2.12.2 hadoop-2:/usr/
# scp -r /usr/scala-2.12.2 hadoop-3:/usr/
# scp -r /usr/spark-2.4.4-bin-hadoop2.7 hadoop-2:/usr/
# scp -r /usr/spark-2.4.4-bin-hadoop2.7 hadoop-3:/usr/
在hadoop-2和hadoop-3兩臺(tái)主機(jī)的/usr目錄下可以看到已經(jīng)拷貝成功:

啟動(dòng)Spark
啟動(dòng)Spark首先要保證Hadoop集群在運(yùn)行中。
在hadoop-1主節(jié)點(diǎn)中進(jìn)行啟動(dòng),進(jìn)入Spark的sbin目錄下,執(zhí)行啟動(dòng)命令:
# cd /usr/spark-2.4.4-bin-hadoop2.7/sbin/
# ./start-all.sh
啟動(dòng)完成后,使用jps命令可以查看啟動(dòng)的進(jìn)程。
hadoop-1主節(jié)點(diǎn)為Master進(jìn)程:

hadoop-2和hadoop-3節(jié)點(diǎn)為Work進(jìn)程:


瀏覽器訪問:http://192.168.44.128:8080/:

此處若在啟動(dòng)Spark前,已經(jīng)事先將Hadoop、ZooKeeper、Hbase等啟動(dòng)完成,則8080端口會(huì)被ZooKeeper占用,這是由于ZooKeeper 3.5版本新特性決定的,此時(shí)Spark啟動(dòng)端口會(huì)被換成8081,查看Spark Master日志文件內(nèi)容,可以看到該端口變換信息。
使用spark-shell命令,可以與Spark進(jìn)行交互:

瀏覽器訪問:http://192.168.44.128:4040/jobs/,可以在Web頁面找那個(gè)查看Job情況:

至此Spark的安裝配置完成。