Spark 常見問題小結

原文地址:http://www.aboutyun.com/thread-9946-1-1.html

--------------------------------------

問題導讀
1、當前集群的可用資源不能滿足應用程序的需求,怎么解決?
2、內存里堆的東西太多了,有什么好辦法嗎?





1、WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster uito ensure that workers are registered and have sufficient memory
當前的集群的可用資源不能滿足應用程序所請求的資源。
資源分2類: cores 和 ram
Core代表對執行可用的executor slots
Ram代表每個Worker上被需要的空閑內存來運行你的Application。
解決方法:
應用不要請求多余空閑可用資源的
關閉掉已經執行結束的Application


2、Application isn’t using all of the Cores: How to set the Cores used by a Spark App
設置每個App所能獲得的core
解決方法:
spark-env.sh里設置spark.deploy.defaultCores

spark.cores.max


3、Spark Executor OOM: How to set Memory Parameters on Spark
OOM是內存里堆的東西太多了
1、增加job的并行度,即增加job的partition數量,把大數據集切分成更小的數據,可以減少一次性load到內存中的數據量。InputFomart, getSplit來確定。

2、spark.storage.memoryFraction
管理executor中RDD和運行任務時的內存比例,如果shuffle比較小,只需要一點點shuffle memory,那么就調大這個比例。默認是0.6。不能比老年代還要大。大了就是浪費。

3、spark.executor.memory如果還是不行,那么就要加Executor的內存了,改完executor內存后,這個需要重啟。

4、Shark Server/ Long Running Application Metadata Cleanup
Spark程序的元數據是會往內存中無限存儲的。spark.cleaner.ttl來防止OOM,主要出現在Spark Steaming和Shark Server里。
export SPARK_JAVA_OPTS +="-Dspark.kryoserializer.buffer.mb=10 -Dspark.cleaner.ttl=43200"

5、Class Not Found: Classpath Issues
問題1、缺少jar,不在classpath里。
問題2、jar包沖突,同一個jar不同版本。

解決1:
將所有依賴jar都打入到一個fatJar包里,然后手動設置依賴到指定每臺機器的DIR。
val conf = new SparkConf().setAppName(appName).setJars(Seq(System.getProperty("user.dir") + "/target/scala-2.10/sparktest.jar"))

解決2:
把所需要的依賴jar包都放到default classpath里,分發到各個worker node上。


關于性能優化:
第一個是sort-based shuffle。這個功能大大的減少了超大規模作業在shuffle方面的內存占用量,使得我們可以用更多的內存去排序。
第二個是新的基于Netty的網絡模塊取代了原有的NIO網絡模塊。這個新的模塊提高了網絡傳輸的性能,并且脫離JVM的GC自己管理內存,降低了GC頻率。
第三個是一個獨立于Spark executor的external shuffle service。這樣子executor在GC的時候其他節點還可以通過這個service來抓取shuffle數據,所以網絡傳輸本身不受到GC的影響。

過去一些的參賽系統軟件方面的處理都沒有能力達到硬件的瓶頸,甚至對硬件的利用率還不到10%。而這次我們的參賽系統在map期間用滿了3GB/s的硬盤帶寬,達到了這些虛擬機上八塊SSD的瓶頸,在reduce期間網絡利用率到了1.1GB/s,接近物理極限。


參考文獻:
http://www.datastax.com/dev/blog/common-spark-troubleshooting
http://www.csdn.net/article/2014-11-06/2822505


-------------

更多的Java,Android,大數據,J2EE,Python,數據庫,Linux,Java架構師,教程,視頻請訪問:

http://www.cnblogs.com/zengmiaogen/p/7083694.html


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538615.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538615.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538615.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

dataframe數據標準化處理_數據預處理——標準化/歸一化(實例)

這次我們來說說關于數據預處理中的數據標準化及歸一化的問題。主要以理論實例的方式為大家展示。本次實驗也將會展示部分數據以及代碼,有興趣的小伙伴可以自己動手試試~在本次實例過程中,我們使用的數據是:2010-2018年間廣州市經濟與環境的時…

python實現自動打電話軟件_全自動手勢聯系軟件 讓你輕輕松松打電話

電話號碼超級多的童鞋們,由于手機里存儲的電話太多,每次要找某個人的電話很難找,有木有同感的?小編今天像大家推薦一款新潮的幫助你輕松找到想要的電話的模式,有沒有很想知道呢?其實小編本來是想賣個關子的…

電腦的虛擬服務器位置,如何配置基于IP地址的虛擬主機

滿意答案虛擬主機簡介:1. 把一臺運行在互聯網上的服務器分成多個虛擬的服務器。2. 每一個虛擬主機都具有獨立的域名和完整的Internet服務器(支持WWW,FTP,E-mail等)。3. 一臺服務器上的不同虛擬主機是各自獨…

VMware配置額外內存設置

配置額外內存設置 額外內存設置用于控制主機系統中的內存管理器如何將虛擬機從物理 RAM 中換出。 要配置額外內存設置,請選擇[編輯] > [首選項] > [內存]。 [調整所有虛擬機內存使其適應預留的主機 RAM] 選擇此選項會對給定時間內可以運行的虛擬機的數量和內…

Kafka.net使用編程入門(一)

最近研究分布式消息隊列,分享下! 首先zookeeper 和 kafka 壓縮包 解壓 并配置好! 我本機zookeeper環境配置如下: D:\Worksoftware\ApacheZookeeper3\conf\zoo.cfg 以下是kafka的配置 D:\Worksoftware\Apachekafka2.11\config\server.propert…

