網(wǎng)站建設(shè)工作室北京小俊哥簡(jiǎn)單網(wǎng)站建設(shè)優(yōu)化推廣
文章目錄
- Spark 運(yùn)行環(huán)境
- 一、Local 模式
- 1. 下載壓縮包
- 2.上傳到服務(wù)器
- 3. 解壓
- 4. 啟動(dòng) Local 環(huán)境
- 5. 命令行工具
- 6. 退出本地模式
- 7. 提交應(yīng)用
- 二、Standalone 模式
- 1. 解壓
- 2. 修改配置文件
- 1)進(jìn)入解壓縮后路徑的 conf 目錄,復(fù)制 workers.template 文件為 workers
- 2)修改 workers文件,添加 work 節(jié)點(diǎn)
- 3)復(fù)制 spark-env.sh.template 文件名為 spark-env.sh
- 4)修改 spark-env.sh 文件,添加 JAVA_HOME 環(huán)境變量和集群對(duì)應(yīng)的 master 節(jié)點(diǎn)
- 5)分發(fā) spark-standalone 目錄
- 3. 啟動(dòng)集群
- 1)執(zhí)行腳本命令
- 2)查看三臺(tái)服務(wù)器運(yùn)行進(jìn)程
- 3)查看 Master 資源監(jiān)控 Web UI 界面:http://hadoop001:8080/
- 4. 提交應(yīng)用
- 5. 提交參數(shù)說明
- 6. 配置歷史服務(wù)
- 1)修改 spark-defaults.conf.template 文件名為 spark-defaults.conf
- 2)啟動(dòng) hadoop 集群
- 3)創(chuàng)建 directory 文件夾
- 4)修改 spark-default.conf 文件,配置日志存儲(chǔ)路徑
- 5)修改 spark-env.sh 文件, 添加日志配置
- 6)分發(fā)配置文件
- 7)重新啟動(dòng)集群和歷史服務(wù)
- 8)重新執(zhí)行任務(wù)
- 9)查看歷史服務(wù):http://hadoop001:18080
- 7. 配置高可用(HA)
- 1)啟動(dòng)HDFS
- 2)啟動(dòng) Zookeeper
- 3)修改 spark-env.sh 文件添加如下配置
- 4)分發(fā)配置文件
- 5)啟動(dòng)集群
- 6)啟動(dòng) hadoop002 的單獨(dú) Master 節(jié)點(diǎn)
- 7)提交應(yīng)用到高可用集群
- 8)停止 Hadoop001的 Master 資源監(jiān)控進(jìn)程
- 9)查看 Hadoop002 的 Master 資源監(jiān)控 Web UI,稍等一段時(shí)間后,Hadoop002節(jié)點(diǎn)的 Master 狀態(tài)提升為活動(dòng)狀態(tài)

