如何解决为什么在我的 spark-submit 命令中只使用了一个核心而不是 32 个?
您好,感谢您的帮助,
我知道这个问题有很多主题,我阅读了很多,尝试了很多解决方案但没有任何反应,我的 spark-submit 工作仍然只在我的 32 个可用内核上使用一个内核。
使用 spark-submit 命令,我启动了 Pyspark 脚本。这个 Pyspark 脚本对许多 parquet 文件执行 spark.sql 命令(大约 6000 个文件,每个文件大约 6M,总共 6 亿个数据库元组)。
我使用了一个具有 32 cpu 和 128 Go 的 AWS 实例以及一个 2To EBS DD,其中存储了我的镶木地板文件(它不是 hdfs 文件系统)
我没有将 spark 作为 master 启动,只是在我的单个 EC2 实例上的独立解决方案中使用它。
一切正常,但在我的 32 个内核上仅使用一个内核需要 2 小时,因此我希望通过使用所有可用内核来减少处理时间! 我像这样启动我的 pyspark 脚本:
spark-submit --driver-memory 96G --executor-cores 24 ./my_pyspark.py input.txt output.txt
我尝试像这样在本地添加主参数:
spark-submit --master local[24] --driver-memory 96G ./my_pyspark.py input.txt output.txt
我尝试将我的 spark 作为服务器启动并将 url 提供给主参数:
spark-class org.apache.spark.deploy.master.Master
spark-submit --master spark://10.0.1.20:7077 --driver-memory 96G --executor-cores 24 ./my_pyspark.py input.txt output.txt
但是这个解决方案都不起作用。用 htop 看看这个过程,我发现只使用了一个核心。我错过了什么 ??? 谢谢
解决方法
你的 spark 提交命令是错误的。
不应该为驱动程序分配96G,应该指定执行器的数量和每个执行器的核心数。
例如,您可以尝试:
spark-submit --driver-memory 8G --num-executors 15 --executors-memory 7 --executor-cores 2 ./my_pyspark.py input.txt output.txt
并且您可能应该使用 yarn 作为资源管理器。 --master yarn
此外,在 sparkContext 中定义 master("local"),覆盖您的 spark-submit 命令,您应该将其从代码中删除。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。