Cette rubrique explique comment soumettre une tâche Flink.
Prérequis
Vous avez créé un cluster Flink dans la console EMR on ACK. Pour plus d'informations, consultez la section Prise en main.
Remarques
Dans les exemples de cette rubrique, le fichier JAR est déjà intégré à l'image. Si vous utilisez votre propre fichier JAR, téléchargez-le sur Alibaba Cloud OSS. Pour plus d'informations, consultez la section Téléchargement simple.
Remplacez ensuite local:///opt/flink/examples/streaming/StateMachineExample.jar dans la configuration par le chemin d'accès à votre fichier JAR sur Alibaba Cloud OSS. Le chemin doit respecter le format suivant : oss://<yourBucketName>/<path>.jar.
Méthode 1 : Soumettre une tâche depuis la console ACK
Connectez-vous à la console EMR on ACK.
Sur la page EMR on ACK, localisez le cluster cible et cliquez sur le lien figurant dans la colonne ACK Cluster.
Sur la page Pods, cliquez sur Create Resources in YAML en haut à droite.
-
Sur la page create, sélectionnez Custom dans la liste Sample Template, collez le contenu suivant dans l'éditeur, puis cliquez sur create.
apiVersion: flink.apache.org/v1beta1 kind: FlinkDeployment metadata: name: basic-emr-example spec: flinkVersion: v1_13 flinkConfiguration: taskmanager.numberOfTaskSlots: "2" state.savepoints.dir: file:///flink-data/flink-savepoints state.checkpoints.dir: file:///flink-data/flink-checkpoints serviceAccount: flink podTemplate: spec: serviceAccount: flink containers: - name: flink-main-container volumeMounts: - mountPath: /flink-data name: flink-volume volumes: - name: flink-volume emptyDir: {} jobManager: replicas: 1 resource: memory: "2048m" cpu: 1 taskManager: resource: memory: "2048m" cpu: 1 job: jarURI: local:///opt/flink/examples/streaming/StateMachineExample.jar parallelism: 2 upgradeMode: statelessRemarqueCet exemple utilise Flink 1.13. Si vous utilisez une version différente de Flink, mettez à jour le paramètre flinkVersion en conséquence.
Méthode 2 : Soumettre une tâche à l'aide de kubectl
-
Connectez-vous à votre cluster Kubernetes à l'aide de kubectl. Pour plus d'informations, consultez la section Obtenir le fichier KubeConfig d'un cluster et utiliser kubectl pour se connecter au cluster.
Vous pouvez également vous connecter au cluster Kubernetes par d'autres méthodes, telles qu'une API. Pour plus d'informations, consultez la section Utiliser l'API Kubernetes.
-
Créez un fichier nommé basic-emr-example.yaml avec le contenu suivant.
apiVersion: flink.apache.org/v1beta1 kind: FlinkDeployment metadata: name: basic-emr-example spec: flinkVersion: v1_13 flinkConfiguration: taskmanager.numberOfTaskSlots: "2" state.savepoints.dir: file:///flink-data/flink-savepoints state.checkpoints.dir: file:///flink-data/flink-checkpoints serviceAccount: flink podTemplate: spec: serviceAccount: flink containers: - name: flink-main-container volumeMounts: - mountPath: /flink-data name: flink-volume volumes: - name: flink-volume emptyDir: {} jobManager: replicas: 1 resource: memory: "2048m" cpu: 1 taskManager: resource: memory: "2048m" cpu: 1 job: jarURI: local:///opt/flink/examples/streaming/StateMachineExample.jar parallelism: 2 upgradeMode: statelessRemarqueVous pouvez utiliser un nom de fichier personnalisé. Cet exemple utilise basic-emr-example.yaml.
Cet exemple utilise Flink 1.13. Si vous utilisez une version différente de Flink, mettez à jour le paramètre flinkVersion en conséquence.
-
Exécutez la commande suivante pour soumettre la tâche.
kubectl apply -f basic-emr-example.yaml --namespace <cluster-namespace>RemarqueRemplacez
<cluster-namespace>par le namespace de votre cluster. Vous trouverez le namespace sur la page de gestion du cluster dans la console EMR on ACK.