Spark常見問題解決辦法

以下是在學習和使用spark過程中遇到的一些問題,記錄下來。

1、首先來說說spark任務運行完后查錯最常用的一個命令,那就是把任務運行日志down下來。 程序存在錯誤,將日志down下來查看具體原因!down日志命令:yarn logs -applicationId app_id

2、Spark性能優化的9大問題及其解決方案

Spark程序優化所需要關注的幾個關鍵點——最主要的是數據序列化和內存優化

問題1:reduce task數目不合適

解決方法:需根據實際情況調節默認配置,調整方式是修改參數spark.default.parallelism。通常,reduce數目設置為core數目的2到3倍。數量太大,造成很多小任務,增加啟動任務的開銷;數目太少,任務運行緩慢。

問題2:shuffle磁盤IO時間長

解決方法:設置spark.local.dir為多個磁盤,并設置磁盤為IO速度快的磁盤,通過增加IO來優化shuffle性能;

問題3:map|reduce數量大,造成shuffle小文件數目多

解決方法:默認情況下shuffle文件數目為map tasks * reduce tasks. 通過設置spark.shuffle.consolidateFiles為true,來合并shuffle中間文件,此時文件數為reduce tasks數目;

問題4:序列化時間長、結果大

解決方法:Spark默認使.用JDK.自帶的ObjectOutputStream,這種方式產生的結果大、CPU處理時間長,可以通過設置spark.serializer為org.apache.spark.serializer.KryoSerializer。另外如果結果已經很大,可以使用廣播變量;

問題5:單條記錄消耗大

解決方法:使用mapPartition替換map,mapPartition是對每個Partition進行計算,而map是對partition中的每條記錄進行計算;

問題6:collect輸出大量結果時速度慢

解決方式:collect源碼中是把所有的結果以一個Array的方式放在內存中,可以直接輸出到分布式?文件系統,然后查看文件系統中的內容;

問題7:任務執行速度傾斜

解決方式:如果是數據傾斜,一般是partition key取的不好,可以考慮其它的并行處理方式 ,并在中間加上aggregation操作;如果是Worker傾斜,例如在某些worker上的executor執行緩慢,可以通過設置spark.speculation=true 把那些持續慢的節點去掉;

問題8:通過多步驟的RDD操作后有很多空任務或者小任務產生

解決方式:使用coalesce或repartition去減少RDD中partition數量;

問題9:Spark Streaming吞吐量不高

解決方式:可以設置spark.streaming.concurrentJobs

3、intellij idea直接編譯spark源碼及問題解決:

http://blog.csdn.net/tanglizhe1105/article/details/50530104

http://stackoverflow.com/questions/18920334/output-path-is-shared-between-the-same-module-error

Spark編譯:clean package -Dmaven.test.skip=true

參數:-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m

4、import Spark source code into intellj, build Error:

not found: type SparkFlumeProtocol and EventBatch

http://stackoverflow.com/questions/33311794/import-spark-source-code-into-intellj-build-error-not-found-type-sparkflumepr

<ignore_js_op>

spark_complie_config.png

5、org.apache.spark.SparkException: Exception thrown in awaitResult

set "spark.sql.broadcastTimeout" to increase the timeout

6、Apache Zeppelin編譯安裝:

Apache Zeppelin installation grunt build error:

解決方案:進入web模塊npm install;

http://stackoverflow.com/questions/33352309/apache-zeppelin-installation-grunt-build-error?rq=1

7、Spark源碼編譯遇到的問題解決:http://www.tuicool.com/articles/NBVvai

內存不夠,這個錯誤是因為編譯的時候內存不夠導致的,可以在編譯的時候加大內存。

[ERROR] PermGen space -> [Help 1]

[ERROR]

[ERROR] To see the full stack trace of the errors,re-run Maven with the -e switch.

[ERROR] Re-run Maven using the -X switch to enable full debug logging.

[ERROR]

[ERROR] For more information about the errors and possible solutions,

