日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spark on yarn 完全分布式_「大数据」(七十一)Spark之架构介绍

發布時間:2024/7/23 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spark on yarn 完全分布式_「大数据」(七十一)Spark之架构介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【導讀:數據是二十一世紀的石油,蘊含巨大價值,這是·情報通·大數據技術系列第[71]篇文章,歡迎閱讀和收藏】

1 基本概念

Spark 架構采用了分布式計算中的 Master-Slave 模型。 Master 是對應集群中的含有 Master 進程的節點, Slave 是集群中含有 Worker 進程的節點。 Master 作為整個集群的控制器,負責整個集群的正常運行; Worker 相當于計算節點,接收主節點命令與進行狀態匯報; Executor 負責任務的執行; Client 作為用戶的客戶端負責提交應用, Driver 負責控制一個應用的執行。

Spark 集群部署后,需要在主節點和從節點分別啟動 Master 進程和 Worker 進程,對整個集群進行控制。在一個 Spark 應用的執行過程中, Driver 和 Worker 是兩個重要角色。 Driver 程序是應用邏輯執行的起點,負責作業的調度,即 Task 任務的分發,而多個 Worker 用來管理計算節點和創建 Executor 并行處理任務。在執行階段, Driver 會將 Task 和 Task 所依賴的 file 和 jar 序列化后傳遞給對應的 Worker 機器,同時 Executor 對相應數據分區的任務進行處理。

Spark 的整體流程為: Client 提交應用, Master 找到一個 Worker 啟動 Driver , Driver 向 Master 或者資源管理器申請資源,之后將應用轉化為 RDD Graph ,再由 DAGScheduler 將 RDD Graph 轉化為 Stage 的有向無環圖提交給 TaskScheduler ,由 TaskScheduler 提交任務給 Executor 執行。在任務執行的過程中,其他組件協同工作,確保整個應用順利執行。

2 術語解釋

RDD :是 Resillient Distributed Dataset (彈性分布式數據集)的簡稱,是分布式內存的一個抽象概念,提供了一種高度受限的共享內存模型。

DAG :是 Directed Acyclic Graph (有向無環圖)的簡稱,反映 RDD 之間的依賴關系。

Application :用戶編寫的 Spark 應用程序。

Executor :是運行在工作節點( WorkerNode )的一個進程,負責運行 Task 。

Task :運行在 Executor 上的工作單元 。

Job :一個 Job 包含多個 RDD 及作用于相應 RDD 上的各種操作。

Stage :是 Job 的基本調度單位,一個 Job 會分為多組 Task ,每組 Task 被稱為 Stage , 或者也被稱為 TaskSet ,代表了一組關聯的、 相互之間沒有 Shuffle 依賴關系的任務組成的任務集。

3 架構原理介紹

3.1 Spark 依賴

( 1 ) Map Reduce 模型

作為一個分布式計算框架, Spark 采用了 MapReduce 模型。在它身上, Google 的 Map Reduce 和 Hadoop 的痕跡很重,很明顯,它并非一個大的創新,而是微創新。在基礎理念不變的前提下,它借鑒,模仿并依賴了先輩,加入了一點改進,極大的提升了 MapReduce 的效率。

使用 MapReduce 模型解決大數據并行計算的問題,帶來的最大優勢,是它和 Hadoop 的同屬一家人。因為同屬于 MapReduce 并行編程模型,而不是 MPI 和 OpenMP 其它模型,因此,復雜的算法,只要能夠以 Java 算法表達,在 Hadoop 上運行的,就能以 Scala 算法表達,在 Spark 上運行,而速度有倍數的提升。相比之下,在 MPI 和 Hadoop 算法之間切換,難度就大多了。

( 2 )函數式編程

Spark 由 Scala 寫就,而支持的語言亦是 Scala 。其原因之一就是 Scala 支持函數式編程。這一來造就了 Spark 的代碼簡潔,二來使得基于 Spark 開發的程序,也特別的簡潔。一次完整的 MapReduce , Hadoop 中需要創建一個 Mapper 類和 Reduce 類,而 Spark 只需要創建相應的一個 map 函數和 reduce 函數即可,代碼量大大降低。

