通过 Yarn 使用 Apache Spark 中的所有资源

Using all resources in Apache Spark with Yarn

我正在使用 Apache Spark 和 Yarn 客户端。 我的 spark 集群中有 4 台 worker PC,每台有 8 个 vcpus 和 30 GB 的内存。 我将执行程序内存设置为 2G,将实例数设置为 33。 我的工作需要 10 个小时才能完成 运行,所有机器的闲置率约为 80%。

我不明白执行器内存和执行器实例之间的关联。每个 Vcpu 应该有一个实例吗?我应该将执行程序内存设置为机器内存/#executors per machine?

我相信你必须使用以下命令:

spark-submit --num-executors 4 --executor-memory 7G --driver-memory 2G --executor-cores 8 --class \"YourClassName\" --master yarn-client

执行者的数量应该是 4,因为你有 4 个工人。执行器内存应该接近每个 yarn 节点分配的最大内存,大约 ~5-6GB(我假设你有 30GB 的总 RAM)。

你应该看看 spark-submit 参数并完全理解它们。

我们使用 cassandra 作为 spark 的数据源。问题是没有足够的分区。我们需要更多地拆分数据。我们将 # of cassandra 分区映射到 spark 分区不够小,我们只会生成 10 或 20 个任务,而不是 100 个任务。