Apache Spark 架構——Spark 集群架構解釋

      網友投稿 1174 2022-05-29

      Apache Spark 是一個開源集群計算框架,它正在點燃大數據的世界。根據Spark 認證專家的說法,與 Hadoop 相比,Sparks 在內存中的性能提高了 100 倍,在磁盤上的性能提高了 10 倍。?在這篇博客中,我將簡要介紹 Spark 架構和 Spark 架構的基礎知識。

      在這篇 Spark 架構文章中,我將涵蓋以下主題:

      Spark及其特點

      Spark 架構概述

      Spark Eco-System

      彈性分布式數據集 (RDD)

      Spark架構的工作

      在 Spark Shell 中使用 Scala 的示例

      Spark及其特點

      Apache Spark 是一個用于實時數據處理的開源集群計算框架。Apache Spark 的主要特性是其?內存集群計算?,可提高應用程序的處理速度。Spark 提供了一個接口,用于對具有隱式數據并行性和容錯性的整個集群進行編程。它旨在涵蓋廣泛的工作負載,例如批處理應用程序、迭代算法、交互式查詢和流媒體。

      Apache Spark 的特點:

      速度

      對于大規模數據處理,Spark 的運行速度比 Hadoop MapReduce 快 100 倍。它還能夠通過受控分區來實現此速度。

      強大的緩存

      簡單的編程層提供了強大的緩存和磁盤持久化能力。

      部署

      可以通過Mesos、Hadoop 通過 YARN 或 Spark 自己的集群管理器進行部署。

      實時

      由于內存計算,它提供實時計算和低延遲。

      Polyglot

      Spark 提供了 Java、Scala、Python 和 R 語言的高級 API。Spark 代碼可以用這四種語言中的任何一種編寫。它還在 Scala 和 Python 中提供了一個 shell。

      Spark 架構概述

      Apache Spark 具有定義明確的分層架構,其中所有 Spark 組件和層都是松散耦合的。該架構進一步與各種擴展和庫集成。Apache Spark 架構基于兩個主要抽象:

      彈性分布式數據集 (RDD)

      有向無環圖 (DAG)

      圖:Spark 架構

      但在深入研究 Spark 架構之前,讓我解釋一些 Spark 的基本概念,如 Spark 生態系統和 RDD。這將幫助您獲得更好的見解。

      我先解釋一下什么是Spark生態系統。

      Spark Eco-System

      如下圖所示,spark 生態系統由各種組件組成,如 Spark SQL、Spark Streaming、MLlib、GraphX 和 Core API 組件。

      圖:Spark 生態系統

      Spark Core

      Spark Core 是大規模并行和分布式數據處理的基礎引擎。此外,構建在核心頂部的其他庫允許用于流、SQL 和機器學習的各種工作負載。它負責內存管理和故障恢復、調度、分發和監控集群上的作業以及與存儲系統的交互。

      Spark Streaming

      Spark Streaming 是Spark 的組件,用于處理實時流數據。因此,它是對核心 Spark API 的有用補充。它支持實時數據流的高吞吐量和容錯流處理。

      Spark SQL

      Spark SQL 是 Spark 中的一個新模塊,它將關系處理與 Spark 的函數式編程 API 集成在一起。它支持通過 SQL 或 Hive 查詢語言查詢數據。對于熟悉 RDBMS 的人來說,Spark SQL 將是您早期工具的輕松過渡,您可以在其中擴展傳統關系數據處理的邊界。

      GraphX

      GraphX 是用于圖形和圖形并行計算的 Spark API。因此,它使用彈性分布式屬性圖擴展了 Spark RDD。在高層次上,GraphX 通過引入彈性分布式屬性圖(具有附加到每個頂點和邊的屬性的有向多重圖)擴展了 Spark RDD 抽象。

      MLlib(機器學習)

      MLlib 代表機器學習庫。Spark MLlib 用于在 Apache Spark 中執行機器學習。

      SparkR

      是一個提供分布式數據幀實現的 R 包。它還支持選擇、過濾、聚合等操作,但在大型數據集上。

      如您所見,Spark 帶有高級庫,包括對 R、SQL、Python、Scala、Java 等的支持。這些標準庫增加了復雜工作流中的無縫集成。除此之外,它還允許各種服務集與其集成,如 MLlib、GraphX、SQL + 數據幀、流服務等,以增加其功能。

      現在,讓我們討論 Spark 的基本數據結構,即 RDD。

      彈性分布式數據集 (RDD)

      RDD 是任何 Spark 應用程序的構建塊。RDD 代表:

      彈性:?容錯并且能夠在故障時重建數據

      分布式:?集群中多個節點之間的分布式數據

      數據集:?帶值的分區數據的集合

      它是分布式集合上的抽象數據層。它本質上是不可變的,并且遵循?惰性轉換。

      現在您可能想知道它的工作原理。好吧,RDD 中的數據基于一個鍵被拆分成塊。RDD 具有高彈性,即它們能夠從任何問題中快速恢復,因為相同的數據塊在多個執行器節點之間復制。因此,即使一個執行器節點發生故障,另一個仍將處理數據。這使您可以通過利用多個節點的功能非常快速地對數據集執行功能計算。

      此外,一旦你創建了一個 RDD,它就會變成不可變的。不可變我的意思是,一個對象在創建后其狀態不能被修改,但它們肯定可以被轉換。

      說到分布式環境,RDD中的每個數據集都被劃分為邏輯分區,可以在集群的不同節點上進行計算。因此,您可以對完整數據并行執行轉換或操作。此外,您不必擔心分布,因為 Spark 會處理這些問題。

      RDD的工作流程

      有兩種創建 RDD 的方法 - 在驅動程序中并行化現有集合,或者通過引用外部存儲系統中的數據集,例如共享文件系統、HDFS、HBase 等。

      使用 RDD,您可以執行兩種類型的操作:

      轉換:它們是用于創建新 RDD 的操作。

      操作:?它們應用于 RDD 以指示 Apache Spark 應用計算并將結果傳遞回驅動程序。

      我希望你對 RDD 的概念有一個透徹的理解。現在讓我們更進一步,看看 Spark 架構的工作原理。

      Spark架構的工作

      正如您已經看到了 Apache Spark 的基本架構概述,現在讓我們更深入地了解它的工作原理。

      在您的主節點中,您有驅動程序,它驅動您的應用程序。您正在編寫的代碼充當驅動程序,或者如果您使用交互式 shell,則 shell 充當驅動程序。

      圖:Spark 架構

      我n面的驅動程序,你要做的第一件事是,你創建?一個星火語境。假設 Spark 上下文是通往所有 Spark 功能的網關。它類似于您的數據庫連接。您在數據庫中執行的任何命令都通過數據庫連接。同樣,您在 Spark 上所做的任何事情都經過 Spark 上下文。

      現在,這個 Spark 上下文與集群管理器一起管理各種作業。驅動程序和 Spark 上下文負責集群內的作業執行。一個作業被分成多個任務,這些任務分布在工作節點上。任何時候在 Spark 上下文中創建 RDD,它都可以分布在各個節點上并可以緩存在那里。

      w ^?orker節點是從節點,其任務是執行基本任務。然后在工作節點中的分區 RDD 上執行這些任務,從而將結果返回給 Spark 上下文。

      Spark Context 接受工作,在任務中中斷工作并將它們分發到工作節點。這些任務在分區的 RDD 上工作,執行操作,收集結果并返回到主 Spark 上下文。

      如果增加工作線程的數量,則可以將作業劃分為更多分區并在多個系統上并行執行。會快很多。

      隨著工作人員數量的增加,內存大小也會增加,您可以緩存作業以更快地執行它。

      要了解 Spark Architecture 的工作流程,您可以查看下面的信息圖:

      圖:Spark 架構信息圖

      STEP 1:?客戶端提交spark用戶應用代碼。?當提交應用程序代碼時,驅動程序將包含轉換和操作的用戶代碼隱式轉換為稱為DAG的邏輯有向無環圖。?在此階段,它還執行優化,例如流水線轉換。

      STEP 2:之后,它將稱為 DAG 的邏輯圖轉換為具有多個階段的物理執行計劃。?轉化為物理執行計劃后,在每個階段創建稱為任務的物理執行單元。然后將任務捆綁并發送到集群。

      Apache Spark 架構——Spark 集群架構解釋

      第 3 步:現在驅動程序與集群管理器對話并協商資源。?集群管理器代表驅動程序在工作節點中啟動執行程序。?此時,驅動程序將根據數據放置將任務發送給執行程序。?當執行程序啟動時,他們向驅動程序注冊自己。因此,驅動程序將擁有正在?執行任務的執行程序的完整視圖。

      STEP 4:?在任務執行過程中,驅動程序會監控運行的執行器集合。驅動程序節點還根據數據放置安排未來的任務。

      這都是關于 Spark 架構的。現在,讓我們來了解一下 Spark shell 的工作原理。

      在 Spark shell 中使用 Scala 的示例

      首先,讓我們假設 Hadoop 和 Spark 守護進程已啟動并正在運行,從而啟動 Spark shell。?Spark 的Web UI端口是localhost:4040。

      圖:火花殼

      啟動 Spark shell 后,現在讓我們看看如何執行字數統計示例:

      在本例中,我創建了一個簡單的文本文件并將其存儲在 hdfs 目錄中。您也可以使用其他大型數據文件。

      2、一旦 spark shell 啟動,?讓我們創建一個 RDD。為此,您必須?指定輸入文件路徑并應用轉換flatMap()。下面的代碼說明了相同的內容:

      scala> var map = sc.textFile("hdfs://localhost:9000/Example/sample.txt").flatMap(line => line.split(" ")).map(word => (word,1));

      3. 執行此代碼時,將創建一個 RDD,如圖所示。

      圖:RDD創建

      4. 之后,您需要將操作reduceByKey()應用于創建的RDD。

      scala> var counts = map.reduceByKey(_+_);

      應用動作后,如下所示開始執行。

      圖:shell中的Spark執行

      5. 下一步是將輸出保存在文本文件中并指定存儲輸出的路徑。

      圖:指定輸出路徑

      6.指定輸出路徑后,進入?hdfs網頁瀏覽器localhost:50040。在這里您可以看到“零件”文件中的輸出文本,如下所示。

      圖:輸出零件文件

      7. 下圖顯示了“零件”文件中的輸出文本。

      圖:輸出文本

      我希望您已經了解如何創建 Spark 應用程序并獲得輸出。

      現在,讓我帶您通過 Spark 的 Web UI 來了解已執行任務的 DAG 可視化和分區。

      圖:Spark Web 用戶界面

      單擊您提交的任務后,您可以查看已完成作業的有向無環圖 (DAG)。

      圖:DAG 可視化

      此外,您還可以查看已執行任務的摘要指標,例如 - 執行任務所花費的時間、作業 ID、已完成的階段、主機 IP 地址等。

      現在,讓我們了解 RDD 中的分區和并行性。

      甲分區是一個邏輯?塊a的大?分布式?數據?集。

      默認情況下,星火試圖讀取?數據?到?一個?RDD從節點是接近?到?它。

      現在,讓我們看看如何在 shell 中執行并行任務。

      下圖顯示了創建的 RDD 上的分區總數。

      圖:已完成任務的分區

      現在,讓我向您展示 5 個不同任務的并行執行是如何出現的。

      圖:5個已完成任務的并行度

      到此,我們就到了有關 Apache Spark 架構的博客的結尾。我希望這個博客能提供信息并為您的知識增加價值。

      Apache spark

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:2021年隱私和安全性最佳的8款Linux手機
      下一篇:美團動態線程池實踐思路,開源了
      相關文章
      久久亚洲精品无码观看不卡| 亚洲成av人片天堂网无码】| 国产亚洲精品国产福利在线观看 | 永久亚洲成a人片777777| www国产亚洲精品久久久| 亚洲aⅴ无码专区在线观看春色| 亚洲七久久之综合七久久| 最新国产成人亚洲精品影院| 亚洲第一页在线观看| 亚洲人成依人成综合网| 亚洲一区二区三区电影| 久久久久亚洲AV无码网站| 亚洲资源在线视频| 亚洲精品无码久久毛片波多野吉衣| 中文字幕亚洲综合精品一区| 久久精品国产亚洲av麻豆色欲| 亚洲精品综合久久中文字幕| 亚洲伊人久久大香线蕉影院| 国产成+人+综合+亚洲专| 亚洲午夜精品久久久久久app| 亚洲人成网站免费播放| 亚洲第一成年网站视频| 国产精品亚洲精品日韩动图 | 无码不卡亚洲成?人片| 亚洲美女在线国产| 亚洲永久精品ww47| 亚洲av永久无码精品网站 | 久久精品亚洲一区二区三区浴池| 91亚洲自偷手机在线观看| 亚洲精品mv在线观看| 久久精品国产亚洲AV久| 亚洲熟妇AV乱码在线观看| 久久亚洲中文无码咪咪爱| 亚洲精品成a人在线观看| 亚洲中文字幕日产乱码高清app| 国产亚洲人成网站观看| 亚洲黄色在线电影| 97se亚洲国产综合自在线| jizzjizz亚洲日本少妇| 久久久久亚洲爆乳少妇无| 亚洲av午夜成人片精品网站 |