

# AWS Glue Worker 类型
<a name="worker-types"></a>

## 概览
<a name="worker-types-overview"></a>

AWS Glue 提供多种 Worker 类型以适应不同的工作负载要求，从小型流式处理作业到大规模、内存密集型数据处理作业。本节提供有关所有可用的 Worker 类型、其规格和使用建议的全面信息。

### Worker 类型类别
<a name="worker-type-categories"></a>

AWS Glue 提供两种主要类别的 Worker：
+ **G Worker 类型**：针对标准 ETL 工作负载优化的通用计算 Worker
+ **R Worker 类型**：专为内存密集型 Spark 应用程序设计的内存优化 Worker

### 数据处理单元（DPU）
<a name="data-processing-units"></a>

AWS Glue 工作线程上可用的资源以 DPU 为单位进行衡量。DPU 是对处理能力的相对度量，它由 4 个 vCPU 的计算容量和 16GB 内存组成。

**内存优化 DPU（M-DPU）**：R 型 Worker 使用 M-DPU；与标准 DPU 相比，其为给定大小提供双倍内存分配。这意味着，虽然标准 DPU 提供 16 GB 的内存，但 R 型 Worker 中的 M-DPU 可提供 32 GB 的内存，针对内存密集型 Spark 应用程序进行了优化。

## 可用 Worker 类型
<a name="available-worker-types"></a>

### G.1X
<a name="g1x-standard-worker"></a>
+ **DPU**：1 个 DPU（4 个 vCPU，16 GB 内存）
+ **存储空间**：94 GB 磁盘（约 44 GB 可用空间）
+ **使用案例**：数据转换、联接和查询 – 对于大多数作业来说可扩展且具有成本效益

### G.2X
<a name="g2x-standard-worker"></a>
+ **DPU**：2 个 DPU（8 个 vCPU，32 GB 内存）
+ **存储空间**：138 GB 磁盘（约 78 GB 可用空间）
+ **使用案例**：数据转换、联接和查询 – 对于大多数作业来说可扩展且具有成本效益

### G.4X
<a name="g4x-large-worker"></a>
+ **DPU**：4 个 DPU（16 个 vCPU，64 GB 内存）
+ **存储空间**：256 GB 磁盘（约 230 GB 可用空间）
+ **使用案例**：要求转换、聚合、联接和查询

### G.8X
<a name="g8x-extra-large-worker"></a>
+ **DPU**：8 个 DPU（32 个 vCPU，128 GB 内存）
+ **存储空间**：512 GB 磁盘（约 485 GB 可用空间）
+ **使用案例**：要求转换、聚合、联接和查询

### G.12X
<a name="g12x-very-large-worker"></a>
+ **DPU**：12 个 DPU（48 个 vCPU，192 GB 内存）
+ **存储空间**：768 GB 磁盘（约 741 GB 可用空间）
+ **使用案例**：需要大量计算容量的极大资源密集型工作负载

### G.16X
<a name="g16x-maximum-worker"></a>
+ **DPU**：16 个 DPU（64 个 vCPU，256 GB 内存）
+ **存储空间**：1024 GB 磁盘（约 996 GB 可用空间）
+ **使用案例**：需要最大计算容量的最大且资源最密集的工作负载

### R.1X – 内存优化型\$1
<a name="r1x-memory-optimized-small"></a>
+ **DPU**：1 个 M-DPU（4 个 vCPU，32 GB 内存）
+ **使用案例**：经常出现内存不足错误或对内存与 CPU 比率要求较高的内存密集型工作负载

### R.2X – 内存优化型\$1
<a name="r2x-memory-optimized-medium"></a>
+ **DPU**：2 个 M-DPU（8 个 vCPU，64 GB 内存）
+ **使用案例**：经常出现内存不足错误或对内存与 CPU 比率要求较高的内存密集型工作负载

### R.4X – 内存优化型\$1
<a name="r4x-memory-optimized-large"></a>
+ **DPU**：4 个 M-DPU（16 个 vCPU，128 GB 内存）
+ **使用案例**：经常出现内存不足错误或对内存与 CPU 比率要求较高的大型内存密集型工作负载

