中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

陜西網(wǎng)頁(yè)制作seo挖關(guān)鍵詞

陜西網(wǎng)頁(yè)制作,seo挖關(guān)鍵詞,百度的競(jìng)價(jià)排名是哪種方式,沈陽(yáng)疫情最新消息今日情況1 Spark的部署方式介紹 ? Spark部署模式分為L(zhǎng)ocal模式(本地模式)和集群模式(集群模式又分為Standalone模式、Yarn模式和Mesos模式) 1.1 Local模式 Local模式常用于本地開(kāi)發(fā)程序與測(cè)試,如在idea中 1.2 Standalone?!?article class="baidu_pl">

1 Spark的部署方式介紹

? Spark部署模式分為Local模式(本地模式)集群模式(集群模式又分為Standalone模式、Yarn模式和Mesos模式)

1.1 Local模式

Local模式常用于本地開(kāi)發(fā)程序與測(cè)試,如在idea中

1.2 Standalone模式

? Standalone模式被稱為集群?jiǎn)螜C(jī)模式。Spark與Hadoop1.0版本有點(diǎn)類似,Spark本身自帶了完整的資源調(diào)度管理服務(wù)(但這不是它的強(qiáng)項(xiàng),因?yàn)镾park主要是一個(gè)計(jì)算框架),可以獨(dú)立部署到集群中,無(wú)須依賴任何其他的資源管理系統(tǒng),在該模式下,Spark集群架構(gòu)為主從模式,即一臺(tái)Master節(jié)點(diǎn)與多臺(tái)Slave節(jié)點(diǎn),Slave節(jié)點(diǎn)啟動(dòng)的進(jìn)程名稱為Worker,此時(shí)集群會(huì)存在單點(diǎn)故障。(單點(diǎn)故障可利用Spark HA 與zookeeper解決)

這種模式下, Driver 和 Worker 是啟動(dòng)在節(jié)點(diǎn)上的進(jìn)程,運(yùn)行在JVM 中的進(jìn)程

  • Driver 與集群節(jié)點(diǎn)之間有頻繁的通信。
  • Driver 負(fù)責(zé)任務(wù)(task)的分發(fā)和結(jié)果的回收 即任務(wù)的調(diào)度。如果task的計(jì)算結(jié)果非常大就不要回收了。會(huì)造成OOM
  • Worker 是 Standalone 資源調(diào)度框架里面資源管理的從節(jié)點(diǎn),也是JVM進(jìn)程
    • 管理每個(gè)節(jié)點(diǎn)中的資源狀態(tài),啟動(dòng)進(jìn)程,執(zhí)行Task任務(wù)
  • Master 是 Standalone 資源調(diào)度框架里面資源管理的主節(jié)點(diǎn),也是JVM進(jìn)程
    • 管理所有資源狀態(tài)

簡(jiǎn)單來(lái)說(shuō):

? Master類似于 yarn的 RM,Driver類似于 yarn的 AM(ApplicationMaster),Slaves類似于 yarn的 NM

? Worker、Master是常駐進(jìn)程、Driver是當(dāng)有任務(wù)來(lái)時(shí)才會(huì)啟動(dòng)

1.3 Yarn模式

? Yarn模式被稱為 Spark on Yarn 模式,即把Spark作為一個(gè)客戶端,將作業(yè)提交給Yarn服務(wù),由于在生產(chǎn)環(huán)境中,很多時(shí)候要與Hadoop使用同一個(gè)集群,因此采用Yarn來(lái)管理資源調(diào)度,可以有效提高資源利用率

Yarn模式又分為Yarn Cluster模式、Yarn Client模式

  • Yarn Cluster:用于生產(chǎn)環(huán)境,所以的資源調(diào)度和計(jì)算都在集群上運(yùn)行
  • Yarn Client:用于交互、調(diào)試環(huán)境

若要基于 yarn 來(lái)進(jìn)行資源調(diào)度,必須實(shí)現(xiàn) ApplicationMaster 接口,Spark 實(shí)現(xiàn)了這個(gè)接口,所以可以基于 Yarn 來(lái)進(jìn)行資源調(diào)度

1.4 Mesos模式

? Mesos模式被稱為 Spark on Mesos 模式,Mesos與Yarn同樣是一款資源調(diào)度管理系統(tǒng),可以為Spark提供服務(wù),由于Spark與Mesos存在密切的關(guān)系,因此在設(shè)計(jì)Spark框架時(shí)充分考慮到了對(duì)Mesos的集成,但如果同時(shí)運(yùn)行Hadoop和Spark,從兼容性的角度來(lái)看,Spark on Yarn是更好的選擇。

1.5 小結(jié)

Spark作為一個(gè)數(shù)據(jù)處理框架和計(jì)算引擎,被設(shè)計(jì)在所有常見(jiàn)的集群環(huán)境中運(yùn)行, 在國(guó)內(nèi)工作中主流的環(huán)境為Yarn,不過(guò)逐漸容器式環(huán)境也慢慢流行起來(lái)。接下來(lái),我們就分別看看不同環(huán)境下Spark的運(yùn)行

2 Spark環(huán)境部署

2.1 Local模式

Local模式,就是不需要其他任何節(jié)點(diǎn)資源就可以在本地執(zhí)行Spark代碼的環(huán)境,一般用于教學(xué),調(diào)試,演示等

這種模式最為簡(jiǎn)單,解壓即用不需要進(jìn)入任何配置

