<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Spark 優(yōu)化 | Spark 性能優(yōu)化利器 Sparklens

          共 2658字,需瀏覽 6分鐘

           ·

          2021-07-08 05:21

          優(yōu)化的代碼可以節(jié)省大量時(shí)間和成本。但是,優(yōu)化 Spark 代碼是一項(xiàng)具有挑戰(zhàn)性和耗時(shí)的工作,而無(wú)需了解任務(wù)在何處面臨瓶頸以及用戶希望實(shí)現(xiàn)的優(yōu)化運(yùn)行時(shí)間是多少。造成這種瓶頸的原因主要有 3 個(gè):

          ?Driver 計(jì)算時(shí)間大?存在任務(wù)傾斜?任務(wù)數(shù)不夠,意味著并行性問(wèn)題

          根據(jù)情況,可以實(shí)現(xiàn)兩個(gè)優(yōu)化目標(biāo)——我們可以致力于減少應(yīng)用程序的運(yùn)行時(shí)間,或者我們可以通過(guò)使用更少的資源使其更好地工作來(lái)優(yōu)化它。需要一種解決方案來(lái)幫助識(shí)別此類(lèi)瓶頸,從而幫助我們實(shí)現(xiàn)所需的優(yōu)化目標(biāo)。

          任何 Spark 應(yīng)用程序的性能都可以通過(guò) Yarn 資源管理器 UI 或 Spark Web UI 來(lái)觀察,但它沒(méi)有為我們提供可以指出應(yīng)用程序面臨的瓶頸的詳細(xì)指標(biāo)。有多種工具可用于 Spark 性能監(jiān)控,例如 Sparklens、Sparklint、Dr. Elephant、SparkOscope 等,它們?yōu)槲覀兲峁┝烁敿?xì)的應(yīng)用程序性能細(xì)節(jié)。

          在本博客中,我們將詳細(xì)討論 Sparklens 以及如何使用它為 Spark 優(yōu)化和實(shí)施生成性能指標(biāo)。在這個(gè)過(guò)程中,我們涵蓋了以下幾個(gè)方面。

          1.什么是Sparklens?2.如何使用Sparklens?3.Sparklens 報(bào)告提供的詳細(xì)性能指標(biāo)4.驅(qū)動(dòng)程序與執(zhí)行程序時(shí)鐘5.理想應(yīng)用程序運(yùn)行時(shí)間的估計(jì)6.關(guān)鍵路徑時(shí)間7.最佳執(zhí)行者數(shù)量8.計(jì)算小時(shí)數(shù)9.偏度和缺乏任務(wù)10.常用術(shù)語(yǔ)11.總結(jié)12.參考

          什么是Sparklens?

          Sparklens 是 Qubole 的產(chǎn)品。它是一個(gè)內(nèi)置 Spark Scheduler 模擬器的 Spark 分析和性能預(yù)測(cè)工具。它有助于識(shí)別 Spark 應(yīng)用程序面臨的瓶頸,并為我們提供關(guān)鍵路徑時(shí)間。

          Sparklens 報(bào)告為我們提供了可用于優(yōu)化的后續(xù)步驟的想法。它的主要目標(biāo)是讓人們更容易理解 Spark 應(yīng)用程序的可擴(kuò)展性限制。它有助于了解給定的 Spark 應(yīng)用程序使用所提供的計(jì)算資源的效率。也許一個(gè)應(yīng)用程序會(huì)隨著更多的執(zhí)行器運(yùn)行得更快,也許它不會(huì),Sparklens 可以通過(guò)查看應(yīng)用程序的單次運(yùn)行來(lái)回答這個(gè)問(wèn)題。它有助于將 Spark 應(yīng)用程序調(diào)優(yōu)作為一種定義明確的方法/過(guò)程,而不是可以通過(guò)反復(fù)試驗(yàn)來(lái)學(xué)習(xí)的東西,從而節(jié)省開(kāi)發(fā)人員和計(jì)算時(shí)間以及成本。

          如何使用Sparklens?

          Sparklens 非常易于使用。沒(méi)有先決條件,我們不必專(zhuān)門(mén)安裝任何東西。我們只需要傳遞一組固定的命令以及下面提到的 Spark-submit shell,并且在運(yùn)行后立即生成 Sparklens 報(bào)告。

          packages qubole:Sparklens:0.3.1-s_2.11
          — conf Spark.extraListeners=com.qubole.Sparklens.QuboleJobListener

          Sparklens 報(bào)告提供的詳細(xì)性能指標(biāo)

          ?驅(qū)動(dòng)程序與執(zhí)行程序掛鐘時(shí)間 - Spark 應(yīng)用程序掛鐘的總時(shí)間可以分為花費(fèi)在驅(qū)動(dòng)程序上的時(shí)間和花費(fèi)在執(zhí)行程序上的時(shí)間。當(dāng) Spark 應(yīng)用程序在驅(qū)動(dòng)程序上花費(fèi)太多時(shí)間時(shí),就會(huì)浪費(fèi)執(zhí)行程序的計(jì)算時(shí)間。

          導(dǎo)致驅(qū)動(dòng)程序負(fù)載更高甚至驅(qū)動(dòng)程序內(nèi)存不足的常見(jiàn)原因是 -

          ?rdd.collect()?sparkContext.broadcast?spark.sql.autoBroadcastJoinThreshold 配置錯(cuò)誤。在連接操作的情況下,Spark 使用此限制向所有節(jié)點(diǎn)廣播關(guān)系。在第一次使用時(shí),整個(gè)關(guān)系在驅(qū)動(dòng)程序節(jié)點(diǎn)上具體化。有時(shí),多個(gè)表也會(huì)作為查詢執(zhí)行的一部分進(jìn)行廣播。

          我們應(yīng)該嘗試以這樣一種方式編寫(xiě)應(yīng)用程序,即可以避免驅(qū)動(dòng)程序中的所有顯式結(jié)果收集。此類(lèi)任務(wù)可以委托給其中一位執(zhí)行者。例如,如果某些結(jié)果必須保存到特定文件中,則可以在驅(qū)動(dòng)程序處收集它們,或者我們可以指定一個(gè)執(zhí)行程序來(lái)為我們執(zhí)行此操作。

          ?理想應(yīng)用程序運(yùn)行時(shí)間的估計(jì) - 理想的應(yīng)用程序時(shí)間是通過(guò)假設(shè)應(yīng)用程序的所有階段的數(shù)據(jù)的理想分區(qū)(任務(wù) == 核心和無(wú)偏斜)來(lái)計(jì)算的。

          ?關(guān)鍵路徑時(shí)間 - 這是應(yīng)用程序所需的最短時(shí)間,即使我們給它無(wú)限的執(zhí)行程序。關(guān)鍵路徑時(shí)間和應(yīng)用程序運(yùn)行時(shí)間之間的差異是 Spark 應(yīng)用程序的真正彈性。如果差異很大,則需要更多的執(zhí)行者。


          ?最佳執(zhí)行者數(shù)量 - 如果啟用了自動(dòng)縮放或動(dòng)態(tài)分配,我們可以看到在任何給定時(shí)間有多少個(gè) executor 可用。Sparklens 繪制了應(yīng)用程序中不同 Spark 作業(yè)使用的執(zhí)行程序,以及可以在相同的掛鐘時(shí)間內(nèi)完成相同工作的最少數(shù)量的執(zhí)行程序(理想情況)。


          ?計(jì)算小時(shí)數(shù) - 它告訴我們有多少分配給應(yīng)用程序的計(jì)算資源根本沒(méi)有使用。


          所有上述參數(shù)也可以通過(guò) Sparklens UI 以圖形方式觀察 -


          ?傾斜和缺乏任務(wù) - 由于缺乏任務(wù)或偏差,執(zhí)行器也可能浪費(fèi)計(jì)算時(shí)間。


          ?常用術(shù)語(yǔ) - Sparklens 報(bào)告在報(bào)告末尾提供了所提到的主要參數(shù)的詳細(xì)定義,從而使其自給自足和清晰。


          總結(jié)

          Spark 作業(yè)的瓶頸可以通過(guò)報(bào)告來(lái)識(shí)別,無(wú)論是從資源、數(shù)據(jù)還是腳本方面。Sparklens 報(bào)告確定了可以達(dá)到的最短時(shí)間和固定目標(biāo)時(shí)間。我們可以理解我們離優(yōu)化的代碼有多遠(yuǎn)。關(guān)鍵路徑解決方案可能并不總是可以實(shí)現(xiàn),但我們可以嘗試盡可能接近。根據(jù) Sparklens 的調(diào)查結(jié)果,可以制定詳細(xì)的行動(dòng)和實(shí)施計(jì)劃。Sparklens 的實(shí)現(xiàn)可以跨不同的管道執(zhí)行,因?yàn)?Sparklens 易于使用——某些固定的命令集可以與 Spark-submit shell 一起傳遞。Sparklens 報(bào)告每次都會(huì)生成類(lèi)似的指標(biāo),因此更容易理解。

          引用

          ?https://github.com/qubole/Sparklens?https://docs.qubole.com/en/latest/user-guide/engines/Spark/Sparklens.html?https://www.qubole.com/blog/introducing-quboles-Spark-tuning-tool/[1]?https://www.youtube.com/watch?v=KS5vRZPLo6c

          瀏覽 278
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天天干天天天日 | 精品免费国产一区二区三区四区的使用方法 | 精品无码一区二区三区免费 | 派遣素描模特儿居家作画 却假藉 | 色婷婷精品在线播放 |