flink SQLチェックポイントチューニング構成

- `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 #ストレージ容量、実際のニーズに応じて変更します

おすすめ

転載: blog.csdn.net/wangqiaowq/article/details/132401263