簡體   English   中英

Spark工作者要求荒謬的虛擬內存量

[英]Spark Worker asking for absurd amounts of virtual memory

我在2節點紗線集群上運行火花作業。 我的數據集不是很大(<100MB),只是用於測試而且工作人員因為要求過多的虛擬內存而被殺死。 這里的金額是荒謬的。 使用11GB物理內存2GB,使用300GB虛擬內存。

16/02/12 05:49:43 WARN scheduler.TaskSetManager:階段2.1中丟失的任務0.0(TID 22,ip-172-31-6-141.ec2.internal):ExecutorLostFailure(執行者2退出由其中一個引起正在運行的任務)原因:容器標記為失敗:容器上的容器_1455246675722_0023_01_000003:ip-172-31-6-141.ec2.internal。 退出狀態:143。診斷:容器[pid = 23206,containerID = container_1455246675722_0023_01_000003]超出虛擬內存限制。 當前用法:使用2.1 GB的11 GB物理內存; 使用305.3 GB的23.1 GB虛擬內存。 殺死容器。 container_1455246675722_0023_01_000003的進程樹轉儲:| - PID PPID PGRPID SESSID CMD_NAME USER_MODE_TIME(MILLIS)SYSTEM_TIME(MILLIS)VMEM_USAGE(BYTES)RSSMEM_USAGE(PAGES)FULL_CMD_LINE | - 23292 23213 23292 23206(python)15 3 101298176 5514 python -m pyspark .daemon | - 23206 1659 23206 23206(bash)0 0 11431936 352 / bin / bash -c / usr / lib / jvm / java-7-openjdk-amd64 / bin / java -server -XX:OnOutOfMemoryError ='kill%p '-Xms10240m -Xmx10240m -Djava.io.tmpdir = / tmp / hadoop-root / nm-local-dir / usercache / root / appcache / application_1455246675722_0023 / container_1455246675722_0023_01_000003 / tmp'-Dspark.driver.port = 37386'-Dspark.yarn .app.container.log.dir = / mnt / yarn / logs / application_1455246675722_0023 / container_1455246675722_0023_01_000003 -XX:MaxPermSize = 256m org.apache.spark.executor.CoarseGrainedExecutorBackend --driver-url spark://CoarseGrainedScheduler@172.31.0.92:37386 --executor-id 2 --hostname ip-172-31-6-141.ec2.internal --cores 8 --app-id application_1455246675722_0023 --user-class- 路徑文件:/ tmp / hadoop-root / nm-local-dir / usercache / root / appcache / application_1455246675722_0023 / container_1455246675722_0023_01_000003 / app .jar 1> / mnt / yarn / logs / application_1455246675722_0023 / container_1455246675722_0023_01_000003 / stdout 2> / mnt / yarn / logs / application_1455246675722_0023 / container_1455246675722_0023_01_000003 / stderr | - 23341 23292 23292 23206(python)87 8 39464374272 23281 python -m pyspark.daemon | - 23350 23292 23292 23206(python)86 7 39463976960 24680 python -m pyspark.daemon | - 23329 23292 23292 23206(python)90 6 39464521728 23281 python -m pyspark.daemon | - 23213 23206 23206 23206(java)1168 61 11967115264 359820 / usr / lib / jvm / java-7-openjdk-amd64 / bin / java -server -XX: OnOutOfMemoryError = kill%p -Xms10240m -Xmx10240m -Djava.io.tmpdir = / tmp / hadoop-root / nm-local-dir / usercache / root / appcache / application_1455246675722_0023 / container_1455246675722_0023_01_000003 / tmp -Dspark.driver.port = 37386 -Dspark .yarn.app.container.log.dir = / MNT /紗線/日志/ application_1455246675722_00 23 / container_1455246675722_0023_01_000003 -XX:MaxPermSize = 256m org.apache.spark.executor.CoarseGrainedExecutorBackend --driver-url spark://CoarseGrainedScheduler@172.31.0.92:37386 --executor-id 2 --hostname ip-172-31-6 -141.ec2.internal --cores 8 --app-id application_1455246675722_0023 --user-class-path file:/ tmp / hadoop-root / nm-local-dir / usercache / root / appcache / application_1455246675722_0023 / container_1455246675722_0023_01_000003 / app 。 jar | - 23347 23292 23292 23206(python)87 10 39464783872 23393 python -m pyspark.daemon | - 23335 23292 23292 23206(python)83 9 39464112128 23216 python -m pyspark.daemon | - 23338 23292 23292 23206(python)81 9 39463714816 24614 python -m pyspark.daemon | - 23332 23292 23292 23206(python)86 6 39464374272 24812 python -m pyspark.daemon | - 23344 23292 23292 23206(python)85 30 39464374272 23281 python -m pyspark.daemon根據請求殺死的容器。 退出代碼是143

有誰知道為什么會發生這種情況? 我一直在嘗試修改各種紗線和火花配置,但我知道要求這么多vmem的東西是非常錯誤的。

我正在運行的命令是

spark-submit --executor-cores 8 ...

事實證明,executor-cores標志不能完成我的想法。 它生成了8個pyspark.daemon進程副本,運行8個工作進程副本來運行作業。 每個進程使用38GB的虛擬內存,這是不必要的大,但8 * 38~300,所以這解釋了。

它實際上是一個名字很差的旗幟。 如果我將executor-cores設置為1,它會創建一個守護進程,但守護進程將使用多個核心,如通過htop所見。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM