Apache Spark 初學者教程:通過示例學習 Apache Spark
已發表: 2020-03-26目錄
介紹
數據無處不在——從小型初創公司的客戶日誌到大型跨國公司的財務表。 公司使用這些生成的數據來了解他們的業務表現如何以及他們可以改進的地方。 Gartner Research 高級副總裁 Peter Sondergaard表示,信息是 21 世紀的石油,而分析可以被視為內燃機。
但隨著公司的成長,他們的客戶、利益相關者、業務合作夥伴和產品也在成長。 因此,他們必須處理的數據量變得巨大。
必須分析所有這些數據,以便為客戶創造更好的產品。 但每秒產生的數 TB 數據無法使用 Excel 工作表和日誌來處理。 Apache Spark 等工具可以處理巨大的數據集。
我們將通過對 Apache Spark的介紹來深入了解該軟件的細節。
什麼是 Apache Spark?
Apache Spark 是一個開源的集群計算框架。 它基本上是一個數據處理系統,用於處理巨大的數據工作負載和數據集。 它可以快速處理大型數據集,並將這些任務分佈在多個系統中以減輕工作量。 它有一個簡單的 API,可以減輕開發人員在被大數據處理和分佈式計算這兩個術語所淹沒時的負擔!
Apache Spark 的開發始於加州大學伯克利分校 AMPLab 的一個開源研究項目,由被認為是 Spark 創始人的Matei Zaharia進行。 2010 年,在 BSD 許可下,該項目開源。 後來在2013年成為Apache軟件基金會的孵化項目,成為2014年公司的頂級項目之一。

2015 年,Spark 有超過 1000 名貢獻者參與了該項目。 這使其成為Apache 軟件基金會和大數據世界中最活躍的項目之一。 自 2009 年以來,已有 200 多家公司支持該項目。
但是為什麼所有這些對 Spark 的瘋狂呢?
這是因為 Spark 能夠一次處理大量數據並對其進行處理。 這些數據可以分佈在數千個連接的虛擬或物理服務器上。 它擁有大量的 API 和庫,可與 Python、R、Scala 和 Java 等多種編程語言一起使用。 它支持數據流、圖形處理等複雜任務以及機器學習。 此外,apache spark 改變遊戲規則的特性使其需求量很大。
它支持廣泛的數據庫,例如 Hadoop 的 HDFS、Amazon S3 和 NoSQL 數據庫,例如 MongoDB、Apache HBase、MapR 數據庫和 Apache Cassandra。 它還支持 Apache Kafka 和 MapR Event Store。
Apache Spark 架構
在探索了 Apache Spark 的介紹之後,我們現在將了解它的結構。 了解有關 Apache 架構的更多信息。
它的架構定義明確,有兩個主要組件:
彈性分佈式數據集 (RDD)
這是存儲在 Spark 集群的工作節點上的數據項的集合。 集群是可以安裝 Spark 的分佈式機器集合。 RDD 被稱為彈性,因為它們能夠在發生故障時修復數據。 它們被稱為分佈式,因為它們分佈在集群中的多個節點上。
Spark 支持兩種類型的 RDD:
- 從HDFS(Hadoop 分佈式文件系統)上的文件創建的 Hadoop 數據集
- 基於 Scala 集合的並行化集合
RDD 可用於兩種類型的操作:
- 轉換——這些操作用於創建 RDD
- 動作——這些用於指示 Spark 執行一些計算並將結果返回給驅動程序。 我們將在接下來的部分中了解有關驅動程序的更多信息
DAG(有向無環圖)
這可以被認為是對數據的一系列操作。 它們是頂點和邊的組合。 每個頂點代表一個 RDD,每個邊代表必須在該 RDD 上執行的計算。 這是一個包含應用於 RDD 的所有操作的圖。
這是一個有向圖,因為一個節點連接到另一個節點。 該圖是非循環的,因為其中沒有循環或循環。 一旦進行了變換,就不能回到原來的位置。 Apache Spark 中的轉換是將數據分區狀態從 A 轉換為 B 的操作。
那麼,這種架構是如何工作的呢? 讓我們看看。
Apache Spark 架構有兩個主要的守護進程和一個集群管理器。 這些是 - master 和 worker 守護進程。 守護進程是作為後台進程執行的程序。 Spark 中的集群可以有許多從屬,但只有一個主守護進程。
在主節點內部,有一個執行 Spark 應用程序的驅動程序。 您可能用來運行代碼的交互式外殼充當驅動程序。 在驅動程序內部,創建了 Spark 上下文。 該上下文和驅動程序在集群管理器的幫助下執行作業。