1)將壓縮包上傳至Linux并解壓到指定目錄

[nhk@kk01 opt]$ tar -zxvf spark-3.2.0-bin-hadoop3.2-scala2.13.tgz -C /opt/software/
[nhk@kk01 opt]$ cd /opt/software/
[nhk@kk01 software]$ mv spark-3.2.0-bin-hadoop3.2-scala2.13 spark-local

2)配置文件spark-env.sh

[nhk@kk01 conf]$ pwd
/opt/software/spark-local/conf
[nhk@kk01 conf]$ cp spark-env.sh.template spark-env.sh
[nhk@kk01 conf]$ vim spark-env.sh
# 添加如下配置JAVA_HOME=/opt/software/jdk1.8.0_152
SCALA_HOME=/opt/software/scala-2.13.5HADOOP_CONF_DIR=/opt/software/hadoop-3.1.3/etc/hadoop

3)啟動(dòng)spark shell

命令

spark-shell -master local | local[k]| local[*]   # 建議 k>= 2

其中k表示啟動(dòng)線程數(shù)目(CPU Core核數(shù))

Value
localRuns Spark locally with one worker thread. There will be no multiple threads running in parallel
local[k]Runs Spark locally with k number of threads.( K is ideally the number of cores in your machine.)
local[*]Runs Spark locally with a number of worker threads that equals the number of logical cores in your machine.
# 進(jìn)入解壓縮后的路徑,執(zhí)行如下指令
[nhk@kk01 software]$ cd spark-local/
[nhk@kk01 spark-local]$ bin/spark-shell
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Welcome to____              __/ __/__  ___ _____/ /___\ \/ _ \/ _ `/ __/  '_//___/ .__/\_,_/_/ /_/\_\   version 3.2.0/_/Using Scala version 2.13.5 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_152)
Type in expressions to have them evaluated.
Type :help for more information.
23/04/13 07:08:48 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Spark context Web UI available at http://kk01:4040
Spark context available as 'sc' (master = local[*], app id = local-1681384129891).
Spark session available as 'spark'.scala> 

3)輸入網(wǎng)址進(jìn)入web ui監(jiān)控頁(yè)面訪問(wèn)

http://kk01:4040

注意:

? 這里的kk01是在hosts文件配置了ip地址映射,如果沒(méi)有,默認(rèn)填寫ip

4)退出Local本地模式

兩種方式:

1、直接按ctrl+c 或 ctrl+d

2、輸入Scala指令

:quit

5)提交應(yīng)用

[nhk@kk01 spark-local]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[2] \
./examples/jars/spark-examples_2.13-3.2.0.jar \
10# --class 表示要執(zhí)行的程序的主類(可以可以根據(jù)我們自己編寫的程序做出相應(yīng)修改)
# --master local[2] 部署模式,默認(rèn)為本地模式,數(shù)字表示分配的虛擬cpu核數(shù)量
# spark-examples_2.13-3.2.0.jar 運(yùn)行的應(yīng)用類所在的jar包(實(shí)際使用時(shí)可設(shè)定為我們自己打的jar報(bào))
# 數(shù)字10表示程序的入口參數(shù),用于設(shè)定當(dāng)前應(yīng)用的任務(wù)數(shù)量

2.2 Standalone模式

? 真實(shí)工作中還是要將應(yīng)用提交到對(duì)應(yīng)的集群中去執(zhí)行,這里我們來(lái)看看只使用Spark自身節(jié)點(diǎn)運(yùn)行的集群模式,也就是我們所謂的獨(dú)立部署(Standalone)模式。

Spark的 Standalone 模式體現(xiàn)了經(jīng)典的master-slave模式

注意:

? 搭建集群之前需要確認(rèn) jdk版本為8

0)集群規(guī)劃

kk01kk02kk03
Worker MasterWorkerWorker

1)將壓縮包上傳至Linux并解壓到指定目錄

[nhk@kk01 opt]$ tar -zxvf spark-3.2.0-bin-hadoop3.2-scala2.13.tgz -C /opt/software/
[nhk@kk01 opt]$ cd /opt/software/
[nhk@kk01 software]$ mv spark-3.2.0-bin-hadoop3.2-scala2.13 spark-standalone

2)修改配置文件

  • 進(jìn)入spark-standalone/conf目錄,修改workers.template文件名為workes(保守做法可以選擇復(fù)制)
[nhk@kk01 software]$ cd spark-standalone/conf/
[nhk@kk01 conf]$ cp workers.template workers
  • 修改workes文件,添加worker節(jié)點(diǎn)
[nhk@kk01 conf]$ vim workers
# 將文件內(nèi)容替換為如下kk01
kk02
kk03
  • 修改spark-env.sh.template文件名為spark-env.sh (保守做法可以選擇復(fù)制)
[nhk@kk01 conf]$ cd /opt/software/spark-standalone/conf/
[nhk@kk01 conf]$ cp spark-env.sh.template spark-env.sh
  • 修改spark-env.sh文件,添加JAVA_HOME環(huán)境變量和集群對(duì)應(yīng)的master節(jié)點(diǎn)
[nhk@kk01 conf]$ vim spark-env.sh 
# 在文件末尾添加如下內(nèi)容# 配置 jdk 環(huán)境
export JAVA_HOME=/opt/software/jdk1.8.0_152
# 配置 Master 的 IP 端口
export SPARK_MASTER_HOST=kk01
export SPARK_MASTER_PORT=7077# 注意:7077端口,相當(dāng)于kk01內(nèi)部通信的8020端口(此處的端口需要確認(rèn)自己的Hadoop)

3)分發(fā)spark-standalone目錄

# 使用scp或rsync分發(fā),scp或rsync區(qū)別在于 scp是完全拷貝 rsync只對(duì)差異文件進(jìn)行拷貝# 由于是第一次配置standalone模式,因此這里使用scp
[nhk@kk01 software]$ scp -r /opt/software/spark-standalone/ kk02:/opt/software/spark-standalone/
[nhk@kk01 software]$ scp -r /opt/software/spark-standalone/ kk03:/opt/software/spark-standalone/# 如果定義了分發(fā)腳本 xsync ,則使用自定義腳本
[nhk@kk01 software]$ xsync spark-standalone

4)啟動(dòng)集群

[nhk@kk01 spark-standalone]$ sbin/start-all.sh 

5)查看服務(wù)器進(jìn)程

[nhk@kk01 spark-standalone]$ jps
2480 Master
2695 Jps
2586 Worker[nhk@kk02 ~]$ jps
2497 Jps
2414 Worker[nhk@kk03 ~]$ jps
2416 Worker
2499 Jps

6)查看Master資源監(jiān)控Web UI界面

http://kk01:8080

注意:

? kk01這里默認(rèn)是填寫服務(wù)器ip,但是我們?cè)趆osts文件里映射了ip,因此填主機(jī)名也可以

7)提交應(yīng)用(client模式)

[root@kk01 spark-standalone]# bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://kk01:7077 \
./examples/jars/spark-examples_2.13-3.2.0.jar \
10# --class 表示要執(zhí)行的程序的主類(可以可以根據(jù)我們自己編寫的程序做出相應(yīng)修改)
# --master spark://kk01:7077 獨(dú)立部署模式,連接到Spark集群
# spark-examples_2.13-3.2.0.jar 運(yùn)行的應(yīng)用類所在的jar包
# 數(shù)字10表示程序的入口參數(shù),用于設(shè)定當(dāng)前應(yīng)用的任務(wù)數(shù)量
  • 執(zhí)行任務(wù)時(shí),會(huì)產(chǎn)生多個(gè)Java進(jìn)程

    ? CoarseGrainedExecutorBackend 執(zhí)行節(jié)點(diǎn)進(jìn)程

    ? SparkSumbit 提交節(jié)點(diǎn)進(jìn)程

    [nhk@kk01 ~]$ jps
    2611 DataNode
    3027 ResourceManager
    3171 NodeManager
    3687 Master
    3783 Worker
    2473 NameNode
    3581 JobHistoryServer
    4205 Jps
    3998 SparkSubmit
    
  • 執(zhí)行任務(wù)時(shí),默認(rèn)采用服務(wù)器集群節(jié)點(diǎn)的總核數(shù),每個(gè)節(jié)點(diǎn)內(nèi)存1024M。

任務(wù)執(zhí)行流程

  1. client 模式提交任務(wù)后,會(huì)在客戶端啟動(dòng) Driver進(jìn)程
  2. Driver 回向 Master 申請(qǐng)啟動(dòng) Application 啟動(dòng)的資源
  3. 資源申請(qǐng)成功,Driver 端將 task 分發(fā)到worker 端執(zhí)行,啟動(dòng) executor進(jìn)程(任務(wù)的分發(fā))
  4. Worker 端(executor進(jìn)程) 將task 執(zhí)行結(jié)果返回到 Driver 端(任務(wù)結(jié)果的回收)

提交參數(shù)說(shuō)明

在提交應(yīng)用中,一般會(huì)同時(shí)一些提交參數(shù)

bin/spark-submit \
--class <main-class>
--master <master-url> \
... # other options
<application-jar> \
[application-arguments]
參數(shù)解釋可選值舉例
–classSpark程序中包含主函數(shù)的類
–masterSpark程序運(yùn)行的模式(環(huán)境)模式:local[*]、spark://linux1:7077、Yarn
–executor-memory 1G指定每個(gè)executor可用內(nèi)存為1G
(這里越大計(jì)算能力越強(qiáng))
–total-executor-cores 2指定所有executor使用的cpu核數(shù)為2個(gè)
–executor-cores指定每個(gè)executor使用的cpu核數(shù)
application-jar打包好的應(yīng)用jar,包含依賴。
這個(gè)URL在集群中全局可見(jiàn)。
比如hdfs:// 共享存儲(chǔ)系統(tǒng)。
如果是file://path,那么所有的節(jié)點(diǎn)的path都包含同樣的jar
application-arguments傳給main()方法的參數(shù)

總結(jié):

? **client模式適用于測(cè)試調(diào)試程序。**Driver進(jìn)程是在客戶端啟動(dòng)的,這里的客戶端指的是提交應(yīng)用程序的當(dāng)前節(jié)點(diǎn)。在Driver端可以看到 task執(zhí)行的情況

? **生成環(huán)境中不能使用client模式。**因?yàn)?#xff1a;假設(shè)要提交100個(gè)application 到集群運(yùn)行,Driver每次都會(huì)在 client端啟動(dòng),那么就會(huì)導(dǎo)致客戶端100網(wǎng)卡流量暴增的問(wèn)題。

8)提交應(yīng)用(cluster模式)

[nhk@kk01 spark-standalone]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://kk01:7077 \
--deploy-mode cluster \
./examples/jars/spark-examples_2.13-3.2.0.jar \
10

2.3 standalone配置歷史服務(wù)器

? 由于spark-shell停止掉后,集群監(jiān)控kk01:4040頁(yè)面就看不到歷史任務(wù)的運(yùn)行情況,所以開(kāi)發(fā)時(shí)都配置歷史服務(wù)器記錄任務(wù)運(yùn)行情況。(說(shuō)白點(diǎn),就是Driver節(jié)點(diǎn)停止了)

1)修改spark-defaults.conf.template文件名為spark-defaults.conf

[nhk@kk01 conf]$ cd /opt/software/spark-standalone/conf/
[nhk@kk01 conf]$ cp spark-defaults.conf.template spark-defaults.conf

2)修改spark-default.conf文件,配置日志存儲(chǔ)路徑

[nhk@kk01 conf]$ vim spark-defaults.conf 
# 在文件末尾加入如下內(nèi)容spark.eventLog.enabled          true
spark.eventLog.dir               hdfs://kk01:8020/spark-history 

注意:

? 需要啟動(dòng)hadoop集群,HDFS上的spark-history 目錄需要提前存在。

3)在創(chuàng)建HDFS上的spark-history 目錄

[nhk@kk01 conf]$ start-dfs.sh   # Hadoop配置了環(huán)境變量,腳本全局可用
[nhk@kk01 conf]$ hadoop fs -mkdir  /spark-history

4)修改spark-env.sh文件, 添加日志配置

[nhk@kk01 conf]$ pwd
/opt/software/spark-standalone/conf
[nhk@kk01 conf]$ vim spark-env.sh # 在文件中添加如下內(nèi)容
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080 
-Dspark.history.fs.logDirectory=hdfs://kk01:8020/spark-history
-Dspark.history.retainedApplications=30"# 參數(shù)說(shuō)明
#	參數(shù)1含義:WEB UI訪問(wèn)的端口號(hào)為18080
#	參數(shù)2含義:指定歷史服務(wù)器日志存儲(chǔ)路徑
#	參數(shù)3含義:指定保存Application歷史記錄的個(gè)數(shù),如果超過(guò)這個(gè)值,舊的應(yīng)用程序信息將被刪除,這個(gè)是內(nèi)存中的應(yīng)用數(shù),而不是頁(yè)面上顯示的應(yīng)用數(shù)

5)分發(fā)配置文件

# 使用rsync命名更新差異文件  # 因?yàn)槲覀冎桓牧薱onf目錄下的文件,因此只分發(fā)conf目錄即可
[nhk@kk01 spark-standalone]$ rsync -av /opt/software/spark-standalone/conf/ kk02:/opt/software/spark-standalone/conf/[nhk@kk01 spark-standalone]$ rsync -av /opt/software/spark-standalone/conf/ kk02:/opt/software/spark-standalone/conf/# 參數(shù)說(shuō)明
#	-a 歸檔拷貝
#	-v 顯示拷貝過(guò)程

6)重新啟動(dòng)集群和歷史服務(wù)

# 先確保hdfs集群、spark集群關(guān)閉
[nhk@kk01 spark-standalone]$  stop-dfs.sh 
[nhk@kk01 spark-standalone]$  sbin/stop-all.sh # 重啟
[nhk@kk01 spark-standalone]$ start-dfs.sh 
[nhk@kk01 spark-standalone]$ sbin/start-all.sh 
[nhk@kk01 spark-standalone]$ sbin/start-history-server.sh

7)查看進(jìn)程

[nhk@kk01 spark-standalone]$ jps
5921 Master
6052 Worker
5558 DataNode
5371 NameNode
6235 Jps
6174 HistoryServer

8)重新執(zhí)行任務(wù)

[nhk@kk01 spark-standalone]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://kk01:7077 \
./examples/jars/spark-examples_2.13-3.2.0.jar \
10

9)查看歷史服務(wù)

確保歷史服務(wù)可用

http://kk01:18080/

2.4 standalone配置高可用(HA)基于Zookeeper

當(dāng)前集群中的Master節(jié)點(diǎn)只有一個(gè),所以會(huì)存在單點(diǎn)故障問(wèn)題。所以為了解決單點(diǎn)故障問(wèn)題,需要在集群中配置多個(gè)Master節(jié)點(diǎn),一旦處于活動(dòng)狀態(tài)的Master發(fā)生故障時(shí),由備用Master提供服務(wù),保證作業(yè)可以繼續(xù)執(zhí)行。這里的高可用一般采用Zookeeper設(shè)置

集群規(guī)劃

kk01	Worker ZooKeeper Masterkk02	Worker ZooKeeper Masterkk03	Worker ZooKeeper 

1)停止集群(可選)

在確保hdfs集群、spark集群停止的情況下,才開(kāi)始配置HA

[nhk@kk01 spark-standalone]$ sbin/stop-all.sh 
[nhk@kk01 spark-standalone]$ stop-dfs.sh 

2)啟動(dòng)Zookeeper集群

[nhk@kk01 spark-standalone]$ zkServer.sh start
[nhk@kk02 ~]$ zkServer.sh start
[nhk@kk03 ~]$ zkServer.sh start# 也可以使用自定義腳本啟動(dòng)集群(如果你定義了的話)
[nhk@kk01 spark-standalone]$ xzk.sh start

3)修改spark-env.sh文件添加如下配置

[nhk@kk01 conf]$ pwd
/opt/software/spark-standalone/conf
[nhk@kk01 conf]$ vim spark-env.sh注釋如下內(nèi)容:
#SPARK_MASTER_HOST=kk01
#SPARK_MASTER_PORT=7077添加如下內(nèi)容:
#Master監(jiān)控頁(yè)面默認(rèn)訪問(wèn)端口為8080,但是可能會(huì)和Zookeeper沖突,所以改成8989,也可以自定義,訪問(wèn)UI監(jiān)控頁(yè)面時(shí)請(qǐng)注意
SPARK_MASTER_WEBUI_PORT=8989export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER 
-Dspark.deploy.zookeeper.url=kk01,kk02,kk03 
-Dspark.deploy.zookeeper.dir=/spark"

參考配置文件如下

export JAVA_HOME=/opt/software/jdk1.8.0_152
#SPARK_MASTER_HOST=kk01
#SPARK_MASTER_PORT=7077export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080 
-Dspark.history.fs.logDirectory=hdfs://kk01:8020/spark-history 
-Dspark.history.retainedApplications=30"#Master監(jiān)控頁(yè)面默認(rèn)訪問(wèn)端口為8080,但是可能會(huì)和Zookeeper沖突,所以改成8989,也可以自定義,訪問(wèn)UI監(jiān)控頁(yè)面時(shí)請(qǐng)注意
SPARK_MASTER_WEBUI_PORT=8989export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER 
-Dspark.deploy.zookeeper.url=kk01,kk02,kk03 
-Dspark.deploy.zookeeper.dir=/spark"

4)分發(fā)配置文件

[nhk@kk01 conf]$ rsync -av /opt/software/spark-standalone/conf/ kk02:/opt/software/spark-standalone/conf/[nhk@kk01 conf]$ rsync -av /opt/software/spark-standalone/conf/ kk03:/opt/software/spark-standalone/conf/

5)啟動(dòng)集群

啟動(dòng)spark集群前先啟動(dòng)hdfs集群,確定歷史服務(wù)器正常,當(dāng)然也需要確保zookeeper集群正常啟動(dòng)

[nhk@kk01 conf]$ start-dfs.sh  # 啟動(dòng)hdfs集群[nhk@kk01 spark-standalone]$ pwd
/opt/software/spark-standalone
[nhk@kk01 spark-standalone]$ sbin/start-all.sh [nhk@kk01 spark-standalone]$ sbin/start-history-server.sh 	# 啟動(dòng)歷史服務(wù)進(jìn)程

6) 啟動(dòng)kk02的單獨(dú)Master節(jié)點(diǎn),此時(shí)kk02節(jié)點(diǎn)Master狀態(tài)處于備用狀態(tài)

[nhk@kk02 ~]$ cd /opt/software/spark-standalone/
[nhk@kk02 spark-standalone]$ sbin/start-master.sh 

7)查看進(jìn)程

[nhk@kk01 spark-standalone]$ jps
7697 NameNode
8385 Worker
8504 Jps
7289 QuorumPeerMain
8250 Master
7884 DataNode
6174 HistoryServer   # 歷史服務(wù)器進(jìn)程[nhk@kk02 spark-standalone]$ jps
4546 DataNode
4315 QuorumPeerMain
5003 Jps
4909 Master   # 備份master
4798 Worker[nhk@kk03 ~]$ jps
4688 SecondaryNameNode
4256 Worker
4347 Jps
3884 QuorumPeerMain
4111 DataNodes

8)提交應(yīng)用到高可用集群

[nhk@kk01 spark-standalone]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://kk01:7077,kk02:7077 \
./examples/jars/spark-examples_2.13-3.2.0.jar \
10

9)查看kk01的Master 資源監(jiān)控Web UI

http://kk01:8989/

發(fā)現(xiàn)狀態(tài)為 Status: ALIVE

10)手動(dòng)停止kk01的Master資源監(jiān)控進(jìn)程

[nhk@kk01 spark-standalone]$ jps
7697 NameNode
8385 Worker
7289 QuorumPeerMain
8250 Master
7884 DataNode
6174 HistoryServer
8910 Jps
[nhk@kk01 spark-standalone]$ kill -9 8250

11) 查看kk02的Master 資源監(jiān)控Web UI,稍等一段時(shí)間后,kk02節(jié)點(diǎn)的Master狀態(tài)提升為活動(dòng)狀態(tài)

http://kk02:8989/

狀態(tài)變化

? Status:STANDBY ====> Status: ALIVE

2.5 Yarn模式

? 獨(dú)立部署(Standalone)模式由Spark自身提供計(jì)算資源,無(wú)需其他框架提供資源。這種方式降低了和其他第三方資源框架的耦合性,獨(dú)立性非常強(qiáng)。但是你也要記住,**Spark主要是計(jì)算框架,而不是資源調(diào)度框架,所以本身提供的資源調(diào)度并不是它的強(qiáng)項(xiàng),所以還是和其他專業(yè)的資源調(diào)度框架集成會(huì)更靠譜一些。**所以接下來(lái)我們來(lái)學(xué)習(xí)在強(qiáng)大的Yarn環(huán)境下Spark是如何工作的(其實(shí)是因?yàn)樵趪?guó)內(nèi)工作中,Yarn使用的非常多)。

注意:

? Spark on Yarn 不需要單獨(dú)開(kāi)啟spark相關(guān)的進(jìn)程

Spark On Yarn的本質(zhì)

  • Master 角色由YARN的 ResourceManager 擔(dān)任
  • Worker 角色由YARN的 NodeManager 擔(dān)任
  • Driver 角色運(yùn)行在YARN容器內(nèi) 或 提交任務(wù)的客戶端進(jìn)程
  • 真正干活的Executor運(yùn)行在YARN提供的容器內(nèi)

1)上傳并解壓縮文件

將spark-3.2.0-bin-hadoop3.2-scala2.13.tgz文件上傳到linux并解壓縮,放置在指定位置。

[nhk@kk01 ~]$ cd /opt/software/
[nhk@kk01 software]$ rz[nhk@kk01 software]$ tar -zxvf spark-3.2.0-bin-hadoop3.2-scala2.13.tgz -C /opt/software/

2)重命名

[nhk@kk01 software]$ mv spark-3.2.0-bin-hadoop3.2-scala2.13/ spark-yarn

3)修改配置文件yarn-site.xml

修改hadoop配置文件/opt/software/hadoop-3.1.3/etc/hadoop/yarn-site.xml

修改這個(gè)配置文件的原因是因?yàn)?#xff1a;

[nhk@kk01 hadoop]$ pwd
/opt/software/hadoop-3.1.3/etc/hadoop
[nhk@kk01 hadoop]$ vim yarn-site.xml 
# 添加如下內(nèi)容<!-- 是否將對(duì)容器實(shí)施物理內(nèi)存限制 生產(chǎn)中可產(chǎn)生改配置-->
<!--是否啟動(dòng)一個(gè)線程檢查每個(gè)任務(wù)正使用的物理內(nèi)存量,如果任務(wù)超出分配值,則直接將其殺掉,默認(rèn)是true -->
<property><name>yarn.nodemanager.pmem-check-enabled</name><value>true</value>
</property><!-- 是否將對(duì)容器實(shí)施虛擬內(nèi)存限制 生產(chǎn)中可產(chǎn)生改配置-->
<property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value>
</property><!-- 開(kāi)啟日志聚集-->
<property><name>yarn.log-aggregation-enable</name><value>true</value>
</property>
<!-- 設(shè)置yarn歷史服務(wù)器地址-->
<property><name>yarn.log.server.url</name><value>http://kk01:19888/jobhistory/logs</value>
</property><property><name>yarn.nodemanager.remote-app-log-dir</name><value>/tmp/logs</value>
</property>	
<!-- 歷史日志保存的時(shí)間 7天-->
<property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value>
</property>

4)同步修改的文件至所有服務(wù)器

[nhk@kk01 hadoop]$ rsync -av /opt/software/hadoop-3.1.3/etc/hadoop/ kk02:/opt/software/hadoop-3.1.3/etc/hadoop/[nhk@kk01 hadoop]$ rsync -av /opt/software/hadoop-3.1.3/etc/hadoop/ kk03:/opt/software/hadoop-3.1.3/etc/hadoop/

5) 修改conf/spark-env.sh

當(dāng)Spark Application連接到y(tǒng)arn集群上運(yùn)行時(shí),需要設(shè)置環(huán)境變量HADOOP_CONF_DIR指向Hadoop配置目錄,以獲取集群信息

在 $SPARK_HOME/conf/spark-env.sh 文件中

修改conf/spark-env.sh,添加 JAVA_HOME和YARN_CONF_DIR配置

[nhk@kk01 hadoop]$ cd /opt/software/spark-yarn/conf/
[nhk@kk01 conf]$ cp spark-env.sh.template spark-env.sh
[nhk@kk01 conf]$ vim spark-env.sh
# 添加如下內(nèi)容export JAVA_HOME=/opt/software/jdk1.8.0_152HADOOP_CONF_DIR=/opt/software/hadoop-3.1.3/etc/hadoop
# 下面這個(gè)也可以不配,因?yàn)楹蜕厦嬉粯?/span>
YARN_CONF_DIR=/opt/software/hadoop-3.1.3/etc/hadoop

6)啟動(dòng)HDFS集群、YARN集群

# 我們配置過(guò)Hadoop環(huán)境變量,因此可以直接使用腳本一鍵啟動(dòng)
[nhk@kk01 conf]$ start-dfs.sh 
[nhk@kk01 conf]$ start-yarn.sh 

7)提交應(yīng)用(cluster模式)

[nhk@kk01 spark-yarn]$ pwd
/opt/software/spark-yarn
[nhk@kk01 spark-yarn]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
./examples/jars/spark-examples_2.13-3.2.0.jar \
10# 或者[nhk@kk01 spark-yarn]$ pwd
/opt/software/spark-yarn
[nhk@kk01 spark-yarn]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn-cluster \
./examples/jars/spark-examples_2.13-3.2.0.jar \
10

查看http://kk01:8088頁(yè)面,查看歷史頁(yè)面,查看任務(wù)調(diào)度情況,點(diǎn)擊History,查看歷史頁(yè)面

yarn client 任務(wù)執(zhí)行流程

  1. 客戶端提交一個(gè) Application,在客戶端會(huì)啟動(dòng)一個(gè) Driver進(jìn)程
  2. 應(yīng)用程序啟動(dòng)后會(huì)向 RM(ResourceMananger)(相當(dāng)于 standalone模式下的master進(jìn)程)發(fā)送請(qǐng)求,啟動(dòng)AM(ApplicationMaster)
  3. RM收到請(qǐng)求,隨機(jī)選擇一臺(tái) NM(NodeManager)啟動(dòng)AM。這里的NM相當(dāng)于standalone中的Worker進(jìn)程
  4. AM啟動(dòng)后,會(huì)向 RM 請(qǐng)求一批 container資源,用于啟動(dòng)Executor
  5. RM會(huì)找到一批 NM(包含container)返回給AM,用于啟動(dòng)Executor
  6. AM 會(huì)向 NM發(fā)送命令啟動(dòng) Executor
  7. Executor啟動(dòng)后,會(huì)方向注冊(cè)給 Driver,Driver發(fā)送 task 到 Executor ,執(zhí)行情況和結(jié)果返回給Driver端

總結(jié):

? yarn-client模式同樣是適用于測(cè)試,因?yàn)镈river 運(yùn)行在本地,Driver會(huì)與yarn集群中的Executor 進(jìn)行大量的通信,提交的 application 過(guò)多同樣會(huì)造成客戶機(jī)網(wǎng)卡流量的大量增加

? ApplicationMaster(executorLauncher)在次模式中的作用:

  • 為當(dāng)前的 Application 申請(qǐng)資源
  • 給 NodeManager 發(fā)送消息啟動(dòng) Executor

注意:ApplicationMaster 在此模式下有 launchExecutor和申請(qǐng)資源的功能,沒(méi)有作業(yè)調(diào)度的功能

2.6 Yarn配置歷史服務(wù)器

? 配置了 historyServer,停止程序后,可以在web ui 中 Completed Application 對(duì)應(yīng)的 ApplicationID 中能查看history

1)spark-defaults.conf

修改spark-defaults.conf.template 文件名為 spark-defaults.conf

[nhk@kk01 spark-yarn]$ cd conf/
[nhk@kk01 conf]$ pwd
/opt/software/spark-yarn/conf
[nhk@kk01 conf]$ cp spark-defaults.conf.template spark-defaults.conf

2)修改spark-default.conf文件**,配置日志存儲(chǔ)路徑**

[nhk@kk01 conf]$  vim spark-defaults.conf 
# 在文件末尾加入如下內(nèi)容# 開(kāi)啟記錄事件日志的功能
spark.eventLog.enabled          true
# 設(shè)置事件日志存儲(chǔ)的路徑
spark.eventLog.dir               hdfs://kk01:8020/spark-history 
spark.history.fs.logDirectory    hdfs://kk01:8020/spark-history # 日志優(yōu)化選項(xiàng),壓縮日志
spark.eventLog.compress 		true

注意:

? 需要啟動(dòng)hadoop集群,HDFS上的spark-history 目錄需要提前存在。

3)在創(chuàng)建HDFS上的directory目錄

[nhk@kk01 conf]$ start-dfs.sh   # Hadoop配置了環(huán)境變量,腳本全局可用
[nhk@kk01 conf]$ hadoop fs -mkdir  /spark-history

4)修改spark-env.sh文件, 添加日志配置

[nhk@kk01 conf]$  pwd
/opt/software/spark-yarn/conf
[nhk@kk01 conf]$  vim spark-env.sh # 在文件中添加如下內(nèi)容
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080 
-Dspark.history.fs.logDirectory=hdfs://kk01:8020/spark-history 
-Dspark.history.retainedApplications=30"# 參數(shù)說(shuō)明
#	參數(shù)1含義:WEB UI訪問(wèn)的端口號(hào)為18080
#	參數(shù)2含義:指定歷史服務(wù)器日志存儲(chǔ)路徑
#	參數(shù)3含義:指定保存Application歷史記錄的個(gè)數(shù),如果超過(guò)這個(gè)值,舊的應(yīng)用程序信息將被刪除,這個(gè)是內(nèi)存中的應(yīng)用數(shù),而不是頁(yè)面上顯示的應(yīng)用數(shù)

5)修改spark-defaults.conf配置SparkHistoryServer

[nhk@kk01 conf]$ vim spark-defaults.conf
# 添加如下配置spark.yarn.historyServer.address=kk01:18080
spark.history.ui.port=18080

6)啟動(dòng)歷史服務(wù)器

[nhk@kk01 conf]$ cd ..
[nhk@kk01 spark-yarn]$ sbin/start-history-server.sh 
starting org.apache.spark.deploy.history.HistoryServer, logging to /opt/software/spark-yarn/logs/spark-nhk-org.apache.spark.deploy.history.HistoryServer-1-kk
01.out[nhk@kk01 spark-yarn]$ jps
2627 NameNode
2771 DataNode
3331 JobHistoryServer	# 這個(gè)是Hadoop的歷史服務(wù)器
4677 Jps
4605 HistoryServer		# 這個(gè)是Spark的歷史服務(wù)器
3134 NodeManager

7)重新提交應(yīng)用(client模式)

[nhk@kk01 spark-yarn]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
./examples/jars/spark-examples_2.13-3.2.0.jar \
10

8)Web頁(yè)面查看日志

http://kk01:18080/

配置依賴Spark jar包(優(yōu)化配置)

當(dāng)Spark Application應(yīng)用提交運(yùn)行在YARN上時(shí),默認(rèn)情況下,每次提交應(yīng)用都需要將Spark相關(guān)jar包上傳到Y(jié)ARN集群上,為了節(jié)省提交時(shí)間和存儲(chǔ)空間,將Spark相關(guān)jar包上傳到HDFS目錄,設(shè)置屬性告知Spark Application應(yīng)用

說(shuō)明:

? 該項(xiàng)配置屬于優(yōu)化配置,可酌情考慮配置與否

上傳Spark jar包前需要確保HDFS集群開(kāi)啟

# 在HDFS上創(chuàng)建目錄,用于存放jar包
[nhk@kk01 ~]$ hadoop fs -mkdir sparkjars# 上傳$SPARK_HOME/jars中所有的jar包
[nhk@kk01 ~]$ hadoop fs -put /opt/software/spark-yarn/jars/* /sparkjars

在$SPARK_HOME/conf/spark-defaults.conf文件增加spark 相關(guān)jar包存儲(chǔ)在HDFS上的位置信息

[nhk@kk01 ~]$ vim /opt/software/spark-yarn/conf/spark-defaults.conf
# 添加如下配置spark.yarn.jars hdfs://kk01:8020/sparkjars/*

同步配置到所有節(jié)點(diǎn)

[nhk@kk01 ~]$ sudo /home/nhk/bin/xsync /opt/software/spark-yarn/

3 部署模式對(duì)比

模式Spark安裝機(jī)器數(shù)需啟動(dòng)的進(jìn)程所屬者應(yīng)用場(chǎng)景
Local1無(wú)Spark測(cè)試
Standalone3Master及WorkerSpark單獨(dú)部署
Yarn1Yarn及HDFSHadoop混合部署

4 常見(jiàn)端口號(hào)

  • Spark查看當(dāng)前Spark-shell運(yùn)行任務(wù)情況端口號(hào):4040(計(jì)算)

  • Spark Master內(nèi)部通信服務(wù)端口號(hào):7077

  • Standalone模式下,Spark Master Web端口號(hào):8080(資源)

  • Spark歷史服務(wù)器端口號(hào):18080

  • Hadoop YARN任務(wù)運(yùn)行情況查看端口號(hào):8088

http://www.risenshineclean.com/news/57088.html

相關(guān)文章:

  • 專業(yè)平臺(tái)建設(shè)網(wǎng)站關(guān)了嗎外貿(mào)網(wǎng)絡(luò)推廣
  • 做外貿(mào)的網(wǎng)站有哪些友妙招鏈接
  • 企業(yè)網(wǎng)站搭建教程外包公司和勞務(wù)派遣的區(qū)別
  • app的設(shè)計(jì)與開(kāi)發(fā)網(wǎng)站優(yōu)化包括對(duì)什么優(yōu)化
  • 營(yíng)銷網(wǎng)站建設(shè)網(wǎng)絡(luò)公司網(wǎng)站搭建免費(fèi)
  • jsp做網(wǎng)站用到的軟件seo推廣的網(wǎng)站和平臺(tái)有哪些
  • 昆明做網(wǎng)站vrapp開(kāi)發(fā)者需要更新此app
  • 青島網(wǎng)站設(shè)計(jì)公司聯(lián)系方式企業(yè)網(wǎng)絡(luò)營(yíng)銷推廣案例
  • 濟(jì)南專門做網(wǎng)站的公司有哪些湖南專業(yè)關(guān)鍵詞優(yōu)化
  • 網(wǎng)站建設(shè)費(fèi)做什么科目寫軟文用什么軟件
  • 網(wǎng)站加速cdn百度搜索引擎廣告投放
  • 武漢網(wǎng)站建設(shè)公司哪家專業(yè)產(chǎn)品seo優(yōu)化
  • 鄭州公司網(wǎng)站設(shè)計(jì)宣傳產(chǎn)品的方式
  • 質(zhì)量好網(wǎng)站建設(shè)商家百度快速seo優(yōu)化
  • 廣告聯(lián)盟平臺(tái)系統(tǒng)網(wǎng)絡(luò)推廣優(yōu)化平臺(tái)
  • 素材動(dòng)圖網(wǎng)站餐飲店如何引流與推廣
  • 最好的網(wǎng)站建設(shè)公司哪家好站長(zhǎng)聯(lián)盟
  • 做網(wǎng)站js是什么海外游戲推廣平臺(tái)
  • 桂林廣告公司網(wǎng)站建設(shè)臨沂seo整站優(yōu)化廠家
  • 如何做日系風(fēng)格的網(wǎng)站 今日頭條
  • 兩學(xué)一做知識(shí)競(jìng)賽網(wǎng)站網(wǎng)絡(luò)營(yíng)銷方式有哪幾種
  • 給網(wǎng)站做排名優(yōu)化學(xué)什么好處長(zhǎng)沙seo網(wǎng)站優(yōu)化公司
  • 云南電信網(wǎng)站備案靠譜的代運(yùn)營(yíng)公司
  • 怎么做php網(wǎng)站一鍵開(kāi)發(fā)小程序
  • 做美食的網(wǎng)站百度百科官網(wǎng)
  • 有什么網(wǎng)站可以免費(fèi)建站建網(wǎng)站教程
  • 中山網(wǎng)站建設(shè)制作怎樣在百度上發(fā)布信息
  • 哪里網(wǎng)站建設(shè)公司好友鏈交易平臺(tái)
  • 服裝行業(yè)網(wǎng)站模板網(wǎng)絡(luò)推廣文案
  • xampp搭建wordpress長(zhǎng)沙優(yōu)化網(wǎng)站