

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Apache Flink 설정
<a name="reference-flink-settings.title"></a>

Managed Service for Apache Flink는 Apache Flink 프레임워크를 구현한 것입니다. Managed Service for Apache Flink는 이 섹션에 설명된 기본값을 사용합니다. 이러한 값 중 일부는 Managed Service for Apache Flink 애플리케이션에서 코드로 설정할 수 있고 다른 값은 변경할 수 없습니다.

이 섹션의 링크를 사용하여 Apache flink 설정과 수정 가능한 항목에 대해 자세히 알아보세요.

**Topics**
+ [Apache Flink 구성](#apache-flink-configuration)
+ [상태 백엔드](#reference-defaults-state-backend)
+ [체크포인트](#reference-defaults-checkpoint)
+ [세이브포인팅](#reference-defaults-savepoint)
+ [힙 크기](#reference-defaults-heap)
+ [버퍼 디블로팅](#reference-defaults-buffer-debloating)
+ [수정 가능한 Flink 구성 속성](reference-modifiable-settings.md)
+ [프로그래밍 방식 Flink 구성 속성](programmatic-configuration.md)
+ [구성된 Flink 속성 보기](viewing-modifiable-settings.md)

## Apache Flink 구성
<a name="apache-flink-configuration"></a>

Managed Service for Apache Flink는 대부분의 속성에 대한 Apache Flink 권장 값과 일반적인 응용 프로그램 프로필을 기반으로 하는 몇 가지 값으로 구성된 기본 Flink 구성을 제공합니다. Flink 구성에 대한 자세한 내용은 [구성](https://nightlies.apache.org/flink/flink-docs-master/docs/deployment/config/)을 참조하세요. 서비스 제공 기본 구성은 대부분의 애플리케이션에서 작동합니다. 그러나 Flink 구성 속성을 조정하여 병렬성이 높고 메모리 및 상태 사용량이 많은 애플리케이션의 성능을 개선하거나 Apache Flink의 새로운 디버깅 기능을 활성화하려면 지원 사례를 요청하여 일부 속성을 변경할 수 있습니다. 자세한 내용은 [AWS 지원 센터](https://console.aws.amazon.com/support/home#/)를 참조하세요. [Apache Flink 대시보드](https://docs.aws.amazon.com/managed-flink/latest/java/how-dashboard.html)를 사용하여 애플리케이션의 현재 구성을 확인할 수 있습니다.

## 상태 백엔드
<a name="reference-defaults-state-backend"></a>

Managed Service for Apache Flink 는 임시 데이터를 상태 백엔드에 저장합니다. Managed Service for Apache Flink는 **RockSDBStateBackEnd**를 사용합니다. 다른 백엔드를 설정하기 위해 `setStateBackend`을(를) 호출해도 효과가 없습니다.

상태 백엔드에서 다음 기능을 활성화합니다.
+ 증분 상태 백엔드 스냅샷
+ 비동기 상태 백엔드 스냅샷
+ 체크포인트 로컬 복구

상태 백엔드에 관한 자세한 내용은 Apache Flink 설명서의 [상태 백엔드](https://nightlies.apache.org/flink/flink-docs-release-1.19/ops/state/state_backends.html)를 참조하세요.

## 체크포인트
<a name="reference-defaults-checkpoint"></a>

Managed Service for Apache Flink는 다음 값이 포함된 기본 체크포인트 구성을 사용합니다. 이러한 값 중 일부는 [CheckpointConfiguration](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CheckpointConfiguration.html)을 사용하여 변경할 수 있습니다. Managed Service for Apache Flink에서 수정된 체크포인트 값을 사용하려면 `CheckpointConfiguration.ConfigurationType`을 `CUSTOM`으로 설정해야 합니다.


****  

| 설정 | 수정할 수 있나요? | 수정할 수 있다면 방법이 무엇입니까? | 기본 값 | 
| --- | --- | --- | --- | 
| CheckpointingEnabled | 수정 가능 | [애플리케이션 생성](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplication.html) [애플리케이션 업데이트](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html) [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_KinesisAnalyticsV2.html)  | True | 
| CheckpointInterval | 수정 가능 | [애플리케이션 생성](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplication.html) [애플리케이션 업데이트](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html) [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_KinesisAnalyticsV2.html)  | 60000 | 
| MinPauseBetweenCheckpoints | 수정 가능 | [애플리케이션 생성](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplication.html) [애플리케이션 업데이트](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html) [CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_KinesisAnalyticsV2.html)  | 5000 | 
| 정렬되지 않은 체크포인트 | 수정 가능 | [지원 사례](https://console.aws.amazon.com/support/home#/) | False | 
| 동시 체크포인트 수 | 수정 불가능 | 해당 사항 없음 | 1 | 
| 체크포인트 모드 | 수정 불가능 | 해당 사항 없음 | 딱 한 번 | 
| 체크포인트 보존 정책 | 수정 불가능 | 해당 사항 없음 | 실패 시 | 
| 체크포인트 타임아웃 | 수정 불가능 | 해당 사항 없음 | 60분 | 
| 유지된 최대 체크포인트 | 수정 불가능 | 해당 사항 없음 | 1 | 
| 체크포인트 및 세이브포인트 위치 | 수정 불가능 | 해당 사항 없음 | 내구성이 뛰어난 체크포인트와 세이브포인트 데이터를 서비스 소유의 S3 버킷에 저장합니다. | 

## 세이브포인팅
<a name="reference-defaults-savepoint"></a>

기본적으로 저장점에서 복원할 때 재개 작업은 저장점의 모든 상태를 복원 중인 프로그램에 다시 매핑하려고 시도합니다. 연산자를 삭제한 경우 기본적으로 누락된 연산자에 해당하는 데이터가 있는 저장점에서의 복원은 실패합니다. 응용 프로그램 [FlinkRunConfiguration](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_FlinkRunConfiguration.html)의 *AllowNonRestoredState* 파라미터를 `true`(으)로 설정하여 작업이 성공하도록 허용할 수 있습니다. 이렇게 하면 재개 작업이 새 프로그램에 매핑할 수 없는 상태를 건너뛰도록 할 수 있습니다.

자세한 내용을 알아보려면 [Apache Flink의 설명서](https://nightlies.apache.org/flink/flink-docs-release-1.15/)에서 [복원되지 않은 상태 허용](https://nightlies.apache.org/flink/flink-docs-release-1.15/ops/state/savepoints.html#allowing-non-restored-state)을 참조하세요.

## 힙 크기
<a name="reference-defaults-heap"></a>

Managed Service for Apache Flink는 JVM 힙의 각 KPU 3 GiB를 할당하고 네이티브 코드 할당을 위해 1 GiB를 예약합니다. 애플리케이션 용량 증가에 대한 자세한 내용은 [Managed Service for Apache Flink의 애플리케이션 조정 구현](how-scaling.md) 섹션을 참조하세요.

JVM 힙 크기에 대한 자세한 내용은 [Apache Flink 설명서](https://nightlies.apache.org/flink/flink-docs-release-1.15/)의 [구성](https://nightlies.apache.org/flink/flink-docs-release-1.15/ops/config.html)을 참조하세요.

## 버퍼 디블로팅
<a name="reference-defaults-buffer-debloating"></a>

버퍼 디블로팅은 배압이 높은 어플리케이션에 도움이 될 수 있습니다. 애플리케이션에 체크포인트/세이브포인트에 장애가 발생하는 경우 이 기능을 활성화하면 유용할 수 있습니다. 이를 위해서는 [지원 사례](https://console.aws.amazon.com/support/home#/)를 요청하세요.

자세한 내용은 [Apache Flink 설명서](https://nightlies.apache.org/flink/flink-docs-release-1.15/)의 [버퍼 디블로팅 메커니즘](https://nightlies.apache.org/flink/flink-docs-release-1.15/docs/deployment/memory/network_mem_tuning/#the-buffer-debloating-mechanism)을 참조하세요.

# 수정 가능한 Flink 구성 속성
<a name="reference-modifiable-settings"></a>

다음은 [지원 사례](https://console.aws.amazon.com/support/home#/)를 사용하여 수정할 수 있는 Flink 구성 설정입니다. 애플리케이션 접두사를 지정하여 한 번에 둘 이상의 속성을 수정할 수 있으며 여러 애플리케이션의 속성을 동시에 수정할 수 있습니다. 이 목록 외에 수정하려는 다른 Flink 구성 속성이 있는 경우 케이스에 맞는 정확한 속성을 지정하세요.

## 재시작 전략
<a name="reference-modifiable-settings-fault-tolerance"></a>

Flink 1.19 이상에서는 기본적으로 `exponential-delay` 재시작 전략을 사용합니다. 모든 이전 버전은 기본적으로 `fixed-delay` 재시작 전략을 사용합니다.

`restart-strategy:`

`restart-strategy.fixed-delay.delay:`

`restart-strategy.exponential-delay.backoff-muliplier:`

`restart-strategy.exponential-delay.initial-backoff:`

`restart-strategy.exponential-delay.jitter-factor:`

`restart-strategy.exponential-delay.reset-backoff-threshold:`

## 체크포인트 및 상태 백엔드
<a name="reference-modifiable-settings-checkpoints-state-backends"></a>

`state.backend.type:`

`state.backend.fs.memory-threshold:`

`state.backend.incremental:`

## 체크포인트
<a name="reference-modifiable-settings-checkpointing"></a>

`execution.checkpointing.unaligned:`

`execution.checkpointing.interval-during-backlog:`

## RocksDB 네이티브 지표
<a name="reference-modifiable-settings-rocksdb"></a>

RocksDB 네이티브 지표는 CloudWatch에 제공되지 않습니다. 활성화되면 Flink 대시보드 또는 사용자 지정 도구를 사용하여 Flink REST API에서 이러한 지표에 액세스할 수 있습니다.

Managed Service for Apache Flink를 통해 고객은 [CreateApplicationPresignedURL](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_CreateApplicationPresignedUrl.html) API를 사용하여 읽기 전용 모드에서 최신 Flink [REST API](https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/ops/rest_api/) (또는 사용 중인 지원 버전) 에 액세스할 수 있습니다. 이 API는 Flink의 자체 대시보드에서 사용되지만 사용자 지정 모니터링 도구에서도 사용할 수 있습니다.

`state.backend.rocksdb.metrics.actual-delayed-write-rate:`

`state.backend.rocksdb.metrics.background-errors:`

`state.backend.rocksdb.metrics.block-cache-capacity:`

`state.backend.rocksdb.metrics.block-cache-pinned-usage:`

`state.backend.rocksdb.metrics.block-cache-usage:`

`state.backend.rocksdb.metrics.column-family-as-variable:`

`state.backend.rocksdb.metrics.compaction-pending:`

`state.backend.rocksdb.metrics.cur-size-active-mem-table:`

`state.backend.rocksdb.metrics.cur-size-all-mem-tables:`

`state.backend.rocksdb.metrics.estimate-live-data-size:`

`state.backend.rocksdb.metrics.estimate-num-keys:`

`state.backend.rocksdb.metrics.estimate-pending-compaction-bytes:`

`state.backend.rocksdb.metrics.estimate-table-readers-mem:`

`state.backend.rocksdb.metrics.is-write-stopped:`

`state.backend.rocksdb.metrics.mem-table-flush-pending:`

`state.backend.rocksdb.metrics.num-deletes-active-mem-table:`

`state.backend.rocksdb.metrics.num-deletes-imm-mem-tables:`

`state.backend.rocksdb.metrics.num-entries-active-mem-table:`

`state.backend.rocksdb.metrics.num-entries-imm-mem-tables:`

`state.backend.rocksdb.metrics.num-immutable-mem-table:`

`state.backend.rocksdb.metrics.num-live-versions:`

`state.backend.rocksdb.metrics.num-running-compactions:`

`state.backend.rocksdb.metrics.num-running-flushes:`

`state.backend.rocksdb.metrics.num-snapshots:`

`state.backend.rocksdb.metrics.size-all-mem-tables:`

## RocksDB 옵션
<a name="reference-modifiable-settings-rocksdb-options"></a>

`state.backend.rocksdb.compaction.style:`

`state.backend.rocksdb.memory.partitioned-index-filters:`

`state.backend.rocksdb.thread.num:`

## 고급 상태 백엔드 옵션
<a name="reference-modifiable-settings-advanced-state-backends-options"></a>

`state.storage.fs.memory-threshold:`

## 전체 작업 관리자 옵션
<a name="reference-modifiable-settings-full-task-manager-options"></a>

`task.cancellation.timeout:`

`taskmanager.jvm-exit-on-oom:`

`taskmanager.numberOfTaskSlots:`

`taskmanager.slot.timeout:`

`taskmanager.memory.network.fraction:`

`taskmanager.memory.network.max:`

`taskmanager.network.request-backoff.initial:`

`taskmanager.network.request-backoff.max:`

`taskmanager.network.memory.buffer-debloat.enabled:`

`taskmanager.network.memory.buffer-debloat.period:`

`taskmanager.network.memory.buffer-debloat.samples:`

`taskmanager.network.memory.buffer-debloat.threshold-percentages:`

## 메모리 구성
<a name="reference-modifiable-settings-memory-configuration"></a>

`taskmanager.memory.jvm-metaspace.size:`

`taskmanager.memory.jvm-overhead.fraction:`

`taskmanager.memory.jvm-overhead.max:`

`taskmanager.memory.managed.consumer-weights:`

`taskmanager.memory.managed.fraction:`

`taskmanager.memory.network.fraction:`

`taskmanager.memory.network.max:`

`taskmanager.memory.segment-size:`

`taskmanager.memory.task.off-heap.size:`

## RPC / Akka
<a name="reference-modifiable-settings-RPC-Akka"></a>

`akka.ask.timeout:`

`akka.client.timeout:`

`akka.framesize:`

`akka.lookup.timeout:`

`akka.tcp.timeout:`

## 클라이언트
<a name="reference-modifiable-settings-client"></a>

`client.timeout:`

## 고급 클러스터 옵션
<a name="reference-modifiable-settings-advanced-cluster-options"></a>

`cluster.intercept-user-system-exit:`

`cluster.processes.halt-on-fatal-error:`

## 파일 시스템 구성
<a name="reference-modifiable-settings-advanced-filesystem-configurations"></a>

`fs.s3.connection.maximum:`

`fs.s3a.connection.maximum:`

`fs.s3a.threads.max:`

`s3.upload.max.concurrent.uploads:`

## 고급 내결함성 옵션
<a name="reference-modifiable-settings-advanced-fault-tolerance-options"></a>

`heartbeat.timeout:`

`jobmanager.execution.failover-strategy:`

## 메모리 구성
<a name="reference-modifiable-settings-memory-configuration"></a>

`jobmanager.memory.heap.size:`

## Metrics
<a name="reference-modifiable-settings-metrics"></a>

`metrics.latency.interval:`

## REST 엔드포인트 및 클라이언트를 위한 고급 옵션
<a name="reference-modifiable-settings-rest"></a>

`rest.flamegraph.enabled:`

`rest.server.numThreads:`

## 고급 SSL 보안 옵션
<a name="reference-modifiable-settings-ssl"></a>

`security.ssl.internal.handshake-timeout:`

## 고급 스케줄링 옵션
<a name="reference-modifiable-settings-scheduling"></a>

`slot.request.timeout:`

## Flink 웹 UI의 고급 옵션
<a name="reference-modifiable-settings-webui"></a>

`web.timeout:`

# 프로그래밍 방식 Flink 구성 속성
<a name="programmatic-configuration"></a>

다음은 애플리케이션 코드에서 직접 수정할 수 있는 Flink 구성 속성입니다. MSF 2.2부터 애플리케이션 코드의이 페이지에 나열되지 않은 속성을 수정하려고 하면 예외가 발생합니다.

**참고**  
이러한 속성은 AWS 지원 사례를 통해 수정된 설정과 다릅니다. TaskManager 메모리, 상태 백엔드, RocksDB 튜닝 및 재시작 전략과 같은 인프라 수준 설정은 섹션을 참조하세요[수정 가능한 Flink 구성 속성](reference-modifiable-settings.md).

## 파이프라인 구성
<a name="programmatic-configuration-pipeline"></a>

`execution.runtime-mode`

`pipeline.auto-generate-uids`

`pipeline.auto-watermark-interval`

`pipeline.cached-files`

`pipeline.classpaths`

`pipeline.closure-cleaner-level`

`pipeline.force-avro`

`pipeline.force-kryo`

`pipeline.generic-types`

`pipeline.global-job-parameters`

`pipeline.jars`

`pipeline.jobvertex-parallelism-overrides`

`pipeline.max-parallelism`

`pipeline.name`

`pipeline.object-reuse`

`pipeline.operator-chaining.chain-operators-with-different-max-parallelism`

`pipeline.operator-chaining.enabled`

`pipeline.serialization-config`

`pipeline.vertex-description-mode`

`pipeline.vertex-name-include-index-prefix`

`pipeline.watermark-alignment.allow-unaligned-source-splits`

## Python API
<a name="programmatic-configuration-python"></a>

`python.execution-mode`

`python.operator-chaining.enabled`

`python.job-options`

`python.internal.archives-key-map`

`python.internal.files-key-map`

`python.internal.requirements-file-key`

## 테이블 API/SQL
<a name="programmatic-configuration-table-api"></a>

`table.exec.async-lookup.buffer-capacity`

`table.exec.async-lookup.key-ordered-enabled`

`table.exec.async-lookup.output-mode`

`table.exec.async-lookup.timeout`

`table.exec.async-ml-predict.max-concurrent-operations`

`table.exec.async-ml-predict.output-mode`

`table.exec.async-ml-predict.timeout`

`table.exec.async-scalar.max-concurrent-operations`

`table.exec.async-scalar.max-attempts`

`table.exec.async-scalar.retry-delay`

`table.exec.async-scalar.retry-strategy`

`table.exec.async-scalar.timeout`

`table.exec.async-state.enabled`

`table.exec.async-table.max-concurrent-operations`

`table.exec.async-table.max-retries`

`table.exec.async-table.retry-delay`

`table.exec.async-table.retry-strategy`

`table.exec.async-table.timeout`

`table.exec.async-vector-search.max-concurrent-operations`

`table.exec.async-vector-search.output-mode`

`table.exec.async-vector-search.timeout`

`table.exec.deduplicate.insert-update-after-sensitive-enabled`

`table.exec.deduplicate.mini-batch.compact-changes-enabled`

`table.exec.delta-join.cache-enabled`

`table.exec.disabled-operators`

`table.exec.iceberg.use-v2-sink`

`table.exec.interval-join.min-cleanup-interval`

`table.exec.legacy-cast-behaviour`

`table.exec.local-hash-agg.adaptive.distinct-value-rate-threshold`

`table.exec.local-hash-agg.adaptive.enabled`

`table.exec.local-hash-agg.adaptive.sampling-threshold`

`table.exec.mini-batch.allow-latency`

`table.exec.mini-batch.enabled`

`table.exec.mini-batch.size`

`table.exec.operator-fusion-codegen.enabled`

`table.exec.simplify-operator-name-enabled`

`table.exec.sink.keyed-shuffle`

`table.exec.sink.nested-constraint-enforcer`

`table.exec.sink.not-null-enforcer`

`table.exec.sink.rowtime-inserter`

`table.exec.sink.type-length-enforcer`

`table.exec.sink.upsert-materialize`

`table.exec.sink.upsert-materialize-strategy.adaptive.threshold.high`

`table.exec.sink.upsert-materialize-strategy.adaptive.threshold.low`

`table.exec.sink.upsert-materialize-strategy.type`

`table.exec.sort.async-merge-enabled`

`table.exec.sort.default-limit`

`table.exec.sort.max-num-file-handles`

`table.exec.source.cdc-events-duplicate`

`table.exec.source.idle-timeout`

`table.exec.spill-compression.block-size`

`table.exec.spill-compression.enabled`

`table.exec.state.ttl`

`table.exec.uid.format`

`table.exec.uid.generation`

`table.exec.unbounded-over.version`

`table.exec.window-agg.buffer-size-limit`

`table.optimizer.agg-phase-strategy`

`table.optimizer.adaptive-broadcast-join.strategy`

`table.optimizer.bushy-join-reorder-threshold`

`table.optimizer.delta-join.strategy`

`table.optimizer.distinct-agg.split.bucket-num`

`table.optimizer.distinct-agg.split.enabled`

`table.optimizer.dynamic-filtering.enabled`

`table.optimizer.incremental-agg-enabled`

`table.optimizer.join-reorder-enabled`

`table.optimizer.multi-join.enabled`

`table.optimizer.multiple-input-enabled`

`table.optimizer.non-deterministic-update.strategy`

`table.optimizer.reuse-optimize-block-with-digest-enabled`

`table.optimizer.reuse-sink-enabled`

`table.optimizer.reuse-source-enabled`

`table.optimizer.reuse-sub-plan-enabled`

`table.optimizer.runtime-filter.enabled`

`table.optimizer.skewed-join-optimization.skewed-factor`

`table.optimizer.skewed-join-optimization.skewed-threshold`

`table.optimizer.skewed-join-optimization.strategy`

`table.optimizer.source.report-statistics-enabled`

`table.optimizer.union-all-as-breakpoint-enabled`

`table.builtin-catalog-name`

`table.builtin-database-name`

`table.catalog-modification.listeners`

`table.column-expansion-strategy`

`table.display.max-column-width`

`table.dml-sync`

`table.dynamic-table-options.enabled`

`table.generated-code.max-length`

`table.legacy-nested-row-nullability`

`table.local-time-zone`

`table.plan.compile.catalog-objects`

`table.plan.force-recompile`

`table.plan.restore.catalog-objects`

`table.rtas-ctas.atomicity-enabled`

`table.sql-dialect`

# 구성된 Flink 속성 보기
<a name="viewing-modifiable-settings"></a>

Apache Flink Dashboard를 통해 다음 단계에 따라 [지원 사례](https://support.console.aws.amazon.com/support/home#/)를 통해 직접 구성했거나 수정을 요청한 Apache Flink 속성을 볼 수 있습니다.

1. Flink Dashboard로 이동

1. 왼쪽 탐색 창에서 **Job Manager**를 선택합니다.

1. **구성**을 선택하여 Flink 속성 목록을 확인합니다.