Skip to main content

Execute Sample Flink Job

Prerequisites

Set the env variables for the job execution role and s3 bucket name :

source set-env.sh

Navigate to example directory and submit the Flink job.

cd examples/flink/karpenter

Modify the basic-example-app-cluster.yaml by replacing the placeholders with values from the two env variables above.

envsubst < basic-example-app-cluster.yaml > basic-example-app-cluster1.yaml

Deploy the job by running the kubectl deploy command.

kubectl apply -f basic-example-app-cluster1.yaml

Monitor the job status using the below command. You should see the new nodes triggered by the karpenter and the YuniKorn will schedule one Job manager pod and one Taskmanager pods on this node.

kubectl get deployments -n emr-data-team-a
NAME                              READY   UP-TO-DATE   AVAILABLE   AGE
basic-example-karpenter-flink 2/2 2 2 3h6m
kubectl get pods -n emr-data-team-a
NAME                                               READY   STATUS    RESTARTS   AGE
basic-example-karpenter-flink-7c7d9c6fd9-cdfmd 2/2 Running 0 3h7m
basic-example-karpenter-flink-7c7d9c6fd9-pjxj2 2/2 Running 0 3h7m
basic-example-karpenter-flink-taskmanager-1-1 2/2 Running 0 3h6m
kubectl get services -n emr-data-team-a
NAME                                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
basic-example-karpenter-flink-rest ClusterIP 172.20.17.152 <none> 8081/TCP 3h7m

To access the Flink WebUI for the job, run this command locally.

kubectl port-forward svc/basic-example-karpenter-flink-rest 8081 -n emr-data-team-a

Flink Job UI Flink Job UI Flink Job UI Flink Job UI Flink Job UI