

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menerapkan penskalaan aplikasi di Managed Service untuk Apache Flink
<a name="how-scaling"></a>

Anda dapat mengonfigurasi eksekusi tugas secara paralel dan alokasi sumber daya untuk Amazon Managed Service untuk Apache Flink untuk menerapkan penskalaan. Untuk informasi tentang cara Apache Flink menjadwalkan instance paralel tugas, [lihat Eksekusi Paralel](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/dev/datastream/execution/parallel/) di Dokumentasi Apache Flink.

**Topics**
+ [Konfigurasikan paralelisme aplikasi dan KPU ParallelismPer](#how-parallelism)
+ [Alokasikan Unit Pengolahan Kinesis](#how-scaling-kpus)
+ [Perbarui paralelisme aplikasi Anda](#how-scaling-howto)
+ [Gunakan penskalaan otomatis di Managed Service untuk Apache Flink](how-scaling-auto.md)
+ [Pertimbangan MaxParallelism](#how-scaling-auto-max-parallelism)

## Konfigurasikan paralelisme aplikasi dan KPU ParallelismPer
<a name="how-parallelism"></a>

Anda mengonfigurasi eksekusi paralel untuk tugas aplikasi Managed Service for Apache Flink (seperti membaca dari sumber atau mengeksekusi operator) menggunakan properti berikut: [https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ApplicationConfiguration.html](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ApplicationConfiguration.html) 
+ `Parallelism` — Gunakan properti ini untuk mengatur paralelisme aplikasi Apache Flink default. Semua operator, sumber, dan sink mengeksekusi dengan paralelisme ini kecuali ditimpa dalam kode aplikasi. Default-nya adalah `1`, dan maksimum default adalah `256`.
+ `ParallelismPerKPU` — Gunakan properti ini untuk mengatur jumlah tugas paralel yang dapat dijadwalkan per Unit Pemrosesan Kinesis (KPU) aplikasi Anda. Default-nya adalah `1`, dan maksimumnya adalah `8`. Untuk aplikasi yang memiliki operasi pemblokiran (misalnya, I/O), nilai `ParallelismPerKPU` yang lebih tinggi mengarah pada penggunaan penuh sumber daya KPU.

**catatan**  
Batas `Parallelism` untuk sama dengan `ParallelismPerKPU` kali batas untuk KPUs (yang memiliki default 64). KPUs Batas dapat ditingkatkan dengan meminta kenaikan batas. Untuk petunjuk tentang cara meminta peningkatan batas ini, lihat "Untuk meminta peningkatan batas" di [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html).

Untuk informasi tentang menyetel paralelisme tugas untuk operator tertentu, lihat [Menyetel Parallelism: Operator](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/dev/datastream/execution/parallel/#operator-level) di Dokumentasi Apache Flink.

## Alokasikan Unit Pengolahan Kinesis
<a name="how-scaling-kpus"></a>

Layanan Terkelola untuk Apache Flink menyediakan kapasitas sebagai. KPUs Satu KPU memberi Anda 1 vCPU dan memori 4 GB. Untuk setiap KPU yang dialokasikan, penyimpanan aplikasi berjalan sebesar 50 GB juga disediakan. 

Managed Service for Apache Flink menghitung KPUs yang diperlukan untuk menjalankan aplikasi Anda menggunakan `Parallelism` dan `ParallelismPerKPU` properti, sebagai berikut:

```
Allocated KPUs for the application = Parallelism/ParallelismPerKPU
```

Layanan Terkelola untuk Apache Flink dengan cepat memberikan sumber daya aplikasi Anda sebagai respons terhadap lonjakan throughput atau aktivitas pemrosesan. Ini akan menghapus sumber daya dari aplikasi Anda secara bertahap setelah lonjakan aktivitas telah berlalu. Untuk menonaktifkan alokasi otomatis sumber daya, atur nilai `AutoScalingEnabled` ke `false`, seperti yang dijelaskan nanti di [Perbarui paralelisme aplikasi Anda](#how-scaling-howto). 

Batas default KPUs untuk aplikasi Anda adalah 64. Untuk petunjuk tentang cara meminta peningkatan batas ini, lihat "Untuk meminta peningkatan batas" di [Service Quotas](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html).

**catatan**  
KPU tambahan dikenakan biaya untuk keperluan orkestrasi. Untuk informasi selengkapnya, lihat [Layanan Terkelola untuk harga Apache Flink](https://aws.amazon.com/kinesis/data-analytics/pricing/).

## Perbarui paralelisme aplikasi Anda
<a name="how-scaling-howto"></a>

Bagian ini berisi permintaan sampel untuk tindakan API yang mengatur paralelisme aplikasi. Untuk contoh dan petunjuk selengkapnya tentang cara menggunakan blok permintaan dengan tindakan API, lihat [Layanan Terkelola untuk kode contoh API Apache Flink](api-examples.md).

Permintaan contoh berikut untuk tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) mengatur paralelisme saat Anda membuat aplikasi:

```
{
   "ApplicationName": "string",
   "RuntimeEnvironment":"FLINK-1_18",
   "ServiceExecutionRole":"arn:aws:iam::123456789123:role/myrole",
   "ApplicationConfiguration": { 
      "ApplicationCodeConfiguration":{
      "CodeContent":{
         "S3ContentLocation":{
            "BucketARN":"arn:aws:s3:::amzn-s3-demo-bucket",
            "FileKey":"myflink.jar",
            "ObjectVersion":"AbCdEfGhIjKlMnOpQrStUvWxYz12345"
            }
         },
      "CodeContentType":"ZIPFILE"
   },   
      "FlinkApplicationConfiguration": { 
         "ParallelismConfiguration": { 
            "AutoScalingEnabled": "true",
            "ConfigurationType": "CUSTOM",
            "Parallelism": 4,
            "ParallelismPerKPU": 4
         }
      }
   }
}
```

Permintaan contoh berikut untuk tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) mengatur paralelisme untuk aplikasi yang sudah ada:

```
{
   "ApplicationName": "MyApplication",
   "CurrentApplicationVersionId": 4,
   "ApplicationConfigurationUpdate": { 
      "FlinkApplicationConfigurationUpdate": { 
         "ParallelismConfigurationUpdate": { 
            "AutoScalingEnabledUpdate": "true",
            "ConfigurationTypeUpdate": "CUSTOM",
            "ParallelismPerKPUUpdate": 4,
            "ParallelismUpdate": 4
         }
      }
   }
}
```

Permintaan contoh berikut untuk tindakan [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) menonaktifkan paralelisme untuk aplikasi yang sudah ada:

```
{
   "ApplicationName": "MyApplication",
   "CurrentApplicationVersionId": 4,
   "ApplicationConfigurationUpdate": { 
      "FlinkApplicationConfigurationUpdate": { 
         "ParallelismConfigurationUpdate": { 
            "AutoScalingEnabledUpdate": "false"
         }
      }
   }
}
```

# Gunakan penskalaan otomatis di Managed Service untuk Apache Flink
<a name="how-scaling-auto"></a>

Layanan Terkelola untuk Apache Flink secara elastis menskalakan paralelisme aplikasi Anda untuk mengakomodasi throughput data sumber Anda dan kompleksitas operator Anda untuk sebagian besar skenario. Penskalaan otomatis diaktifkan secara default. Layanan Terkelola untuk Apache Flink memantau penggunaan sumber daya (CPU) aplikasi Anda, dan secara elastis menskalakan paralelisme aplikasi Anda ke atas atau ke bawah:
+ Aplikasi Anda meningkatkan skala (meningkatkan paralelisme) jika CloudWatch metrik maksimum `containerCPUUtilization` lebih besar dari 75 persen atau lebih selama 15 menit. Itu berarti `ScaleUp` tindakan dimulai ketika ada 15 titik data berturut-turut dengan periode 1 menit sama dengan atau lebih dari 75 persen. Sebuah `ScaleUp` tindakan menggandakan `CurrentParallelism` aplikasi Anda. `ParallelismPerKPU`tidak dimodifikasi. Akibatnya, jumlah yang dialokasikan KPUs juga berlipat ganda. 
+ Aplikasi Anda mengurangi (mengurangi paralelisme) ketika penggunaan CPU Anda tetap di bawah 10 persen selama enam jam. Itu berarti `ScaleDown` tindakan dimulai ketika ada 360 titik data berturut-turut dengan periode 1 menit kurang dari 10 persen. Sebuah `ScaleDown` tindakan membagi dua (membulatkan) paralelisme aplikasi. `ParallelismPerKPU`tidak dimodifikasi, dan jumlah yang dialokasikan KPUs juga menjadi dua (dibulatkan ke atas). 

**catatan**  
Maks periode `containerCPUUtilization` lebih dari 1 menit dapat direferensikan untuk menemukan korelasi dengan titik data yang digunakan untuk tindakan Penskalaan, tetapi tidak perlu untuk mencerminkan momen yang tepat ketika tindakan diinisialisasi.

Layanan Terkelola untuk Apache Flink tidak akan mengurangi `CurrentParallelism` nilai aplikasi Anda menjadi kurang dari pengaturan aplikasi Anda. `Parallelism`

Ketika Layanan Terkelola untuk layanan Apache Flink menskalakan aplikasi Anda, itu akan berada dalam status. `AUTOSCALING` Anda dapat memeriksa status aplikasi Anda saat ini menggunakan [ ListApplications](https://docs.aws.amazon.com//managed-flink/latest/apiv2/API_ListApplications.html)tindakan [ DescribeApplication](https://docs.aws.amazon.com//managed-flink/latest/apiv2/API_DescribeApplication.html)atau. Saat layanan menskalakan aplikasi Anda, satu-satunya tindakan API valid yang dapat Anda gunakan adalah [ StopApplication](https://docs.aws.amazon.com//managed-flink/latest/apiv2/API_ListApplications.html)dengan `Force` parameter yang disetel ke`true`.

Anda dapat menggunakan properti `AutoScalingEnabled` (bagian dari [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_FlinkApplicationConfiguration.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_FlinkApplicationConfiguration.html)) untuk mengaktifkan atau menonaktifkan perilaku penskalaan otomatis. AWS Akun Anda dikenakan biaya untuk KPUs Layanan Terkelola untuk ketentuan Apache Flink yang merupakan fungsi dari aplikasi `parallelism` dan `parallelismPerKPU` pengaturan Anda. Lonjakan aktivitas meningkatkan Layanan Terkelola Anda untuk biaya Apache Flink.

Untuk informasi tentang harga, lihat [Amazon Managed Service untuk harga Apache Flink](https://aws.amazon.com/kinesis/data-analytics/pricing/). 

Perhatikan hal tentang penskalaan aplikasi berikut:
+ Penskalaan otomatis diaktifkan secara default.
+ Penskalaan tidak berlaku untuk notebook Studio. Namun, jika Anda men-deploy notebook Studio sebagai aplikasi dengan status tahan lama, penskalaan akan diterapkan ke aplikasi yang di-deploy.
+ Aplikasi Anda memiliki batas default 64 KPUs. Untuk informasi selengkapnya, lihat [Layanan Terkelola untuk kuota notebook Apache Flink dan Studio](limits.md).
+ Saat penskalaan otomatis memperbarui paralelisme aplikasi, aplikasi mengalami waktu henti. Untuk menghindari waktu henti ini, lakukan hal berikut:
  + Nonaktifkan penskalaan otomatis
  + Konfigurasikan aplikasi Anda `parallelism` dan `parallelismPerKPU` dengan [UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)tindakan. Untuk informasi selengkapnya tentang menyetel setelan paralelisme aplikasi Anda, lihat. [Perbarui paralelisme aplikasi Anda](how-scaling.md#how-scaling-howto)
  + Pantau penggunaan sumber daya aplikasi Anda secara berkala untuk memverifikasi bahwa aplikasi Anda memiliki pengaturan paralelisme yang benar untuk beban kerjanya. Untuk informasi tentang pemantauan penggunaan sumber daya alokasi, lihat [Metrik dan dimensi dalam Layanan Terkelola untuk Apache Flink](metrics-dimensions.md).

## Menerapkan penskalaan otomatis khusus
<a name="how-scaling-custom-autoscaling"></a>

Jika Anda menginginkan kontrol berbutir lebih halus pada penskalaan otomatis atau menggunakan metrik pemicu selain`containerCPUUtilization`, Anda dapat menggunakan contoh ini: 
+ [AutoScaling](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/infrastructure/AutoScaling)

  Contoh ini menggambarkan cara menskalakan Layanan Terkelola untuk aplikasi Apache Flink menggunakan CloudWatch metrik yang berbeda dari aplikasi Apache Flink, termasuk metrik dari Amazon MSK dan Amazon Kinesis Data Streams, yang digunakan sebagai sumber atau sink.

Untuk informasi tambahan, lihat [Pemantauan yang ditingkatkan dan penskalaan otomatis untuk Apache Flink](https://aws.amazon.com/blogs/big-data/enhanced-monitoring-and-automatic-scaling-for-apache-flink/).

## Menerapkan penskalaan otomatis terjadwal
<a name="how-scaling-scheduled-autoscaling"></a>

Jika beban kerja Anda mengikuti profil yang dapat diprediksi dari waktu ke waktu, Anda mungkin lebih suka menskalakan aplikasi Apache Flink Anda terlebih dahulu. Ini menskalakan aplikasi Anda pada waktu yang dijadwalkan, sebagai lawan penskalaan secara reaktif berdasarkan metrik. Untuk mengatur penskalaan naik dan turun pada jam tetap dalam sehari, Anda dapat menggunakan contoh ini:
+ [ScheduledScaling](https://github.com/aws-samples/amazon-managed-service-for-apache-flink-examples/tree/main/infrastructure/ScheduledScaling)

## Pertimbangan MaxParallelism
<a name="how-scaling-auto-max-parallelism"></a>

Paralelisme maksimum yang dapat diskalakan oleh pekerjaan Flink dibatasi oleh *minimum* `maxParallelism` di semua operator pekerjaan. Misalnya, jika Anda memiliki pekerjaan sederhana dengan hanya sumber dan wastafel, dan sumbernya memiliki `maxParallelism` 16 dan wastafel memiliki 8, aplikasi tidak dapat skala melampaui paralelisme 8.

Untuk mempelajari bagaimana default `maxParallelism` operator dihitung dan cara mengganti default, lihat [Mengatur Paralelisme Maksimum](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/dev/datastream/execution/parallel/#setting-the-maximum-parallelism) dalam dokumentasi Apache Flink.

Sebagai aturan dasar, ketahuilah bahwa jika Anda tidak menentukan `maxParallelism` untuk operator mana pun dan Anda memulai aplikasi Anda dengan paralelisme kurang dari atau sama dengan 128, semua operator akan memiliki `maxParallelism` 128.

**catatan**  
Paralelisme maksimum pekerjaan adalah batas atas paralelisme untuk penskalaan aplikasi Anda mempertahankan status.   
Jika Anda `maxParallelism` memodifikasi aplikasi yang ada, aplikasi tidak akan dapat memulai ulang dari snapshot sebelumnya yang diambil dengan yang lama`maxParallelism`. Anda hanya dapat me-restart aplikasi tanpa snapshot.   
Jika Anda berencana untuk menskalakan aplikasi Anda ke paralelisme yang lebih besar dari 128, Anda harus secara eksplisit mengatur dalam `maxParallelism` aplikasi Anda.
+ Logika penskalaan otomatis akan mencegah penskalaan pekerjaan Flink ke paralelisme yang akan melebihi paralelisme maksimum pekerjaan.
+ Jika Anda menggunakan penskalaan otomatis khusus atau penskalaan terjadwal, konfigurasikan agar tidak melebihi paralelisme maksimum pekerjaan.
+ Jika Anda secara manual menskalakan aplikasi Anda di luar paralelisme maksimum, aplikasi gagal untuk memulai.