Apache Spark 是一個(gè)開(kāi)源框架,適用于跨集群計(jì)算機(jī)并行處理大數(shù)據(jù)任務(wù)。它是在全球廣泛應(yīng)用的分布式處理框架之一。
什么是 APACHE SPARK?
伴隨數(shù)據(jù)的巨量增長(zhǎng),Apache Spark 已成為分布式橫向擴(kuò)展數(shù)據(jù)處理的熱門框架之一,可以在本地和云端數(shù)以百萬(wàn)計(jì)的服務(wù)器上運(yùn)行。
Apache Spark 是應(yīng)用于大型數(shù)據(jù)處理的快速通用分析引擎,可在 YARN、Apache Mesos、Kubernetes 上運(yùn)行,也可獨(dú)立或在云端運(yùn)行。借助用于 SQL、流處理、機(jī)器學(xué)習(xí)和圖形處理的高級(jí)運(yùn)算符及庫(kù),Spark 使開(kāi)發(fā)者能夠通過(guò)交互式 shell、筆記本或應(yīng)用程序包來(lái)使用 Scala、Python、R 或 SQL 輕松構(gòu)建并行應(yīng)用程序。通過(guò)功能編程模型和相關(guān)查詢引擎 Catalyst,Spark 支持批量和交互式分析,可將作業(yè)轉(zhuǎn)換為查詢方案,并跨集群節(jié)點(diǎn)調(diào)度查詢方案中的操作。
Spark 核心數(shù)據(jù)處理引擎之上存在多個(gè)用于 SQL 和 DataFrame、機(jī)器學(xué)習(xí)、GraphX、圖形計(jì)算和流處理的庫(kù)。用戶可在來(lái)自各種數(shù)據(jù)源(例如 HDFS、Alluxio、Apache Cassandra、Apache HBase 或 Apache Hive)的海量數(shù)據(jù)集上結(jié)合使用這些庫(kù)。
Apache Spark 組件
為何選擇 APACHE SPARK?
Apache Spark 繼續(xù)了 Apache Hadoop 在 15 年前開(kāi)始的大數(shù)據(jù)分析工作,并已成為大規(guī)模分布式數(shù)據(jù)處理的先進(jìn)框架。
2010 年代初,大數(shù)據(jù)分析的流行促使 Hadoop 的使用量增長(zhǎng),而 Hadoop MapReduce 的性能限制成為了阻礙。MapReduce 的性能因其磁盤檢查點(diǎn)結(jié)果模型而遭遇瓶頸。同時(shí),MapReduce 的低級(jí)別編程模型也限制了 Hadoop 的采用。
Apache Spark 最初是加利福尼亞大學(xué)伯克利分校 AMPLab 的一個(gè)研究項(xiàng)目,其目標(biāo)是維持 MapReduce 可擴(kuò)展、分布式、容錯(cuò)處理框架的優(yōu)勢(shì),同時(shí)促使該框架變得更高效、更易于使用。Spark 能夠重復(fù)利用多線程輕量級(jí)任務(wù)(并非啟動(dòng)和終止進(jìn)程),還能跨迭代將數(shù)據(jù)緩存于內(nèi)存中,無(wú)需在各階段間寫入磁盤,因此 Spark 在數(shù)據(jù)流程和迭代算法方面比 MapReduce 更高效。Spark 使用容錯(cuò)分布式 DataFrame 來(lái)增強(qiáng)并行性能,并可實(shí)現(xiàn) SQL 的易用性。
Spark 于 2014 年成為 Apache 軟件基金會(huì)的高級(jí)項(xiàng)目,如今,遍及 16000 多家企業(yè)和組織的成千上萬(wàn)名數(shù)據(jù)工程師和科學(xué)家都在使用 Spark。Spark 在 Hadoop 的基礎(chǔ)上繼往開(kāi)來(lái)的原因之一是,與 MapReduce 相比,其內(nèi)存數(shù)據(jù)處理性能能夠以快達(dá) 100 倍的速度完成某些任務(wù)。這些功能由 250 多家公司的 1000 多位貢獻(xiàn)者在一個(gè)開(kāi)放社區(qū)中創(chuàng)建。Databricks 的創(chuàng)始人率先進(jìn)行了這項(xiàng)工作,僅僅是其平臺(tái)每天就運(yùn)行著 100 多萬(wàn)個(gè)虛擬機(jī)來(lái)分析數(shù)據(jù)。
為何 SPARK 在應(yīng)用 GPU 后表現(xiàn)更出色
Spark 的各個(gè)版本均有所改進(jìn),有助于更輕松地編程和執(zhí)行。Apache Spark 3.0 通過(guò)創(chuàng)新來(lái)維持此趨勢(shì),改善 Spark SQL 性能和 NVIDIA GPU 加速。
圖形處理器 (GPU) 因其超低浮點(diǎn)運(yùn)算(性能)單價(jià)深受歡迎,其還可通過(guò)加快多核服務(wù)器的并行處理速度,解決當(dāng)前的計(jì)算性能瓶頸問(wèn)題。CPU 由專為按序串行處理優(yōu)化的幾個(gè)核心組成。而 GPU 則擁有一個(gè)大規(guī)模并行架構(gòu),當(dāng)中包含數(shù)千個(gè)更小、更高效的核心,專為同時(shí)處理多重任務(wù)而設(shè)計(jì)。與僅包含 CPU 的配置相比,GPU 的數(shù)據(jù)處理速度快得多。過(guò)去數(shù)年中,GPU 一直推動(dòng) DL 和機(jī)器學(xué)習(xí) (ML) 模型訓(xùn)練的發(fā)展。然而,數(shù)據(jù)科學(xué)家 80% 的時(shí)間都花費(fèi)在了數(shù)據(jù)預(yù)處理上。
雖然 Spark 是以分割數(shù)據(jù)形式在節(jié)點(diǎn)分區(qū)中分發(fā)計(jì)算,但其向來(lái)是在 CPU 核心上執(zhí)行計(jì)算操作。Spark 雖然通過(guò)添加內(nèi)存數(shù)據(jù)處理緩解了 Hadoop 中存在的 I/O 問(wèn)題,但現(xiàn)在瓶頸問(wèn)題已從 I/O 轉(zhuǎn)變?yōu)槿找嬖龆嗟膽?yīng)用程序的計(jì)算問(wèn)題。隨著 GPU 加速計(jì)算的出現(xiàn),此性能瓶頸問(wèn)題迎刃而解。
為滿足并超越數(shù)據(jù)處理的現(xiàn)代需求,NVIDIA 一直與 Apache Spark 社區(qū)進(jìn)行合作,通過(guò)推出 Spark 3.0 版本和用于 Spark 的開(kāi)源 RAPIDS 加速器,將 GPU 應(yīng)用于 Spark 的本機(jī)處理。在 Spark 中引入 GPU 加速具有諸多優(yōu)勢(shì):
數(shù)據(jù)處理、查詢和模型訓(xùn)練能夠更快完成,縮短結(jié)果獲取時(shí)間。
同一個(gè) GPU 加速的基礎(chǔ)設(shè)施可用于 Spark 和 ML/DL(深度學(xué)習(xí))框架,因而無(wú)需使用單獨(dú)的集群,并讓整個(gè)流程都能獲得 GPU 加速。
減少所需的服務(wù)器數(shù)量,降低基礎(chǔ)設(shè)施成本。
用于 APACHE SPARK 的 RAPIDS 加速器
RAPIDS 是一套開(kāi)源軟件庫(kù)和 API,可完全在 GPU 上執(zhí)行端到端數(shù)據(jù)科學(xué)和分析流程,能夠?qū)崿F(xiàn)大幅的速度提升,在大型數(shù)據(jù)集上尤是如此。用于 Apache Spark 的 RAPIDS 加速器基于 NVIDIA CUDA 和 UCX 構(gòu)建,支持 GPU 加速的 SQL/DataFrame 操作和 Spark shuffle,且無(wú)需更改代碼。
Apache Spark 加速的端到端 AI 平臺(tái)堆棧
加速 SQL/DataFrame
Spark 3.0 支持 SQL 優(yōu)化器插件,使用列式批量(而非行式)處理數(shù)據(jù)。列式數(shù)據(jù)非常適合 GPU,并且 RAPIDS 加速器可插入此功能以加速 SQL 和 DataFrame 運(yùn)算符。針對(duì) RAPIDS 加速器,Catalyst 查詢優(yōu)化器進(jìn)行了修改,可識(shí)別通過(guò) RAPIDS API 加速的查詢方案(主要是一對(duì)一映射)中的運(yùn)算符,并可在執(zhí)行查詢方案時(shí)在 Spark 集群中的 GPU 上調(diào)度這些運(yùn)算符。
加速 Shuffle
在階段之間從現(xiàn)有 DataFrame 創(chuàng)建新 DataFrame 時(shí),按值對(duì)數(shù)據(jù)進(jìn)行排序、分組或合并的 Spark 操作必須移動(dòng)分區(qū)之間的數(shù)據(jù),此過(guò)程稱為 shuffle,其中涉及磁盤 I/O、數(shù)據(jù)序列化和網(wǎng)絡(luò) I/O。新的 RAPIDS 加速器 shuffle 實(shí)施利用 UCX 優(yōu)化 GPU 數(shù)據(jù)傳輸,盡可能在 GPU 上保留更多的數(shù)據(jù),通過(guò)使用優(yōu)質(zhì)的可用硬件資源,找到在節(jié)點(diǎn)間移動(dòng)數(shù)據(jù)的快速路徑(包括繞過(guò) CPU 執(zhí)行 GPU 到 GPU 顯存的節(jié)點(diǎn)內(nèi)和節(jié)點(diǎn)間傳輸)。
加速器感知型調(diào)度
為推動(dòng)旨在更好地統(tǒng)一深度學(xué)習(xí)和數(shù)據(jù)處理的重要 Spark 計(jì)劃,GPU 在 Apache Spark 3.0 中現(xiàn)已成為可調(diào)度資源。這使得 Spark 能夠使用特定數(shù)量的 GPU 來(lái)調(diào)度執(zhí)行程序,并且用戶可以指定每個(gè)任務(wù)所需的 GPU 數(shù)量。Spark 將這些資源請(qǐng)求傳送至底層集群管理器、Kubernetes、YARN 或 Standalone。用戶還可以配置發(fā)現(xiàn)腳本,檢測(cè)集群管理器分配的 GPU。這大大簡(jiǎn)化了需要 GPU 的 ML 應(yīng)用程序的運(yùn)行,因?yàn)橹坝脩粜枰幚?Spark 應(yīng)用程序中缺少 GPU 調(diào)度的問(wèn)題。
加速 XGBoost
XGBoost 是一種可擴(kuò)展的分布式梯度提升決策樹(shù) (GBDT) ML 庫(kù)。
XGBoost 提供并行樹(shù)提升功能,是應(yīng)用于回歸、分類和排序問(wèn)題的出色 ML 庫(kù)。RAPIDS 團(tuán)隊(duì)與 Distributed Machine Learning Common (DMLC) XGBoost 組織密切合作,而且 XGBoost 現(xiàn)已包含無(wú)縫嵌入式 GPU 加速。另外,Spark 3.0 XGBoost 現(xiàn)已與 Rapids 加速器集成,借助 Spark SQL/DataFrame 操作的 GPU 加速、XGBoost 訓(xùn)練時(shí)間的 GPU 加速,以及內(nèi)存優(yōu)化存儲(chǔ)功能的高效 GPU 顯存利用率,可改善性能、準(zhǔn)確性和成本。
在 Spark 3.0 中,您現(xiàn)在可以有單個(gè)流程,從數(shù)據(jù)提取到數(shù)據(jù)準(zhǔn)備,再到在 GPU 驅(qū)動(dòng)的集群上訓(xùn)練模型,皆包含在內(nèi)
SPARK 用例示例
欺詐檢測(cè)
對(duì)于需要快速?zèng)Q策并涉及多個(gè)數(shù)據(jù)源的情況而言,運(yùn)行快速的 Spark 是不二之選。例如,金融機(jī)構(gòu)檢測(cè)信用卡欺詐的方法之一是,分析單一帳戶上的交易量和交易地點(diǎn)。如果交易次數(shù)超出個(gè)人能力范圍,或者多個(gè)交易發(fā)生在不同地點(diǎn),而交易地點(diǎn)相距不合情理,則表明一個(gè)帳戶已被泄露。
銀行可以使用 Apache Spark 來(lái)根據(jù)使用模式創(chuàng)建帳戶持有者的統(tǒng)一視圖。機(jī)器學(xué)習(xí)可用于根據(jù)先前觀察到的模式,檢測(cè)超出規(guī)范的模式。這還可以使機(jī)構(gòu)更好地根據(jù)客戶個(gè)人需求來(lái)定制優(yōu)惠。
醫(yī)療健康
在美國(guó),藥物的不良相互作用是第四大致死原因,排在肺癌、糖尿病和肺炎之前。確定多種藥物如何相互作用以對(duì)患者造成不良后果,這一問(wèn)題的復(fù)雜程度呈指數(shù)級(jí)增加,隨著新藥不斷推出,這一問(wèn)題在每一年都更加復(fù)雜。
借助 Spark,數(shù)據(jù)科學(xué)家可以創(chuàng)建算法,掃描數(shù)百萬(wàn)份病例記錄并查找提及的藥物類型。某些藥物的組合可以與治療結(jié)果相關(guān)聯(lián),并按原先存在的狀況和病史等因素加權(quán)。然后可以將結(jié)果應(yīng)用于個(gè)別患者的健康記錄,在開(kāi)具處方或填寫處方之前提醒醫(yī)生和藥師注意出現(xiàn)不良反應(yīng)的可能性。
為何 APACHE SPARK 如此重要
Spark 3.0 是數(shù)據(jù)科學(xué)家和數(shù)據(jù)工程師在分析和 AI 領(lǐng)域協(xié)作的一個(gè)重要里程碑,其使 ETL 操作得到加速,同時(shí) ML 和 DL 應(yīng)用程序也能夠利用相同的 GPU 基礎(chǔ)設(shè)施。
數(shù)據(jù)科學(xué)團(tuán)隊(duì)
將數(shù)據(jù)轉(zhuǎn)化為可用形式需要完成眾多普通任務(wù),數(shù)據(jù)科學(xué)的“魔力”對(duì)此也無(wú)計(jì)可施。該過(guò)程涉及對(duì)數(shù)百萬(wàn)或數(shù)十億條記錄中的非結(jié)構(gòu)化數(shù)據(jù)(例如郵政編碼、日期和 SKU 編號(hào))進(jìn)行分類和排序。數(shù)據(jù)集越大,處理時(shí)間越長(zhǎng)。據(jù)估計(jì),數(shù)據(jù)準(zhǔn)備會(huì)占用數(shù)據(jù)科學(xué)家 80% 的時(shí)間。
Hadoop 是一項(xiàng)大規(guī)模執(zhí)行數(shù)據(jù)分析的突破性技術(shù),使數(shù)據(jù)科學(xué)家能夠針對(duì)超大型數(shù)據(jù)存儲(chǔ)執(zhí)行查詢。但是,處理時(shí)間通常很長(zhǎng),尤其是在需要對(duì)現(xiàn)有數(shù)據(jù)集執(zhí)行重復(fù)掃描時(shí),這在進(jìn)行分類和數(shù)據(jù)發(fā)現(xiàn)時(shí)經(jīng)常發(fā)生。
Spark 專為跨大型數(shù)據(jù)集的迭代查詢而構(gòu)建。與 Hadoop/MapReduce 相比,其速度快達(dá) 100 倍,迅速獲得了數(shù)據(jù)科學(xué)家的青睞。Spark 還可輕松適應(yīng) Python、R 和 Scala 等面向數(shù)據(jù)科學(xué)的開(kāi)發(fā)語(yǔ)言。由于大多數(shù)數(shù)據(jù)科學(xué)家都習(xí)慣于使用單個(gè)編程工具,因此 Spark 能夠輕松適應(yīng)個(gè)人需求。
Spark SQL 還引入了名為 DataFrame 的數(shù)據(jù)抽象概念,該概念支持結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù),并且支持多語(yǔ)言操作。通過(guò)這種概念,熟悉的 SQL 語(yǔ)言能夠以新方式應(yīng)用于非結(jié)構(gòu)化數(shù)據(jù)。Spark ML 提供了一套統(tǒng)一的高級(jí)別 API,這些 API 基于 DataFrame 構(gòu)建,用于搭建 ML 流程或 ML 工作流程。基于 DataFrame 構(gòu)建 ML 流程可實(shí)現(xiàn)分區(qū)數(shù)據(jù)處理的可擴(kuò)展性,且便于通過(guò) SQL 進(jìn)行數(shù)據(jù)操作。
數(shù)據(jù)工程團(tuán)隊(duì)
數(shù)據(jù)工程師彌補(bǔ)了數(shù)據(jù)科學(xué)家與開(kāi)發(fā)者之間的差距。數(shù)據(jù)科學(xué)家選擇合適的數(shù)據(jù)類型和算法來(lái)解決問(wèn)題,而數(shù)據(jù)工程師則與數(shù)據(jù)科學(xué)家和開(kāi)發(fā)者開(kāi)展合作,處理與數(shù)據(jù)流程創(chuàng)建相關(guān)的所有工作,用于數(shù)據(jù)提取轉(zhuǎn)換、存儲(chǔ)和分析,以構(gòu)建大數(shù)據(jù)分析應(yīng)用程序。
Spark 將復(fù)雜性從存儲(chǔ)方程中抽象出來(lái)。該框架可以處理幾乎任何底層存儲(chǔ)(包括 Hadoop 分布式文件系統(tǒng)),因此比 Hadoop 更靈活,更適用于云和本地基礎(chǔ)設(shè)施的組合。Spark 還可以輕松整合流數(shù)據(jù)源,使其成為適用于新一代物聯(lián)網(wǎng)應(yīng)用程序的引擎。
原文標(biāo)題:NVIDIA大講堂 | 什么是 APACHE SPARK?
文章出處:【微信公眾號(hào):NVIDIA英偉達(dá)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
審核編輯:湯梓紅
-
NVIDIA
+關(guān)注
關(guān)注
14文章
5076瀏覽量
103721 -
開(kāi)源框架
+關(guān)注
關(guān)注
0文章
32瀏覽量
9429 -
apache spark
+關(guān)注
關(guān)注
0文章
4瀏覽量
1808
原文標(biāo)題:NVIDIA大講堂 | 什么是 APACHE SPARK?
文章出處:【微信號(hào):NVIDIA_China,微信公眾號(hào):NVIDIA英偉達(dá)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
大數(shù)據(jù)分析中Spark,Hadoop,Hive框架該用哪種開(kāi)源分布式系統(tǒng)
RDMA技術(shù)在Apache Spark中的應(yīng)用
![RDMA技術(shù)在<b class='flag-5'>Apache</b> <b class='flag-5'>Spark</b>中的應(yīng)用](https://file1.elecfans.com/web2/M00/C3/6A/wKgaomXlNumAD4qkAAKXD6F2opA173.png)
Hadoop的整體框架組成
如何使用Apache Spark 2.0
![如何使用<b class='flag-5'>Apache</b> <b class='flag-5'>Spark</b> 2.0](https://file.elecfans.com/web2/M00/49/E7/pYYBAGKhvHOAI34yAAAfQmPsan0268.png)
Apache Spark 1.6預(yù)覽版新特性展示
![<b class='flag-5'>Apache</b> <b class='flag-5'>Spark</b> 1.6預(yù)覽版新特性展示](https://file.elecfans.com/web2/M00/4A/02/pYYBAGKhvIeAaSC6AAAbjutcRhA406.png)
機(jī)器學(xué)習(xí)實(shí)例:Spark與Python結(jié)合設(shè)計(jì)
Apache Spark的分布式深度學(xué)習(xí)框架BigDL的概述
Apache Spark上的分布式機(jī)器學(xué)習(xí)的介紹
Apache Spark 3.2有哪些新特性
利用Apache Spark和RAPIDS Apache加速Spark實(shí)踐
![利用<b class='flag-5'>Apache</b> <b class='flag-5'>Spark</b>和RAPIDS <b class='flag-5'>Apache</b>加速<b class='flag-5'>Spark</b>實(shí)踐](https://file.elecfans.com//web2/M00/3F/6F/poYBAGJnvc-AVPaXAAEZ8a41Xrc054.png)
一文詳細(xì)了解OpenHarmony新圖形框架
![<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>詳細(xì)了解</b>OpenHarmony新圖形<b class='flag-5'>框架</b>](https://file.elecfans.com//web2/M00/3F/8E/poYBAGJo0sOAPyDaAACO3vSCQkk637.png)
一文詳細(xì)了解ArkUI框架新增能力
![<b class='flag-5'>一</b><b class='flag-5'>文</b><b class='flag-5'>詳細(xì)了解</b>ArkUI<b class='flag-5'>框架</b>新增能力](https://file.elecfans.com//web2/M00/3F/8F/poYBAGJo2CqAJnmCAAAz8uTg70o880.png)
評(píng)論