下拉推廣系統立擇火星推薦_下拉詞刪除都擇火星下拉

會員注冊發帖做推廣的人都離不開搜索引擎,就像魚離不開水,很多時候我們做SEO的朋友都在研究各大搜索引擎的機制,收錄,排名規則或者是黑帽技術,不管如何,只是希望把自己的企業,產品,服…

python包路徑有幾個_python的搜索路徑與包(package)

python的搜索路徑其實是一個列表,它是指導入模塊時,python會自動去找搜索這個列表當中的路徑,如果路徑中存在要導入的模塊文件則導入成功,否則導入失敗: >>> importsys>>>sys.path [, C:\\Python33\…

配置文件管理服務器,06-配置文件管理

1配置文件管理設備運行于FIPS模式時,本特性部分配置相對于非FIPS模式有所變化,具體差異請見本文相關描述。有關FIPS模式的詳細介紹請參見“安全配置指導”中的“FIPS”。1.1 配置文件簡介配置文件是用來保存配置的文件。配置文件主要用于: …

虛擬機安裝spark配置推薦

如果虛擬機配置的內存太少,spark運行計算的時候會報: WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster uito ensure that workers are registered and have sufficient memory 資源不足的問題,導…

c++輸入一個整數判斷是否為完全平方數_matlab判斷一個整數是完全平方數

(C語言c)判斷一個數是否是 完全平方數的 整數倍#include#includeint ispow(int x){ int&用c編判斷一個數是否是完全數#include#includeintmain(){intn;printf("請輸入一個數,然后按回車鍵:\n");scanf("%d",&n);inti,p1;for(i2;i*i編…

Linux常用命令——chattr、lsattr

chattr 改變文件的擴展屬性 語法格式:chattr 【option】【mode】【files】chattr [選項] [模式] [文件或目錄]注意:chattr 命令及后面的選項和文件里,每個元素之間都要至少要有一個空格參數選項: 參數選項解釋說明-a只能向文件中…

兩個相鄰盒子的邊框怎么只顯示一個_【前端小課堂】0044 盒子

這是一個面向零基礎的前端教程,很簡單,用零散時間就可以學習。 推薦早上讀一下,晚上復習一下,如果可以奢侈一點,白天稍微練習一下下,總共花費 5~15 分鐘。就醬!已經好幾次提到塊(block)元素了&a…

scala apply方法 筆記

原文出處:http://blog.csdn.net/pzw_0612/article/details/48576569 ----------------------------------------------------- Scala比Java更面向對象的一個方面是Scala沒有靜態成員。替代品是,Scala有單例對象:singleton object。 當單例對…

轉:6.1海量數據處理

本文轉自看云,原文地址請移步:https://www.kancloud.cn/kancloud/the-art-of-programming/41608 偶然閑游,偶遇某一站點,發現這里寫的關于海量數據處理相關的思路還挺不錯,所以在這里采摘收藏,如有侵權之處還請評論區或…

python爬去中國天氣網_python爬取中國天氣網并展示最低溫度

import requestsfrom bs4 import BeautifulSoupimport lxmlimport jsonfrom echarts import Echart,Bar,Axisimport time#城市與溫度的集合weather_list []#城市集合city_list []#溫蒂集合lowest_list []#獲取溫度def getTemperature(url):result requests.get(url)#print r…

flash一個按鈕控制動畫_flutter閃屏過渡動畫,閃光占位動畫

在程序設計的理念中,講究一切都來源于物理世界,在現實世界中,人們在每接觸到一個新的事物或者說在手指觸碰到一個事物時,總是心里默許期望有一個反饋效果,這就是來源于心底深處常常被人忽略的一個潛在期望。在程序的世…

scala-wordcount

/* * Mapreduce步驟 * 1、map&#xff1a;獲取一行 * 2、按空格分隔 * 3、每個單詞統計&#xff0c;<key,1> 輸出到 reducer * 4、reducer <key,{1,1,1,1,1}> 匯總 * 5、輸出結果 */ 1、聲明一個集合&#xff0c;模仿要統計的…

動態改變_Excel中如何動態改變可編輯區域?

有這樣一個工作場景&#xff1a;我們制作一個工作報表模板給同事填寫數據&#xff0c;這個工作表格只可以在預設的可編輯區域編輯&#xff0c;其它都是受密碼保護的&#xff0c;而且這個可編輯區域是隨著日期——工作周的變化而發生變化的。也就是說在不同的工作周可編輯的區域…

java集合框架之ArrayList與LinkedList的區別

參考http://how2j.cn/k/collection/collection-arraylist-vs-linkedlist/690.html#nowhere ArrayList和LinkedList的區別 ArrayList 插入&#xff0c;刪除數據慢LinkedList&#xff0c; 插入&#xff0c;刪除數據快ArrayList是順序結構&#xff0c;所以定位很快&#xff0c;指哪…

python語言是由誰設計并領導開發的_python語言概述 - osc_lt3ocv4d的個人空間 - OSCHINA - 中文開源技術交流社區...

python語言的發展 python語言誕生于1990年&#xff0c;由Guide van Rossum設計并領導開發。 python語言是開源項目的優秀代表&#xff0c;其解釋器的全部代碼都是開源的。 編寫Hello程序 學習編程語言有一個慣例&#xff0c;即運行最簡單的Hello程序&#xff0c;該程序功能是在…