ABAP Netweaver, Hybris Commerce和SAP 云平臺的登錄認證
871
2025-03-31
Spark是基于內存的分布式計算框架。在迭代計算的場景下,數據處理過程中的數據可以存儲在內存中,提供了比MapReduce高10到100倍的計算能力。Spark可以使用HDFS作為底層存儲,使用戶能夠快速地從MapReduce切換到Spark計算平臺上去。Spark提供一站式數據分析能力,包括小批量流式處理、離線批處理、SQL查詢、數據挖掘等,用戶可以在同一個應用中無縫結合使用這些能力。
Spark結構
Spark的架構如下圖所示:
模塊
說明
Cluster Manager
集群管理器,管理集群中的資源。Spark支持多種集群管理器,Spark自帶的Standalone集群管理器、Mesos或YARN。Spark集群默認采用YARN模式。
Spark應用,由一個Driver Program和多個Executor組成。
Deploy Mode
部署模式,分為cluster和client模式。cluster模式下,Driver會在集群內的節點運行;而在client模式下,Driver在客戶端運行(集群外)。
Driver Program
是Spark應用程序的主進程,運行Application的main()函數并創建SparkContext。負責應用程序的解析、生成Stage并調度Task到Executor上。通常SparkContext代表Driver Program。
Executor
在Work Node上啟動的進程,用來執行Task,管理并處理應用中使用到的數據。一個Spark應用一般包含多個Executor,每個Executor接收Driver的命令,并執行一到多個Task。
Worker Node
集群中負責啟動并管理Executor以及資源的節點。
Job
一個Action算子(比如collect算子)對應一個Job,由并行計算的多個Task組成。
Stage
每個Job由多個Stage組成,每個Stage是一個Task集合,由DAG分割而成。
Task
承載業務邏輯的運算單元,是Spark平臺中可執行的最小工作單元。一個應用根據執行計劃以及計算量分為多個Task。
Spark原理
Spark的應用運行架構如下圖所示,運行流程如下所示:
應用程序(Application)是作為一個進程的集合運行在集群上的,由Driver進行協調。
在運行一個應用時,Driver會去連接集群管理器(Standalone、Mesos、YARN)申請運行Executor資源,并啟動ExecutorBackend。然后由集群管理器在不同的應用之間調度資源。Driver同時會啟動應用程序DAG調度、Stage劃分、Task生成。
然后Spark會把應用的代碼發送到Executor上。
所有的Task執行完成后,用戶的應用程序運行結束。
Spark采用Master和worker的模式,用戶在Spark客戶端提交應用程序,調度器將Job分解為多個Task發送到各個Worker中執行,各個Worker將計算的結果上報給Driver(即Master),Driver聚合結果返回給客戶端。
在此結構中,有幾個說明點:
應用之間是獨立的。每個應用有自己的executor進程,Executor啟動多個線程,并行地執行任務。無論是在調度方面,或者是executor方面。各個Driver獨立調度自己的任務;不同的應用任務運行在不同的JVM上,即不同的Executor。
不同Spark應用之間是不共享數據的,除非把數據存儲在外部的存儲系統上(比如HDFS)。
因為Driver程序在集群上調度任務,所以Driver程序最好和worker節點比較近,比如在一個相同的局部網絡內。
Spark on YARN有兩種部署模式:
YARN-Cluster模式下,Spark的Driver會運行在YARN集群內的ApplicationMaster進程中,ApplicationMaster已經啟動之后,提交任務的客戶端退出也不會影響任務的運行。
YRAN-Client模式下,Driver啟動在客戶端進程內,ApplicationMaster進程只用來向YARN集群申請資源。
運行SparkSubmit作業
在MRS集群中,您可以通過管理控制臺、客戶端命令等多種方式運行SparkSubmit作業的操作。
MRS集群的創建您可參考創建集群。
通過界面提交作業
在MRS管理控制臺,點擊集群名稱進入到MRS集群詳情頁面,單擊“作業管理”,進入“作業管理”頁簽。
在作業管理頁面,即可新增SparkSubmit作業,作業新增完成后,可對作業進行管理。
通過后臺提交作業
登錄MRS集群的FusionInsight Manager頁面(如果沒有彈性IP,需提前購買彈性IP),新建一個用戶sparktest,綁定用戶組hadoop、supergroup,綁定主組Supergroup、綁定角色System_administrator、default。
在Manager頁面選擇“系統 > 用戶”,在新增用戶的操作列單擊“更多 > 下載認證憑據”。
將與作業相關的jar包上傳到集群中,本示例使用Spark自帶的樣例jar包,位置在“$SPARK_HOME/examples/jars/”下。
上傳創建的用戶認證憑據到集群的“/opt”目錄下,并執行如下命令解壓:
tar -xvf sparktest _xxxxxx_keytab.tar
登錄集群客戶端所在的節點,執行以下命令提交作業:
source /opt/client/bigdata_env cd $SPARK_HOME ./bin/spark-submit --master yarn --deploy-mode client --conf spark.yarn.principal=sparktest --conf spark.yarn.keytab=/opt/user.keytab --class org.apache.spark.examples.SparkPi examples/jars/spark-examples_2.11-3.1.1-hw-ei-302002.jar
運行SparkSql作業
在MRS集群中,您可以通過管理控制臺、客戶端命令等多種方式運行SparkSql作業的操作。
MRS集群的創建您可參考創建集群。
通過界面提交作業
在MRS管理控制臺,點擊集群名稱進入到MRS集群詳情頁面,單擊“作業管理”,進入“作業管理”頁簽。
在作業管理頁面,即可新增SparkSql作業,作業新增完成后,可對作業進行管理。
通過后臺提交作業
登錄MRS集群的FusionInsight Manager頁面(如果沒有彈性IP,需提前購買彈性IP),新建一個用戶sparktest,綁定用戶組hadoop、supergroup,綁定主組Supergroup、綁定角色System_administrator、default。
在Manager頁面選擇“系統 > 用戶”,在新增用戶的操作列單擊“更多 > 下載認證憑據”。
將與作業相關的jar包上傳到集群中,本示例使用Spark自帶的樣例jar包,位置在“$SPARK_HOME/examples/jars/”下。
上傳創建的用戶認證憑據到集群的“/opt”目錄下,并執行如下命令解壓:
tar -xvf sparktest _xxxxxx_keytab.tar
在對集群操作之前首先需要執行:
source /opt/client/bigdata_env cd $SPARK_HOME
打開spark-sql命令行,進入spark-sql命令行后可執行SQL語句,執行命令如下:
./bin/spark-sql --conf spark.yarn.principal=sparktest --conf spark.yarn.keytab=/opt/user.keytab
若需要執行SQL文件,需要上傳SQL文件(如上傳到“/opt/”目錄),上傳文件后執行命令如下:
./bin/spark-sql --conf spark.yarn.principal=sparktest --conf spark.yarn.keytab=/opt/user.keytab -f /opt/script.sql
關于Spark應用開發及更多相關樣例代碼介紹,請參考《Spark開發指南》。
好了,本期云小課就介紹到這里,快去體驗MapReduce(MRS)更多功能吧!猛戳這里
MapReduce spark 云小課
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。