2015-04-07 41 views
1

我在火花上的大連接的驅動程序中出現以下錯誤。我得到的執行器超出內存限制時運行在火花大連接

我們有3個節點,RAM爲32GB,總輸入大小爲150GB。 (當輸入文件大小爲50GB時,相同的應用程序正常運行)

我已經將storage.memoryFraction設置爲0.2,將shuffle.memoryFraction設置爲0.2。但仍然持續受到奔涌的物理限制誤差。

15/04/07 19時58分17秒INFO yarn.YarnAllocator:集裝箱標記爲失敗: container_1426882329798_0674_01_000002。退出狀態:143。診斷: 容器 [pid = 51382,containerID = container_1426882329798_0674_01_000002]是 超出物理內存限制。當前使用情況:16.1 GB 16 GB 使用的物理內存;使用16.8 GB的33.6 GB虛擬內存。殺死 集裝箱。流程樹的轉儲 container_1426882329798_0674_01_000002: | - PID PPID PGRPID SESSID CMD_NAME USER_MODE_TIME(millis)來SYSTEM_TIME(millis)來VMEM_USAGE(字節)RSSMEM_USAGE(頁) FULL_CMD_LINE | - 51387 51382 51382 51382(JAVA)717795 50780 17970946048 4221191 /usr/jdk64/jdk1.7.0_45/bin/java -server -XX:OnOutOfMemoryError = kill%p -Xms14336m -Xmx14336m -verbose:gc -XX:+ PrintGCDetails -XX:+ PrintGCTimeStamps -XX:+ StartAttachListener -Dcom。 sun.management.jmxremote -Dcom.sun.management.jmxremote.port = 9010 -Dcom.sun.management.jmxremote.local.only = false -Dcom.sun.management.jmxremote.authenticate = false -Dcom.sun.management。 jmxremote.ssl = false -Dlog4j.configuration = file:/softwares/log4j.properties -Djava.io.tmpdir =/hadoop/yarn/local/usercache/hdfs/appcache/application_1426882329798_0674/container_1426882329798_0674_01_000002/tmp -Dspark.driver.port = 20763 -Dspark.ui.port = 0 -Dspark.yarn.app.container.log.dir =/hadoop/yarn/log/application_1426882329798_0674/container_1426882329798_0674_01_000002 org.apache.spark.executor。 CoarseGrainedExecutorBackend --driver-url akka.tcp://[email protected]:20763/user/CoarseGrainedScheduler --executor-id 1 --hostname maxiq1.augmentiq.in --cores 4 --app-id application_1426882329798_0674 --user類路徑 文件:/ Hadoop的/紗/本地/ usercache/HDFS /應用程序緩存/ application_1426882329798_0674/container_1426882329798_0674_01_000002/應用的.jar

請幫我這個?

回答

-1

您可以嘗試將--executor-memory設置爲低於此限制。該限制在yarn-site.xml中定義,或者如果未設置,則默認爲默認。

如果節點有更多內存,也可以嘗試增加限制。在http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/可以找到詳細的一些尺寸說明。

總體保持在您的資源分配是由紗線控制頭腦,紗運作和調試熟悉自己是神的想法

3

之前我們曾面臨類似的問題。試圖改變火花的所有配置,但沒有運氣。

後來我們發現這是數據問題。我們在連接中使用的關鍵字有多行。一些鍵在兩個表中都有大約4000-5000行。因此,火花創造了5k * 5k左右的記錄,使得該執行器可以運行內存。

您可能需要檢查一次數據。運行一些關於輸入數據的分析,例如Group by by key並獲取計數。這可能會給你一些見解。

相關問題