### R.8X – 内存优化型\$1
<a name="r8x-memory-optimized-extra-large"></a>
+ **DPU**：8 个 M-DPU（32 个 vCPU，256 GB 内存）
+ **使用案例**：经常出现内存不足错误或对内存与 CPU 比率要求较高的极大内存密集型工作负载

**\$1**这些 Worker 可能会遇到更高的启动延迟。要解决该问题，请尝试以下操作：
+ 等待几分钟，然后再次提交您的作业。
+ 提交减少 Worker 数的新作业。
+ 使用不同的 Worker 类型或规模提交新作业。

## Worker 类型规格表
<a name="worker-type-specifications"></a>


**Worker 类型规格**  

| Worker 类型 | 每节点 DPU | vCPU | 内存（GB） | 磁盘（GB） | 大约可用磁盘空间（GB） | 每节点 Spark 执行程序数 | 
| --- | --- | --- | --- | --- | --- | --- | 
| G.1X | 1 | 4 | 16 | 94 | 44 | 1 | 
| G.2X | 2 | 8 | 32 | 138 | 78 | 1 | 
| G.4X | 4 | 16 | 64 | 256 | 230 | 1 | 
| G.8X | 8 | 32 | 128 | 512 | 485 | 1 | 
| G.12X | 12 | 48 | 192 | 768 | 741 | 1 | 
| G.16X | 16 | 64 | 256 | 1024 | 996 | 1 | 
| R.1X | 1 | 4 | 32 | 94 | 44 | 1 | 
| R.2X | 2 | 8 | 64 | 138 | 78 | 1 | 
| R.4X | 4 | 16 | 128 | 256 | 230 | 1 | 
| R.8X | 8 | 32 | 256 | 512 | 485 | 1 | 

*注意*：R Worker 类型具有内存优化型配置，其规格针对内存密集型工作负载进行了优化。

## 重要注意事项
<a name="important-considerations"></a>

### 启动延迟
<a name="startup-latency"></a>

**重要**  
G.12X 和 G.16X Worker 类型以及所有 R Worker 类型（R.1X 到 R.8X）均可能会遇到较高的启动延迟。要解决该问题，请尝试以下操作：  
等待几分钟，然后再次提交您的作业。
提交减少 Worker 数的新作业。
使用不同的 Worker 类型和规模提交新作业。

## 选择合适的 Worker 类型
<a name="choosing-right-worker-type"></a>

### 对于标准 ETL 工作负载
<a name="standard-etl-workloads"></a>
+ **G.1X 或 G.2X**：对于典型的数据转换、联接和查询最具成本效益
+ **G.4X 或 G.8X**：适用于要求更高、数据集更大的工作负载

### 对于大规模工作负载
<a name="large-scale-workloads"></a>
+ **G.12X**：需要大量计算资源的超大型数据集
+ **G.16X**：为要求最高的工作负载提供最大计算容量

### 对于内存密集型工作负载
<a name="memory-intensive-workloads"></a>
+ **R.1X 或 R.2X**：中小型内存密集型作业
+ **R.4X 或 R.8X**：频繁出现 OOM 错误的大型内存密集型工作负载

## 成本优化注意事项
<a name="cost-optimization-considerations"></a>
+ **标准 G Worker**：提供计算、内存和联网资源的平衡，能够以较低的成本用于各种不同的工作负载
+ **R Worker**：专用于内存密集型任务，可为在内存中处理大型数据集的工作负载提供快速性能

## 最佳实践
<a name="best-practices"></a>

### Worker 选择准则
<a name="worker-selection-guidelines"></a>

1. 对于大多数工作负载，**从标准 Worker（G.1X、G.2X）开始**

1. 当遇到频繁的内存不足错误或包含缓存、重排和聚合等内存密集型操作的工作负载时，**使用 R Worker**

1. 对于需要最大资源的计算密集型工作负载，**考虑使用 G.12X/G.16X**

1. 在时间敏感型工作流程中使用新 Worker 类型时，**请考虑容量限制**

### 性能优化
<a name="performance-optimization"></a>
+ 监控 CloudWatch 指标以了解资源利用率
+ 根据数据大小和复杂性使用适当的 Worker 数量
+ 考虑使用数据分区策略以优化 Worker 效率