Spark 運(yùn)行環(huán)境
Spark 作為一個(gè)數(shù)據(jù)處理框架和計(jì)算引擎,被設(shè)計(jì)在所有常見的集群環(huán)境中運(yùn)行, 在國(guó)內(nèi)工作中主流的環(huán)境為 Yarn,不過逐漸容器式環(huán)境也慢慢流行起來。接下來,我們就分別看看不同環(huán)境下 Spark 的運(yùn)行
一、Local 模式
所謂的 Local 模式,就是不需要其他任何節(jié)點(diǎn)資源就可以在本地執(zhí)行 Spark 代碼的環(huán)境,一般用于教學(xué),調(diào)試,演示等。
1. 下載壓縮包
Spark官網(wǎng)
下載 Spark 安裝包
點(diǎn)擊下載:
2.上傳到服務(wù)器
3. 解壓
4. 啟動(dòng) Local 環(huán)境
1)進(jìn)入解壓縮后的路徑,執(zhí)行如下指令
bin/spark-shell
2)啟動(dòng)成功后,可以輸入網(wǎng)址進(jìn)行 Web UI 監(jiān)控頁面訪問
5. 命令行工具
在解壓縮文件夾下的 data 目錄中,添加 a.txt 文件。
在命令行工具中執(zhí)行如下代碼指令
sc.textFile("data/a.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
6. 退出本地模式
按鍵 Ctrl+C 或輸入 Scala 指令
7. 提交應(yīng)用
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[2] \
./examples/jars/spark-examples_2.12-3.2.3.jar \
10
1) --class 表示要執(zhí)行程序的主類,此處可以更換為咱們自己寫的應(yīng)用程序
2) --master local[2] 部署模式,默認(rèn)為本地模式,數(shù)字表示分配的虛擬 CPU 核數(shù)量
3) spark-examples_2.12-3.0.0.jar 運(yùn)行的應(yīng)用類所在的 jar 包,實(shí)際使用時(shí),可以設(shè)定為咱們自己打的 jar 包
4) 數(shù)字 10 表示程序的入口參數(shù),用于設(shè)定當(dāng)前應(yīng)用的任務(wù)數(shù)量
二、Standalone 模式
local 本地模式畢竟只是用來進(jìn)行練習(xí)演示的,真實(shí)工作中還是要將應(yīng)用提交到對(duì)應(yīng)的集群中去執(zhí)行,這里我們來看看只使用 Spark 自身節(jié)點(diǎn)運(yùn)行的集群模式,也就是我們所謂的獨(dú)立部署(Standalone)模式。Spark 的 Standalone 模式體現(xiàn)了經(jīng)典的 master-slave 模式。
集群規(guī)劃:
Master | Worker | |
---|---|---|
hadoop001 | ? | ? |
hadoop002 | ? | ? |
hadoop003 | ? | ? |
1. 解壓
同上
2. 修改配置文件
1)進(jìn)入解壓縮后路徑的 conf 目錄,復(fù)制 workers.template 文件為 workers
2)修改 workers文件,添加 work 節(jié)點(diǎn)
3)復(fù)制 spark-env.sh.template 文件名為 spark-env.sh
4)修改 spark-env.sh 文件,添加 JAVA_HOME 環(huán)境變量和集群對(duì)應(yīng)的 master 節(jié)點(diǎn)
export JAVA_HOME=/export/servers/jdk1.8.0_161/
SPARK_MASTER_HOST=hadoop001
SPARK_MASTER_PORT=7077
注意:7077 端口,相當(dāng)于 hadoop3 內(nèi)部通信的 8020 端口,此處的端口需要確認(rèn)自己的 Hadoop 配置
5)分發(fā) spark-standalone 目錄
分發(fā)到hadoop002
分發(fā)到hadoop003
3. 啟動(dòng)集群
1)執(zhí)行腳本命令
sbin/start-all.sh
2)查看三臺(tái)服務(wù)器運(yùn)行進(jìn)程
3)查看 Master 資源監(jiān)控 Web UI 界面:http://hadoop001:8080/
4. 提交應(yīng)用
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop001:7077 \
./examples/jars/spark-examples_2.12-3.2.3.jar \
10
1)–class 表示要執(zhí)行程序的主類
2)–master spark://hadoop001:7077 獨(dú)立部署模式,連接到 Spark 集群
3)spark-examples_2.12-3.2.3.jar 運(yùn)行類所在的 jar 包
4) 數(shù)字 10 表示程序的入口參數(shù),用于設(shè)定當(dāng)前應(yīng)用的任務(wù)數(shù)量
執(zhí)行任務(wù)時(shí),會(huì)產(chǎn)生多個(gè) Java 進(jìn)程
執(zhí)行任務(wù)時(shí),默認(rèn)采用服務(wù)器集群節(jié)點(diǎn)的總核數(shù),每個(gè)節(jié)點(diǎn)內(nèi)存 1024M。
5. 提交參數(shù)說明
在提交應(yīng)用中,一般會(huì)同時(shí)一些提交參數(shù)
bin/spark-submit \
--class <main-class>
--master <master-url> \
... # other options
<application-jar> \
[application-arguments]
參數(shù) | 解釋 | 可選值舉例 |
---|---|---|
–class | Spark 程序中包含主函數(shù)的類 | |
–master | Spark 程序運(yùn)行的模式(環(huán)境) | 模式:local[*]、spark://hadoop001:7077、Yarn |
–executor-memory 1G | 指定每個(gè) executor 可用內(nèi)存為 1G | 符合集群內(nèi)存配置即可,具體情況具體分析。 |
–total-executor-cores 2 | 指定所有executor使用的cpu核數(shù)為 2 個(gè) | 符合集群內(nèi)存配置即可,具體情況具體分析。 |
–executor-cores | 指定每個(gè)executor使用的cpu核數(shù) | |
application-jar | 打包好的應(yīng)用 jar,包含依賴。這個(gè) URL 在集群中全局可見。 比如 hdfs:// 共享存儲(chǔ)系統(tǒng),如果是file:// path,那么所有的節(jié)點(diǎn)的path 都包含同樣的 jar | 符合集群內(nèi)存配置即可,具體情況具體分析。 |
application-arguments | 傳給 main()方法的參數(shù) | 符合集群內(nèi)存配置即可,具體情況具體分析。 |
6. 配置歷史服務(wù)
由于 spark-shell 停止掉后,集群監(jiān)控 hadoop001:4040 頁面就看不到歷史任務(wù)的運(yùn)行情況,所以開發(fā)時(shí)都配置歷史服務(wù)器記錄任務(wù)運(yùn)行情況。
1)修改 spark-defaults.conf.template 文件名為 spark-defaults.conf
2)啟動(dòng) hadoop 集群
3)創(chuàng)建 directory 文件夾
集群查看:
4)修改 spark-default.conf 文件,配置日志存儲(chǔ)路徑
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop001:9000/directory
5)修改 spark-env.sh 文件, 添加日志配置
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://hadoop001:9000/directory
-Dspark.history.retainedApplications=30"
? 參數(shù) 1 含義:WEB UI 訪問的端口號(hào)為 18080
? 參數(shù) 2 含義:指定歷史服務(wù)器日志存儲(chǔ)路徑
? 參數(shù) 3 含義:指定保存 Application 歷史記錄的個(gè)數(shù),如果超過這個(gè)值,舊的應(yīng)用程序信息將被刪除,這個(gè)是內(nèi)存中的應(yīng)用數(shù),而不是頁面上顯示的應(yīng)用數(shù)。
6)分發(fā)配置文件
7)重新啟動(dòng)集群和歷史服務(wù)
8)重新執(zhí)行任務(wù)
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop001:7077 \
./examples/jars/spark-examples_2.12-3.2.3.jar \
10
9)查看歷史服務(wù):http://hadoop001:18080
7. 配置高可用(HA)
所謂的高可用是因?yàn)楫?dāng)前集群中的 Master 節(jié)點(diǎn)只有一個(gè),所以會(huì)存在單點(diǎn)故障問題。所以為了解決單點(diǎn)故障問題,需要在集群中配置多個(gè) Master 節(jié)點(diǎn),一旦處于活動(dòng)狀態(tài)的 Master發(fā)生故障時(shí),由備用 Master 提供服務(wù),保證作業(yè)可以繼續(xù)執(zhí)行。這里的高可用一般采用
Zookeeper 設(shè)置
集群規(guī)劃:
Master | Zookeeper | Worker | |
---|---|---|---|
hadoop001 | ? | ? | ? |
hadoop002 | ? | ? | ? |
hadoop003 | ? | ? |
1)啟動(dòng)HDFS
2)啟動(dòng) Zookeeper
3)修改 spark-env.sh 文件添加如下配置
注釋如下內(nèi)容:
#SPARK_MASTER_HOST=hadoop001
#SPARK_MASTER_PORT=7077添加如下內(nèi)容:
#Master 監(jiān)控頁面默認(rèn)訪問端口為 8080,但是可能會(huì)和 Zookeeper 沖突,所以改成 8989,也可以自定義,訪問 UI 監(jiān)控頁面時(shí)請(qǐng)注意
SPARK_MASTER_WEBUI_PORT=8989export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=hadoop001,hadoop002,hadoop003
-Dspark.deploy.zookeeper.dir=/spark"
4)分發(fā)配置文件
5)啟動(dòng)集群
6)啟動(dòng) hadoop002 的單獨(dú) Master 節(jié)點(diǎn)
此時(shí) hadoop002 節(jié)點(diǎn) Master 狀態(tài)處于備用狀態(tài)
7)提交應(yīng)用到高可用集群
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop001:7077,hadoop002:7077 \
./examples/jars/spark-examples_2.12-3.2.3.jar \
10
出現(xiàn)錯(cuò)誤:
錯(cuò)誤原因:沒有啟動(dòng)Hadoop集群