我有来自 parquet S3 的 1TB 数据要加载到 AWS Glue Spark 作业中。我正在尝试计算出满足此类要求所需的工人数量。
根据我,以下是
G.1x
配置的详细信息:
1 DPU added for MasterNode
1 DPU reserved for Driver/ApplicationMaster
Each worker is configured with 1 executor
Each executor is configured with 10 GB of memory
Each executor is configured with 8 cores
EBS block of 64GB per DPU
所以如果我采取
50 workers
。 1 个将停放在一边供驱动程序使用,1 个将停放在主节点旁边。所以,我现在还剩下48。因此,48 * 10 = 480 GB 内存(因为 1 个执行程序需要 10 GB 内存)。另外,64 * 48 = 3072 GB ~ 3 TB 磁盘。如果需要任何数据溢出,则将使用磁盘。
那么,这个配置正确吗?如果没有,我需要增加或减少工人吗?任何帮助深表感谢。另外,如果将来我涉及很多
collect
操作,那么我如何增加现在 driver
的 16GB
内存呢?
首先,没有直接的统计或数学公式可以得出所需的 DPU 数量,因为这取决于要解决的问题的性质,如下所示:
现在回答您的问题,假设您使用的是 Glue2.0,为了估计所需的 DPU(或工作人员)数量,您实际上应该启用 AWS Glue 中的作业指标,这可以为您提供了解作业执行时间所需的洞察力、活动执行程序、已完成的阶段以及扩展/缩减 AWS Glue 作业所需的最大执行程序。使用这些指标,您可以可视化并确定您的情况所需的最佳 DPU 数量。
您可以尝试运行虚拟作业或实际作业 1 次,使用指标并确定 DPU 的最佳数量(从成本和作业完成时间)的角度。
例如,尝试使用 50 名工作人员运行,分析您的配置不足因素,然后使用该因素来扩展您的当前容量。
对于有关增加驱动程序内存的其他问题,我建议联系您的 AWS 支持人员或尝试使用具有 20GB 驱动程序内存的 G2.X。