我对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内存。
到目前为止,我已尝试过以下内容 -
我有 -
运行应用程序2小时后,它会给出错误。
我猜测配置需要调整,但不知道哪一个。如果有人知道什么是正在发生并建议一些帮助信息,我将不胜感激。
提前致谢。
答案 0 :(得分:0)
您的内存不足错误表明您可能需要提高驱动程序内存。默认情况下,这是2GB。我遇到了类似的问题,并通过spark-submit标志传递自定义配置。
试试这个:
spark-submit --driver-memory = 4g app.py
如果这不起作用;你需要查看spark web UI或ganglia,看看在执行过程中使用了多少内存。 Ganglia将允许您查看正在使用的内存量以及是否需要更多内存用于该作业。