please read the following articles:

[ERROR] [Help 1]http://cwiki.apache.org/confluence/display/MAVEN/OutOfMemoryError

export MAVEN_OPTS="-Xmx2g -XX:MaxPermSize=512M -XX:ReservedCodeCacheSize=512m"

8、Exception in thread "main" java.lang.UnsatisfiedLinkError: no jnind4j in java.library.path

解決方案:I’m using a 64-Bit Java on Windows and still get the no jnind4j in java.library.path error It may be that you have incompatible DLLs on your PATH. In order to tell DL4J to ignore those you have to add the following as a VM parameter (Run -> Edit Configurations -> VM Options in IntelliJ): -Djava.library.path=""

9、spark2.0本地運行源碼報錯解決辦法:

修改對應pom中的依賴jar包,將scope級別由provided改為compile

運行類之前,去掉make選項;在運行vm設置中增加-Dspark.master=local

Win7下運行spark example代碼報錯:

java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: file:/SourceCode/spark-2.0.0/spark-warehouse修改SQLConf類中WAREHOUSE_PATH變量,將file:前綴改為file:/或file:///

createWithDefault("file:/${system:user.dir}/spark-warehouse")

local模式運行:-Dspark.master=local

10、解決Task not serializable Exception錯誤

方法1:將RDD中的所有數據通過JDBC連接寫入數據庫,若使用map函數,可能要為每個元素都創建connection,這樣開銷很大,如果使用mapPartitions,那么只需要針對每個分區建立connection;mapPartitions處理后返回的是Iterator。

方法2:對未序列化的對象加@transisent引用,在進行網絡通信時不對對象中的屬性進行序列化

11、這個函數在func("11")調用時候正常,但是在執行func(11)或func(1.1)時候就會報error: type mismatch的錯誤. 這個問題很好解決

針對特定的參數類型, 重載多個func函數,這個不難, 傳統JAVA中的思路, 但是需要定義多個函數

使用超類型, 比如使用AnyVal,Any;這樣的話比較麻煩,需要在函數中針對特定的邏輯做類型轉化,從而進一步處理上面兩個方法使用的是傳統JAVA思路,雖然都可以解決該問題,但是缺點是不夠簡潔;在充滿了語法糖的Scala中,針對類型轉換提供了特有的implicit隱式轉化的功能;

12、org.apache.spark.shuffle.MetadataFetchFailedException: Missing an output location for shuffle

解決方案:這種問題一般發生在有大量shuffle操作的時候,task不斷的failed,然后又重執行,一直循環下去,直到application失敗。一般遇到這種問題提高executor內存即可,同時增加每個executor的cpu,這樣不會減少task并行度。

13、Spark ML PipeLine GBT/RF預測時報錯,java.util.NoSuchElementException: key not found: 8.0

錯誤原因:由于GBT/RF模型輸入setFeaturesCol,setLabelCol參數列名不一致導致。

解決方案:只保存訓練算法模型,不保存PipeLineModel

14、linux刪除亂碼文件,step1. ls -la; step2. find . -inum inode num -exec rm {} -rf \;

15、Caused by: java.lang.RuntimeException: Failed to commit task Caused by: org.apache.spark.executor.CommitDeniedException: attempt_201603251514_0218_m_000245_0: Not committed because the driver did not authorize commit

如果你比較了解spark中的stage是如何劃分的,這個問題就比較簡單了。一個Stage中包含的task過大,一般由于你的transform過程太長,因此driver給executor分發的task就會變的很大。所以解決這個問題我們可以通過拆分stage解決。也就是在執行過程中調用cache.count緩存一些中間數據從而切斷過長的stage。

原文地址:http://www.kekeyun.com/thread-3382-1-1.html

轉載于:https://www.cnblogs.com/kxgdby/p/7956693.html

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

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

相關文章

linux下安裝php的swoole擴展模塊(安裝后php加載不出來?)

