【问题标题】:Using all resources in Apache Spark with Yarn通过 Yarn 使用 Apache Spark 中的所有资源
【发布时间】:2015-05-26 11:31:49
【问题描述】:
我正在使用带有 Yarn 客户端的 Apache Spark。
我的 spark 集群中有 4 台工作 PC,每台 8 个 vcpus 和 30 GB 内存。
我将执行程序内存设置为 2G,实例数设置为 33。
我的工作需要 10 个小时才能运行,所有机器大约 80% 处于空闲状态。
我不明白执行程序内存和执行程序实例之间的相关性。我应该每个 Vcpu 都有一个实例吗?我应该将执行程序内存设置为每台机器的机器/#executors 内存吗?
【问题讨论】:
标签:
apache-spark
hadoop-yarn
【解决方案1】:
我相信你必须使用以下命令:
spark-submit --num-executors 4 --executor-memory 7G --driver-memory 2G --executor-cores 8 --class \"YourClassName\" --master yarn-client
执行者的数量应该是 4,因为您有 4 个工人。执行器内存应该接近每个纱线节点分配的最大内存,大约 5-6GB(我假设你有 30GB 的总 RAM)。
你应该看看 spark-submit 参数并完全理解它们。
【解决方案2】:
我们使用 cassandra 作为 spark 的数据源。问题是没有足够的分区。我们需要进一步拆分数据。我们将 # of cassandra 分区映射到 spark 分区的映射不够小,我们只会生成 10 或 20 个任务,而不是 100 个任务。