Spark Standalone应用程序在最后一点挂起

时间:2016-03-29 10:24:56

标签: apache-spark pyspark apache-spark-sql hadoop2 pyspark-sql

我对Spark相对较新,并使用python和spark SQL编写了一个简单的脚本。我的问题是它在执行的开始阶段完全没问题,但逐渐放慢速度,在最后阶段结束时整个应用程序挂起。以下是应用程序被绞死的代码片段 -

hivectx.registerDataFrameAsTable(aggregatedDataV1,"aggregatedDataV1")
q1 = "SELECT *, (Total_Sale/Sale_Weeks) as Average_Sale_Per_SaleWeek, (Total_Weeks/Sale_Weeks) as Velocity FROM aggregatedDataV1"
aggregatedData = hivectx.sql(q1)
aggregatedData.show(100)

我在终端上有以下内容 -

16/03/29 09:05:50 INFO TaskSetManager: Finished task 96.0 in stage 416.0 (TID 19992) in 41924 ms on 10.9.0.7 (104/200)
16/03/29 09:05:50 INFO TaskSetManager: Finished task 108.0 in stage 416.0 (TID 20004) in 24608 ms on 10.9.0.10 (105/200)
16/03/29 09:05:50 INFO TaskSetManager: Finished task 105.0 in stage 416.0 (TID 20001) in 24610 ms on 10.9.0.10 (106/200)
16/03/29 09:05:55 INFO TaskSetManager: Starting task 116.0 in stage 416.0 (TID 20012, 10.9.0.10, partition 116,NODE_LOCAL, 2240 bytes)
16/03/29 09:06:31 INFO TaskSetManager: Finished task 99.0 in stage 416.0 (TID 19995) in 78435 ms on 10.9.0.7 (110/200)
16/03/29 09:06:40 INFO TaskSetManager: Starting task 119.0 in stage 416.0 (TID 20015, 10.9.0.10, partition 119,NODE_LOCAL, 2240 bytes)
16/03/29 09:07:12 INFO TaskSetManager: Starting task 122.0 in stage 416.0 (TID 20018, 10.9.0.7, partition 122,NODE_LOCAL, 2240 bytes) 
16/03/29 09:07:16 INFO TaskSetManager: Starting task 123.0 in stage 416.0 (TID 20019, 10.9.0.7, partition 123,NODE_LOCAL, 2240 bytes)
16/03/29 09:07:28 INFO TaskSetManager: Finished task 111.0 in stage 416.0 (TID 20007) in 110198 ms on 10.9.0.7 (114/200)
16/03/29 09:07:52 INFO TaskSetManager: Starting task 124.0 in stage 416.0 (TID 20020, 10.9.0.10, partition 124,NODE_LOCAL, 2240 bytes)
16/03/29 09:08:08 INFO TaskSetManager: Finished task 110.0 in stage 416.0 (TID 20006) in 150023 ms on 10.9.0.7 (115/200)
16/03/29 09:08:12 INFO TaskSetManager: Finished task 113.0 in stage 416.0 (TID 20009) in 154120 ms on 10.9.0.7 (116/200)
16/03/29 09:08:16 INFO TaskSetManager: Finished task 116.0 in stage 416.0 (TID 20012) in 145691 ms on 10.9.0.10 (117/200)

之后整个申请被绞死。我有我的spark-env.sh文件,其配置如下:

export SPARK_PUBLIC_DNS="azuremaster.westus.cloudapp.azure.com"
export SPARK_EXECUTOR_INSTANCES=1
export SPARK_EXECUTOR_CORES=2
export SPARK_EXECUTOR_MEMORY=3G
export SPARK_MASTER_OPTS="-Dspark.deploy.defaultCores=1"
export SPARK_WORKER_PORT="8888"
export PYSPARK_PYTHON=/usr/bin/python3
export PYSPARK_DRIVER_PYTHON=python3
export SPARK_HIVE=true

我正在使用 3 Node Clusters 。一个 Master 2个核心和4 GB内存,其他两个 工人 < strong> 4个核心和7 GB内存。

到目前为止,我已尝试过以下内容 -

  • 增加执行者核心数
  • 使用不同数量的资源增加/减少执行程序。

我有 -

  1. Spark -1.6.0
  2. Java 7
  3. scala 2.10.4
  4. 预建的hadoop 2.3
  5. 预建的Hive
  6. 运行应用程序2小时后,它会给出错误。

    The terminal window

    我猜测配置需要调整,但不知道哪一个。如果有人知道什么是正在发生并建议一些帮助信息,我将不胜感激。

    提前致谢。

1 个答案:

答案 0 :(得分:0)

您的内存不足错误表明您可能需要提高驱动程序内存。默认情况下,这是2GB。我遇到了类似的问题,并通过spark-submit标志传递自定义配置。

试试这个:

spark-submit --driver-memory = 4g app.py

如果这不起作用;你需要查看spark web UI或ganglia,看看在执行过程中使用了多少内存。 Ganglia将允许您查看正在使用的内存量以及是否需要更多内存用于该作业。