然後將作業拆分為許多任務後,將其分發到工作節點上。 這些任務由工作節點在 RDD 上運行。 結果返回給Spark Context 。 當您增加工作人員的數量時,作業可以分為多個分區並在多個系統上並行運行。 這將減少工作量並提高工作的完成時間。
Apache Spark:優勢
這些是使用 Apache Spark 的優點:
速度
在執行作業時,數據首先存儲在 RDD 中。 因此,由於這些數據存儲在內存中,因此可以快速訪問它,並且可以更快地執行作業。 除了內存緩存,Spark 還優化了查詢執行。 通過這個,分析查詢可以運行得更快。 可以獲得非常高的數據處理速度。 處理大規模數據的速度比 Hadoop 快 100 倍。
處理多個工作負載
Apache Spark 可以一次處理多個工作負載。 這些可以是交互式查詢、圖形處理、機器學習和實時分析。 Spark 應用程序可以輕鬆整合許多工作負載。
便於使用
Apache Spark 具有易於使用的 API 來處理大型數據集。 這包括 100 多個可用於構建並行應用程序的運算符。 這些運算符可以轉換數據,並且可以使用數據框 API 操作半結構化數據。
語言支持
Spark 是開發人員的最愛,因為它支持多種編程語言,例如 Java、Python、Scala 和 R。這為您開發應用程序提供了多種選擇。 這些 API 對開發人員也非常友好,因為它們幫助他們將復雜的分佈式處理技術隱藏在高級運算符後面,從而有助於減少所需的代碼量。
效率
惰性求值在 Spark 中進行。 這意味著通過 RDDS 進行的所有轉換本質上都是惰性的。 因此,這些轉換的結果不會立即產生,而是從現有的 RDD 創建一個新的 RDD。 用戶可以將 Apache 程序組織成幾個較小的操作,這增加了程序的可管理性。
惰性評估提高了系統的速度和效率。
社區支持
作為最大的開源大數據項目之一,它擁有來自不同公司的 200 多名開發人員。 2009 年,該社區成立並自此不斷發展壯大。 因此,如果您遇到技術錯誤,您很可能會在網上找到由開發人員發布的解決方案。
您可能還會發現許多自由職業者或全職開發人員準備在您的 Spark 項目中為您提供幫助。
實時流式傳輸
Spark 以流實時數據而聞名。 這可以通過 Spark Streaming 實現,它是核心 Spark API 的擴展。 這使數據科學家能夠處理來自各種來源的實時數據,例如Amazon Kinesis 和 Kafka 。 然後可以將處理後的數據傳輸到數據庫、文件系統和儀表板。
從Spark Streaming可以快速從數據故障中恢復的意義上,該過程是高效的。 它執行更好的負載平衡並有效地使用資源。
Apache Spark 的應用
在介紹了 Apache Spark 及其好處之後,我們將詳細了解它的不同應用:
機器學習
Apache Spark 將數據存儲在內存中並重複執行查詢的能力使其成為訓練 ML 算法的好選擇。 這是因為重複運行類似的查詢將減少確定最佳解決方案所需的時間。
Spark 的機器學習庫 (MLlib)可以執行高級分析操作,例如預測分析、分類、情感分析、聚類和降維。
數據整合
跨組織內不同系統生成的數據並不總是乾淨且有條理的。 Spark 是對這些數據執行 ETL 操作的非常有效的工具。 這意味著它執行、提取、轉換和加載操作以從不同來源提取數據、清理和組織數據。 然後將該數據加載到另一個系統中進行分析。
交互式分析
這是一個過程,用戶可以通過該過程對實時數據進行數據分析。 借助Spark中的結構化流功能,用戶可以對實時數據運行交互式查詢。 您還可以在實時 Web 會話上運行交互式查詢,這將促進 Web 分析。 機器學習算法也可以應用於這些實時數據流。
霧計算
我們知道 IoT(物聯網)處理來自各種具有傳感器的設備的大量數據。 這將創建一個互連設備和用戶的網絡。 但隨著物聯網網絡開始擴展,需要分佈式並行處理系統。

因此,數據處理和分散存儲是通過霧計算和 Spark 一起完成的。 為此,Spark 提供了強大的組件,例如 Spark Streaming、GraphX 和 MLlib。 詳細了解 apache spark 的應用。
結論
我們了解到 Apache Spark 快速、有效且功能豐富。 這就是為什麼華為、百度、IBM、摩根大通、洛克希德馬丁和微軟等公司正在使用它來加速他們的業務。 現在,它在零售、商業、金融服務、醫療保健管理和製造等各個領域都享有盛譽。
隨著世界對數據的依賴程度越來越高,Apache Spark 將繼續成為未來數據處理的重要工具。
如果您有興趣了解有關大數據的更多信息,請查看我們的 PG 大數據軟件開發專業文憑課程,該課程專為在職專業人士設計,提供 7 多個案例研究和項目,涵蓋 14 種編程語言和工具,實用的動手操作研討會,超過 400 小時的嚴格學習和頂級公司的就業幫助。
從世界頂級大學在線學習軟件開發課程。 獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。