應開發同事要求&#xff0c;需要安裝php的擴展模塊swoole。 swoole是一種PHP高級Web開發框架&#xff0c;框架不是為了提升網站的性能&#xff0c;而是為了提升網站的開發效率&#xff0c;以最少的性能損耗&#xff0c;換取最大的開發效率。 假設服務器上php服務版本為php5.6.2…

autosar工具鏈_Autosar開發與手寫代碼開發的區別

Autosar開發流程1.BSW開發主要應用工具鏈&#xff08;Vector等工具&#xff0c;具體可以百度搜索Autosar配置工具&#xff09;來配置&#xff0c;復雜驅動的代碼需要手寫&#xff0c;但是也要符合Autosar的接口標準&#xff0c;主要包括&#xff0c;CAN通信配置、數字輸入配置、…

山東計算機類好的民辦大學,2021年山東所有民辦大學名單及排名(教育部)

高考考上一個好的大學&#xff0c;是每位考生和家長的一個夢想,但是選擇一個適合自己的大學也非常重要。本文高考助手網幫各位考生整理了關于山東本地區所有的民辦大學名單、山東所有的民辦大學分數線排名、山東民辦大學文理科投檔線等相關知識&#xff0c;各位考生在填報志愿的…

leetcode1536. 排布二進制網格的最少交換次數(貪心算法)

給你一個 n x n 的二進制網格 grid&#xff0c;每一次操作中&#xff0c;你可以選擇網格的 相鄰兩行 進行交換。 一個符合要求的網格需要滿足主對角線以上的格子全部都是 0 。 請你返回使網格滿足要求的最少操作次數&#xff0c;如果無法使網格符合要求&#xff0c;請你返回 …

xml文檔包含html代碼_為什么文檔很重要,以及為什么應將其包含在代碼中

xml文檔包含html代碼There are a plethora of acronyms when it comes to software development. KISS, DRY, SOLID… and so on and so forth. But, when it comes to documenting or commenting your code, there is no simple catchphrase.關于軟件開發&#xff0c;有很多首…

python 版本分布式鎖

此文章&#xff0c;實現python 版本的分布式鎖&#xff0c;java版本的可以使用curator很容易實現&#xff0c;python版本如下在做分布式系統開發的時候&#xff0c;分布式鎖可以說是必需的一個組件。最近做了一些調研和嘗試&#xff0c;經過對比&#xff0c;基于ZooKeeper的分布…

JavaScript數組(2)---遍歷/迭代方法 8種

最近工作中經常涉及到數據的處理&#xff0c;數組尤其常見&#xff0c;經常需要對其進行遍歷、轉換操作&#xff0c;網上的文章零零散散&#xff0c;不得已自己又找出紅寶書來翻出來看&#xff0c;順便記一筆&#xff0c;便于以后查詢。 數組常用的方法 ECMAScript5為數組定義了…

用例設計:思維導圖orExcel

一、 某次緊急發版時使用思維導圖來進行了用例的設計&#xff0c;很被導圖多分支羅列、在單一分支上層層遞進設計模式的吸引&#xff0c;最終看到由版本主題開枝散葉衍發出的結構性用例時非常開心。從此&#xff0c;幾個版本的迭代都使用思維導圖進行用例設計。 然而部門制度關…

class對象和class文件_Class文件格式

我們知道Java是一門跨平臺的語言&#xff0c;我們編寫的Java代碼會被編譯成中間class文件以讓Java虛擬機解析運行。而Java虛擬機規范僅僅描述了抽象的Java虛擬機&#xff0c;在實現具體的Java虛擬機時&#xff0c;僅指出了設計規范。Java虛擬機的實現必須體現規范中的內容&…

2018計算機應用基礎考試6,2018結構工程師《計算機應用基礎》試題(6)

