我在AWS EMR-Spark上运行了一个应用程序。这里是火花提交工作; -
Arguments : spark-submit --deploy-mode cluster --class com.amazon.JavaSparkPi s3://spark-config-test/SWALiveOrderModelSpark-1.0.assembly.jar s3://spark-config-test/2017-08-08
因此,AWS使用YARN进行资源管理。在观察云观察指标时,我对此有几个疑问: -
容器分配在这里意味着什么?我正在使用1个主人和3个从站/执行器节点(所有4个都是8核CPU)。
我将查询更改为: -
spark-submit --deploy-mode cluster --executor-cores 4 --class com.amazon.JavaSparkPi s3://spark-config-test/SWALiveOrderModelSpark-1.0.assembly.jar s3://spark-config-test/2017-08-08
此处运行的核心数为3.如果不是3(执行者数)* 4(核心数)= 12?
答案 0 :(得分:0)
1)此处分配的容器基本上代表了spark执行器的数量。 Spark执行器核心更像是“执行器 - 任务”,这意味着您可以将应用程序配置为每个物理CPU运行一个执行程序,并且仍然要求每个CPU拥有3个执行程序核心(想想超线程)。
EMR默认情况下,当您没有指定spark执行程序的数量时,会假设动态分配,而Spark只会向YARN询问它认为在资源方面需要什么。尝试将执行程序的数量明确设置为10,并且分配的容器最多为6(数据的最大分区)。此外,在选项卡"应用程序历史记录"下,您可以获得YARN / Spark执行程序的详细视图。
2)"核心"这里指的是EMR核心节点,与spark执行器核心不同。对于"任务"监视选项卡中的内容是指EMR任务节点。这与我的设置一致,因为我有3个EMR从属节点。