久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Spark調優應該怎么做

136次閱讀
沒有評論

共計 1341 個字符,預計需要花費 4 分鐘才能閱讀完成。

今天就跟大家聊聊有關 Spark 調優應該怎么做,可能很多人都不太了解,為了讓大家更加了解,丸趣 TV 小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

死鎖的問題通過分析死鎖日志文件解決了,由于上面一塊錯誤的認識。一直認為兩個非唯一索引可以命中單條記錄,其實 mysql 為了性能命中了多條。

一個簡單的 update 語句,update?whereid1=1andid2=2id1 和 id2 都是非唯一索引,這時有的語句會對因為優化導致上鎖其他索引周邊的數據條目,這時他會等待內建唯一索引的鎖,而同樣的語句會對內建唯一索引加鎖,等待 id1 或者 id2 的鎖,出現同一條語句回環等待鎖的釋放,導致死鎖發生。

以后還是需要多看一些數據庫方面的書籍,對原理性知識了解的更多一些。

Spark 中主要進程的作用?

Driver 進程:負責任務的分發和結果的回收。

Executor 進程:負責具體任務的執行。

Master 進程:Spark 資源管理的主進程,負責資源調度。

Worker 進程:Spark 資源管理的從進程,woker 節點主要運行 Executor

如何選擇一種最合適的持久化策略?

默認情況下,性能最高的當然是 MEMORY_ONLY,但前提是你的內存必須足夠足夠大,可以綽綽有余地存放下整個 RDD 的所有數據。因為不進行序列化與反序列化操作,就避免了這部分的性能開銷;對這個 RDD 的后續算子操作,都是基于純內存中的數據的操作,不需要從磁盤文件中讀取數據,性能也很高;而且不需要復制一份數據副本,并遠程傳送到其他節點上。但是這里必須要注意的是,在實際的生產環境中,恐怕能夠直接用這種策略的場景還是有限的,如果 RDD 中數據比較多時(比如幾十億),直接用這種持久化級別,會導致 JVM 的 OOM 內存溢出異常。

如果使用 MEMORY_ONLY 級別時發生了內存溢出,那么建議嘗試使用 MEMORY_ONLY_SER 級別。該級別會將 RDD 數據序列化后再保存在內存中,此時每個 partition 僅僅是一個字節數組而已,大大減少了對象數量,并降低了內存占用。這種級別比 MEMORY_ONLY 多出來的性能開銷,主要就是序列化與反序列化的開銷。但是后續算子可以基于純內存進行操作,因此性能總體還是比較高的。此外,可能發生的問題同上,如果 RDD 中的數據量過多的話,還是可能會導致 OOM 內存溢出的異常。

如果純內存的級別都無法使用,那么建議使用 MEMORY_AND_DISK_SER 策略,而不是 MEMORY_AND_DISK 策略。因為既然到了這一步,就說明 RDD 的數據量很大,內存無法完全放下。序列化后的數據比較少,可以節省內存和磁盤的空間開銷。同時該策略會優先盡量嘗試將數據緩存在內存中,內存緩存不下才會寫入磁盤。

通常不建議使用 DISK_ONLY 和后綴為_2 的級別:因為完全基于磁盤文件進行數據的讀寫,會導致性能急劇降低,有時還不如重新計算一次所有 RDD。后綴為_2 的級別,必須將所有數據都復制一份副本,并發送到其他節點上,數據復制以及網絡傳輸會導致較大的性能開銷,除非是要求作業的高可用性,否則不建議使用。

看完上述內容,你們對 Spark 調優應該怎么做有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注丸趣 TV 行業資訊頻道,感謝大家的支持。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-28發表,共計1341字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 格尔木市| 南靖县| 巩义市| 宜兰县| 宁武县| 兴化市| 五莲县| 和平县| 合川市| 攀枝花市| 长顺县| 三原县| 谢通门县| 株洲县| 金乡县| 漳平市| 汾阳市| 鲁甸县| 文昌市| 涞源县| 金堂县| 兖州市| 长治市| 铅山县| 洛隆县| 出国| 明光市| 灵川县| 米易县| 慈利县| 札达县| 宣汉县| 南投县| 泽库县| 黄龙县| 乡城县| 遂平县| 山东省| 安西县| 凤凰县| 田阳县|