大家做好準備迎接2018考試了嗎?出國留學網為您整理了“2018結構工程師《計算機應用基礎》試題(6)”&#xff0c;跟著出國留學網來了解一下吧。要相信只要自己有足夠的實力&#xff0c;無論考什么都不會害怕!2018結構工程師《計算機應用基礎》試題(6)1、下列存儲器中&#xff0…

leetcode1282. 用戶分組(貪心算法)

有 n 位用戶參加活動&#xff0c;他們的 ID 從 0 到 n - 1&#xff0c;每位用戶都 恰好 屬于某一用戶組。給你一個長度為 n 的數組 groupSizes&#xff0c;其中包含每位用戶所處的用戶組的大小&#xff0c;請你返回用戶分組情況&#xff08;存在的用戶組以及每個組中用戶的 ID&…

mysql解鎖_mysql 解鎖

show OPEN TABLES where In_use > 0;show processlist;show status like Table%;show status like %lock%;show OPEN TABLES where In_use > 0&#xff1b;//1.查看當前數據庫鎖表的情況SELECT * FROM information_schema.INNODB_TRX;//2.殺掉查詢結果中鎖表的trx_mysql_…

強制換行和禁止換行

強制換行&#xff1a;word-break: break-all; 只對英文起作用&#xff0c;以字母作為換行依據word-wrap: break-word; 只對英文起作用&#xff0c;以單詞作為換行依據white-space: pre-wrap; 只對中文起作用&#xff0c;強制換行禁止換行&#xff1a;white-space: now…

構建自己的簡單微服務架構(開源)

構建自己的簡單微服務架構&#xff08;開源&#xff09; 原文:構建自己的簡單微服務架構&#xff08;開源&#xff09;前言 本篇僅作引導&#xff0c;內容較多&#xff0c;如果閱讀不方便&#xff0c;可以使用電腦打開我們的文檔官網進行閱讀。如下圖所示&#…

職業生涯愿景計算機,職業生涯愿景

《職業生涯愿景》由會員分享&#xff0c;可在線閱讀&#xff0c;更多相關《職業生涯愿景(10頁珍藏版)》請在人人文庫網上搜索。1、職業生涯愿景職業生涯愿景設備安裝技術是掌握本專業必需的基本理論知識&#xff0c;具有設備制造、安裝、調試、管理、設計。施工方案編制的專業技…

leetcode881. 救生艇(貪心算法加雙指針)

第 i 個人的體重為 people[i]&#xff0c;每艘船可以承載的最大重量為 limit。 每艘船最多可同時載兩人&#xff0c;但條件是這些人的重量之和最多為 limit。 返回載到每一個人所需的最小船數。(保證每個人都能被船載)。 示例 1&#xff1a; 輸入&#xff1a;people [1,2]…

react避免子組件渲染_如何與React一起使用正確的方法來避免一些常見的陷阱

react避免子組件渲染One thing I hear quite often is “Let’s go for Redux” in our new React app. It helps you scale, and the App data shouldn’t be in React local state because it is inefficient. Or when you call an API and while the promise is pending, th…

[轉載]Spring配置文件詳解一:

2019獨角獸企業重金招聘Python工程師標準>>> 原文地址&#xff1a;Spring配置文件詳解一&#xff1a;<context:annotation-config/>與<context:component-scan base-package"com.xx 作者&#xff1a;愛情隨遇而安 <context:annotation-config/>…

mysql 8.0.16修改root密碼_mysql 8.0.16 winx64及Linux修改root用戶密碼 的方法

連接數據庫等基礎操作請自行解決哈&#xff0c;本篇是重點記錄如何改密碼。一、查詢用戶密碼:查詢用戶密碼命令&#xff1a;select host, user, authentication_string from mysql.user ;host&#xff1a;允許用戶登錄的ip‘位置%表示可以遠程&#xff1b;user&#xff1a;當前…

舞臺設計

舞臺設計 #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<cstdio> #include<queue> using namespace std;int ucol[1005],dcol[1005],lrow[1005],rrow[1005]; int numr[1005],numc[1005]; int a[100…