準(zhǔn)備:
1. 規(guī)劃3個(gè)集群節(jié)點(diǎn):
hosts主機(jī)都已經(jīng)配置好映射,映射主機(jī)名分別為master,slave1,slave2,
且已經(jīng)進(jìn)行ssh免密配置,確保端口互通,防火墻關(guān)閉

2. 先安裝好scala(參考:http://www.rzrgm.cn/sea520/p/13518158.html)

 

一. 下載
spark安裝包下載地址:https://archive.apache.org/dist/spark/spark-2.4.6/
將下載的spark-2.4.6-bin-hadoop2.7.tgz上傳到master機(jī)器目錄

(參考:
開發(fā)源碼與編譯下載 https://github.com/apache/spark/tree/branch-2.4
官方的下載地址已經(jīng)無(wú)法選擇版本下載:http://spark.apache.org/downloads.html)

 


二. 安裝

1.解壓 (解壓后主目錄:/opt/soft/spark-2.4.6-bin-hadoop2.7)
tar -zxvf /opt/soft/download_jars/spark-2.4.6-bin-hadoop2.7.tgz -C /opt/soft/

2. 配置環(huán)境變量


3. 配置環(huán)境變量
3.1 打開 vim /etc/profile添加以下配置

# spark home
export SPARK_HOME=/opt/soft/spark-2.4.6-bin-hadoop2.7
export PATH=$SPARK_HOME/bin:$PATH

3.2 讓環(huán)境變量立即生效
source /etc/profile

4. 修改Spark配置文件
spark配置文件模版在: cd ${SPARK_HOME}/conf/
主要修改兩個(gè)配置文件:spark-env.sh和slaves

4.1 spark-env.sh修改:
# 復(fù)制模版
cp spark-env.sh.template spark-env.sh
# 添加配置 (請(qǐng)修改成你自己的各種目錄環(huán)境,注意最后一個(gè) HADOOP_CONF_DIR=你的hadoop主目錄/etc/hadoop   ,/etc/hadoop要保留哦)
vim spark-env.sh
export SCALA_HOME=/opt/soft/scala-2.13.3
export JAVA_HOME=/opt/soft/jdk1.8.0_261
export SPARK_MASTER_IP=master
export SPARK_WORKER_MEMORY=1g
export HADOOP_CONF_DIR=/opt/soft/hadoop-3.1.2/etc/hadoop


4.2 slaves修改
cp slaves.template slaves
vim slaves
# localhost
slave1
slave2

5. node節(jié)點(diǎn)分發(fā)(如果在內(nèi)網(wǎng),用內(nèi)網(wǎng)IP比主機(jī)名快很多,主機(jī)名是映射的公網(wǎng)太慢)
scp -r /opt/soft/spark-2.4.6-bin-hadoop2.7 hadoop@172.17.0.5:/opt/soft/
scp -r /opt/soft/spark-2.4.6-bin-hadoop2.7 hadoop@172.17.0.13:/opt/soft/


6. 其他各node節(jié)點(diǎn)(slave1,slave2)分別配置環(huán)境變量與刷新環(huán)境變量(執(zhí)行3.1,3.2兩個(gè)步驟),
刷新profile文件使配置生效,驗(yàn)證安裝是否OK


7.啟動(dòng)Spark集群

7.1啟動(dòng)前確定Hadoop集群已經(jīng)啟動(dòng)。

7.2啟動(dòng)命令:
/opt/soft/spark-2.4.6-bin-hadoop2.7/sbin/start-all.sh

 

master節(jié)點(diǎn)進(jìn)程:

 

 

worker節(jié)點(diǎn)進(jìn)程:

 

 

 

 

 

 

====================================================================================================

 

小小嘗試: 進(jìn)行 Spark集群測(cè)試,運(yùn)行第一個(gè)spark任務(wù)WorldCount

====================================================================================================

 


8. Spark集群測(cè)試--運(yùn)行第一個(gè)spark任務(wù)WorldCount

8.1 準(zhǔn)備一個(gè)測(cè)試文件,摘錄一段百度詞條中對(duì)spark的介紹內(nèi)容。
vim spark-test.txt

在spark-test.txt中輸入以下文字:
hi,sea
Apache Spark 是專為大規(guī)模數(shù)據(jù)處理而設(shè)計(jì)的快速通用的計(jì)算引擎。Spark是UC Berkeley AMP lab (加州大學(xué)伯克利分校的AMP實(shí)驗(yàn)室)所開源的類Hadoop MapReduce的通用并行框架,Spark,擁有Hadoop MapReduce所具有的優(yōu)點(diǎn);但不同于MapReduce的是——Job中間輸出結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫HDFS,因此Spark能更好地適用于數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)等需要迭代的MapReduce的算法。
Spark 是一種與 Hadoop 相似的開源集群計(jì)算環(huán)境,但是兩者之間還存在一些不同之處,這些有用的不同之處使 Spark 在某些工作負(fù)載方面表現(xiàn)得更加優(yōu)越,換句話說(shuō),Spark 啟用了內(nèi)存分布數(shù)據(jù)集,除了能夠提供交互式查詢外,它還可以優(yōu)化迭代工作負(fù)載。
Spark 是在 Scala 語(yǔ)言中實(shí)現(xiàn)的,它將 Scala 用作其應(yīng)用程序框架。與 Hadoop 不同,Spark 和 Scala 能夠緊密集成,其中的 Scala 可以像操作本地集合對(duì)象一樣輕松地操作分布式數(shù)據(jù)集。
盡管創(chuàng)建 Spark 是為了支持分布式數(shù)據(jù)集上的迭代作業(yè),但是實(shí)際上它是對(duì) Hadoop 的補(bǔ)充,可以在 Hadoop 文件系統(tǒng)中并行運(yùn)行。通過名為 Mesos 的第三方集群框架可以支持此行為。Spark 由加州大學(xué)伯克利分校 AMP 實(shí)驗(yàn)室 (Algorithms, Machines, and People Lab) 開發(fā),可用來(lái)構(gòu)建大型的、低延遲的數(shù)據(jù)分析應(yīng)用程序。---sea

8.2 將測(cè)試文件上傳到hdfs中
hadoop fs -put spark-test.txt /sea

8.3 啟動(dòng)spark-shell:
spark-shell


啟動(dòng)后注意觀察這幾行輸出:
Spark context Web UI available at http://master:4040
Spark context available as 'sc' (master = local[*], app id = local-1597655266634).
Spark session available as 'spark'.

啟動(dòng)后可以通過瀏覽器訪問http://master:4040/查看Jobs,Stages,Storage,Environment,Executors等情況

 

8.3 輸入測(cè)試代碼

val f = sc.textFile("hdfs://master:9000/sea/spark-test.txt")
回車



f.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_+_).collect().foreach(println)
回車,觀察結(jié)果

 

 

 

到這里安裝與第一個(gè)例子都搞定了,其他的可以根據(jù)實(shí)際需要進(jìn)行配置與調(diào)優(yōu),如配置yarn調(diào)度,spark工作內(nèi)存等