( 3 ) Mesos
Spark 將分布式運行的需要考慮的事情,都交給了 Mesos ,自己不 Care ,這也是它代碼能夠精簡的原因之一。

( 4 ) HDFS 和 S3
Spark 支持 2 種分布式存儲系統: HDFS 和 S3 。應該算是目前最主流的兩種了。對文件系統的讀取和寫入功能是 Spark 自己提供的,借助 Mesos 分布式實現。如果自己想做集群試驗,又沒有 HDFS 環境,也沒有 EC2 環境的話,可以搞個 NFS ,確保所有 MESOS 的 Slave 都可以訪問,也可以模擬一下。

3.2 Spark 架構

Spark 架構圖如下:

Spark 架構中的基本組件

ClusterManager :在 Standalone 模式中即為 Master (主節點),控制整個集群,監控 Worker 。在 YARN 模式中為資源管理器。

Worker :從節點,負責控制計算節點,啟動 Executor 或 Driver 。在 YARN 模式中為 NodeManager ,負責計算節點的控制。

Driver :運行 Application 的 main() 函數并創建 SparkContext 。

Executor :執行器,在 worker node 上執行任務的組件、用于啟動線程池運行任務。每個 Application 擁有獨立的一組 Executors 。

SparkContext :整個應用的上下文,控制應用的生命周期。

RDD : Spark 的基本計算單元,一組 RDD 可形成執行的有向無環圖 RDD Graph 。

DAG Scheduler :根據作業( Job )構建基于 Stage 的 DAG ,并提交 Stage 給 TaskScheduler 。

TaskScheduler :將任務( Task )分發給 Executor 執行。

SparkEnv :線程級別的上下文,存儲運行時的重要組件的引用。

SparkEnv 內創建并包含如下一些重要組件的引用。

MapOutPutTracker :負責 Shuffle 元信息的存儲。

BroadcastManager :負責廣播變量的控制與元信息的存儲。

BlockManager :負責存儲管理、創建和查找塊。

MetricsSystem :監控運行時性能指標信息。

SparkConf :負責存儲配置信息。

Spark 結構主要分為四個部分:

1. 用來提交作業的 Client 程序: client 是什么呢,比如 spark 中提交程序的 shell 窗口,宏觀上講,是一臺提交程序的物理機。負責將打包好的 spark 程序提交到集群中,提交完程序這個客戶端客戶端程序還發揮什么作用呢? yarn-client 模式下,客戶端提交程序后,在該客戶端上又運行著一個 driver 程序,這個 client 的作用持續到 spark 程序運行完畢,而 yarn-cluster 模式下,客戶端提交程序后就不再發揮任何作用,也就是說僅僅發揮了提交程序包的作用。

2. 用來驅動程序運行的 Driver 程序: driver 完成的工作主要是創建用戶的上下文,這個上下文中包括很多控件比如 DADScheduler 、 TaskScheduler 等等,這些控件完成的工作也稱為 driver 完成的。 driver 中完成 RDD 的生成,將 RDD 劃分成有向無環圖,生成 task ,接受 master 的指示將 task 發送到 worker 節點上進行執行等工作。

3. 用來進行資源調度的 ClusterManager: 整個集群的 master ,主要完成資源的調度,涉及一些調度算法,自帶的資源管理器只支持 FIFO 調度, yarn 和 mesos 還支持其他方式的調度算發。 CM 一邊和 driver 打交道 ,一邊和 worker 打交道, driver 向 CM 申請資源, worker 通過心跳機制向 CM 匯報自己的資源和運行情況, CM 告訴 driver 應該向哪些 worker 發送消息, 然后 driver 把 task 發送到這些可用的 worker 上

4. 用來執行程序的 worker:worker 用多個 executor 來執行程序

3.3 Spark 運行模式

總結

以上是生活随笔為你收集整理的spark on yarn 完全分布式_「大数据」(七十一)Spark之架构介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。