- `execution.checkpointing.interval`: チェックポイント間のミリ秒単位の間隔。この間隔中に、システムは新しいチェックポイントを生成します
SET 実行チェックポイント間隔 = 6000;
- `execution.checkpointing.tolerable-failed-checkpoints`: 許可される連続失敗チェックポイントの最大数。連続して失敗したチェックポイントの数がこの値を超えると、ジョブは失敗します。
SET 実行.チェックポイントング.許容失敗チェックポイント = 10;
- `execution.checkpointing.timeout`: チェックポイントのタイムアウト (ミリ秒単位)。チェックポイント操作がこの時間内に完了しない場合、ジョブは失敗します。
SET 実行.チェックポイント.タイムアウト =600000;
- `execution.checkpointing.externalized-checkpoint-retention`: 外部化されたチェックポイントの保持ポリシー。「RETAIN_ON_CANCELLATION」は、ジョブのキャンセル時に外部化されたチェックポイントを保持することを意味します。
SET 実行.チェックポイントング.外部化チェックポイント保持 = RETAIN_ON_CANCELLATION;
- `execution.checkpointing.mode`: チェックポイントモード。「EXACTLY_ONCE」は、ジョブがちょうど 1 回処理された場合にのみ各チェックポイントが生成されることを意味します。
SET 実行.チェックポイントモード = EXACTLY_ONCE;
- `execution.checkpointing.unaligned`: チェックポイントが整列されているかどうか。「true」に設定すると、ジョブのすべてのタスクが完了する前にチェックポイントが生成されます。
SET 実行.checkpointing.unaligned = true;
- `execution.checkpointing.max-concurrent-checkpoints`: 同時に生成されるチェックポイントの最大数。この数のチェックポイントが生成されるまで、新しいチェックポイントは生成されません。
SET 実行.チェックポイント.最大同時チェックポイント = 1;
- `state.checkpoints.num-retained`: 保持されているチェックポイントの数。この数を超えるチェックポイントは削除されます
SET state.checkpoints.num-retained = 3;
まだ使用されていません
SET 実行チェックポイント間隔 = 6000;
SET 実行.チェックポイントング.許容失敗チェックポイント = 10;
SET 実行.チェックポイント.タイムアウト =600000;
SET 実行.チェックポイントング.外部化チェックポイント保持 = RETAIN_ON_CANCELLATION;
SET 実行.チェックポイントモード = EXACTLY_ONCE;
SET 実行.checkpointing.unaligned = true;
SET 実行.チェックポイント.最大同時チェックポイント = 1;
SET state.checkpoints.num-retained = 3;
yaml ファイルで機能する構成情報は次のとおりです。
flinkConfiguration:
taskmanager.numberOfTaskSlots: "36"
state.backend: Rocksdb
state.checkpoint-storage: ファイルシステム
state.checkpoints.num-retained: "3"
state.backend.incremental: "true"
state.savepoints.dir: file:/ //flink-data/savepoints
state.checkpoints.dir: file:///flink-data/checkpoints
high-availability.type: kubernetes
high-availability: org.apache.flink.kubernetes.highavailability.KubernetesHaServicesFactory # JobManager HA
high- availability.storageDir: file:///opt/flink/flink_recovery # JobManager HAデータ保存路
serviceAccount: flink
にログインする
kubectl -n flink exec -it session-deployment-only-taskmanager-2-1 bash
cat flink-conf.yaml を表示する
blob.server.port: 6124
kubernetes.jobmanager.annotations: flinkdeployment.flink.apache.org/generation:2
state.checkpoints.num-retained: 3
kubernetes.jobmanager.replicas: 2
high-availability.type: kubernetes
高可用性.cluster-id: session-deployment-only
state.savepoints.dir: file:///flink-data/savepoints
kubernetes.taskmanager.cpu: 4.0
kubernetes.service-account: flink
kubernetes.cluster-id: session-deployment-
state.checkpoint-storageのみ: ファイルシステム
high-availability.storageDir: file:///opt/flink/flink_recovery
kubernetes.internal.taskmanager.replicas: 1
kubernetes.container.image: localhost:5000/flink-sql:1.14.21
並列処理.デフォルト: 1
kubernetes.namespace: flink
taskmanager.numberOfTaskSlots: 36
kubernetes.rest-service.exused.type: ClusterIP
high-availability.jobmanager.port: 6123
kubernetes.jobmanager.owner.reference: blockOwnerDeletion:false,apiVersion:flink.apache.org/ v1beta1、kind:FlinkDeployment、uid:fadef756-d327-4f19-b1b4-181d92c659eb、name:session-deployment-only、controller:false
taskmanager.memory.process.size:6048m
kubernetes.internal.jobmanager.entrypoint.class:org. apache.flink.kubernetes.entrypoint.KubernetesSessionClusterEntrypoint
kubernetes.pod-template-file: /tmp/flink_op_generated_podTemplate_4716243666145995447.yaml
state.backend.incremental: true
web.cancel.enable: false
education.target: kubernetes-session
jobmanager.memory.process.size: 1024m
taskmanager.rpc.port: 6122
kubernetes.container.image.pull-policy: IfNotPresent
external.cluster.execution-mode: NORMAL
高可用性: org.apache.flink.kubernetes.highavailability。 KubernetesHaServicesFactory
kubernetes.jobmanager.cpu: 1.0
state.backend: Rocksdb
$internal.flink.version: v1_14
state.checkpoints.dir: file:///flink-data/checkpoints
生成されるchkファイルは3つだけです
chk-X は、チェックポイントのメタデータとデータを保存するチェックポイント情報を表します。
taskowned: タスクマネージャーが所有する状態
共有: 共有状態
デフォルトでは、チェックポイント オプションが設定されている場合、Flink は最後に正常に生成されたチェックポイントのみを保持します。Flink プログラムが失敗した場合、最新のチェックポイントから回復できます。ただし、複数のチェックポイントを保持し、実際のニーズに応じてそのうちの 1 つを回復用に選択できるようにする場合は、より柔軟になります。Flink は、複数のチェックポイントの保持をサポートしています。保存する必要があるチェックポイントの最大数を指定するには、Flink 構成ファイル conf/flink-conf.yaml に次の構成を追加する必要があります。たとえば、最新の 10 個のチェックポイント (つまり、つまり、上記の 10 chk を保持します -X):
state.checkpoints.num-retained: 10
ps1: チェックポイント ディレクトリが削除された場合、チェックポイントから復元するタスクを指定できません
ps2: 手動キャンセルではなくジョブが失敗した場合、上記のどの戦略が選択されても、状態レコードは保持されます。
ps3: RocksDB は増分チェックポイントのストレージとして使用され、定期的な遅延マージを実行して履歴状態をクリアできます。
最終的な yaml 構成は次のとおりです。
#Flink セッション クラスターのソース コードは、
apiVersion: flink.apache.org/v1beta1にアクセスしてください。
kind: FlinkDeployment
メタデータ:
namespace: flink
name: session-deployment-only
spec:
image: 192.168.1.249:16443/bigdata/flink-sql:1.14 .21
#image: localhost:5000/flink-sql:1.14.21
flinkVersion: v1_14
#imagePullPolicy: Never # ImagePullPolicy: ローカル imagePullPolicy がない場合:
IfNotPresent
ingress: #Ingress 構成、flink Web ページ
テンプレートへのアクセスに使用されます: "flink .k8s.io"
className: "nginx"
注釈:
nginx.ingress.kubernetes.io/rewrite-target: "/"
flinkConfiguration:
taskmanager.numberOfTaskSlots: "48"
state.backend:rocksdb
state.checkpoint-storage:ファイルシステム
state.checkpoints.num-retained:「20」
state.backend.incremental:「true」
state.savepoints.dir:file:///opt/flink/volume/flink -sp
state.checkpoints.dir: file:///opt/flink/volume/flink-cp
high-availability: org.apache.flink.kubernetes.highavailability.KubernetesHaServicesFactory # JobManager HA
high-availability.storageDir: file:// /opt/flink/volume/flink-ha # JobManager HA データ保存路径
serviceAccount: flink
jobManager:
レプリカ: 2
resource:
メモリ: "1024m"
cpu: 1
taskManager:
レプリカ: 1
resource:
メモリ: "6048m"
cpu: 4
podTemplate:
spec:
hostAliases:
- ip: "192.168.1.236"
ホスト名:
- "sql.server"
- ip: "192.168.1.246"
ホスト名:
- "dris.server"
コンテナ:
- 名前: flink-main-container
env:
- 名前: TZ
値: アジア/上海
volumeMounts:
- 名前: flink-volume #挂下チェックポイント pvc
mountPath: /opt/flink/volume
ボリューム:
- 名前: flink-volumepersistentVolumeClaim
:
クレーム名: flink-checkpoint-pvc
塩ビ:
#Flinnk Checkpoint Persistent Storage pvc
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: flink-checkpoint-pvc # Checkpoint pvc name namespace
: flink # ネームスペースを指定します
spec:
storageClassName: nfs-client #sc 名、実際の sc 名の
accessModesに変更します:
- ReadWriteMany #ReadWriteMany のアクセス モードを使用します
リソース:
リクエスト:
ストレージ: 20Gi #ストレージ容量、実際のニーズに応じて変更します