From d2e7f7e5bc34dc30fae36de6eb4876c1c8c4c4db Mon Sep 17 00:00:00 2001 From: Malte Sander Date: Thu, 17 Jul 2025 10:58:52 +0200 Subject: [PATCH 1/8] wip --- .../create-nifi-ingestion-job.yaml | 11 +++++++++-- .../create-spark-ingestion-job.yaml | 19 ++++++++++++++++--- .../create-trino-tables.yaml | 9 ++++++++- .../setup-superset.yaml | 8 ++++++-- .../nifi.yaml | 7 ++++--- .../trino.yaml | 7 ++++--- 6 files changed, 47 insertions(+), 14 deletions(-) diff --git a/demos/data-lakehouse-iceberg-trino-spark/create-nifi-ingestion-job.yaml b/demos/data-lakehouse-iceberg-trino-spark/create-nifi-ingestion-job.yaml index 59968ee2..0f36d867 100644 --- a/demos/data-lakehouse-iceberg-trino-spark/create-nifi-ingestion-job.yaml +++ b/demos/data-lakehouse-iceberg-trino-spark/create-nifi-ingestion-job.yaml @@ -10,7 +10,14 @@ spec: initContainers: - name: wait-for-kafka image: oci.stackable.tech/sdp/tools:1.0.0-stackable0.0.0-dev - command: ["bash", "-c", "echo 'Waiting for all kafka brokers to be ready' && kubectl wait --for=condition=ready --timeout=30m pod -l app.kubernetes.io/instance=kafka -l app.kubernetes.io/name=kafka"] + command: + - bash + - -euo + - pipefail + - -c + - | + echo 'Waiting for all kafka brokers to be ready' + kubectl wait --for=condition=ready --timeout=30m pod -l app.kubernetes.io/instance=kafka -l app.kubernetes.io/name=kafka containers: - name: create-nifi-ingestion-job image: oci.stackable.tech/sdp/testing-tools:0.2.0-stackable0.0.0-dev @@ -54,7 +61,7 @@ data: import urllib3 # As of 2022-08-29 we cant use "https://nifi:8443" here because

The request contained an invalid host header [nifi:8443] in the request [/nifi-api]. Check for request manipulation or third-party intercept.

- ENDPOINT = f"https://nifi-node-default-0.nifi-node-default.{os.environ['NAMESPACE']}.svc.cluster.local:8443" # For local testing / developing replace it, afterwards change back to f"https://nifi-node-default-0.nifi-node-default.{os.environ['NAMESPACE']}.svc.cluster.local:8443" + ENDPOINT = f"https://nifi-node-default-0.nifi-node-default-headless.{os.environ['NAMESPACE']}.svc.cluster.local:8443" # For local testing / developing replace it, afterwards change back to f"https://nifi-node-default-0.nifi-node-default-headless.{os.environ['NAMESPACE']}.svc.cluster.local:8443" USERNAME = "admin" PASSWORD = open("/nifi-admin-credentials-secret/admin").read() diff --git a/demos/data-lakehouse-iceberg-trino-spark/create-spark-ingestion-job.yaml b/demos/data-lakehouse-iceberg-trino-spark/create-spark-ingestion-job.yaml index 739ceeed..a5901aca 100644 --- a/demos/data-lakehouse-iceberg-trino-spark/create-spark-ingestion-job.yaml +++ b/demos/data-lakehouse-iceberg-trino-spark/create-spark-ingestion-job.yaml @@ -13,11 +13,24 @@ spec: initContainers: - name: wait-for-kafka image: oci.stackable.tech/sdp/tools:1.0.0-stackable0.0.0-dev - command: ["bash", "-c", "echo 'Waiting for all kafka brokers to be ready' && kubectl wait --for=condition=ready --timeout=30m pod -l app.kubernetes.io/name=kafka -l app.kubernetes.io/instance=kafka"] + command: + - bash + - -euo + - pipefail + - -c + - | + echo 'Waiting for all kafka brokers to be ready' + kubectl wait --for=condition=ready --timeout=30m pod -l app.kubernetes.io/name=kafka -l app.kubernetes.io/instance=kafka containers: - name: create-spark-ingestion-job image: oci.stackable.tech/sdp/tools:1.0.0-stackable0.0.0-dev - command: ["bash", "-c", "echo 'Submitting Spark job' && kubectl apply -f /tmp/manifest/spark-ingestion-job.yaml"] + command: + - bash + - -euo + - pipefail + - -c + - | + echo 'Submitting Spark job' && kubectl apply -f /tmp/manifest/spark-ingestion-job.yaml volumeMounts: - name: manifest mountPath: /tmp/manifest @@ -56,7 +69,7 @@ data: spark.sql.extensions: org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions spark.sql.catalog.lakehouse: org.apache.iceberg.spark.SparkCatalog spark.sql.catalog.lakehouse.type: hive - spark.sql.catalog.lakehouse.uri: thrift://hive-iceberg:9083 + spark.sql.catalog.lakehouse.uri: thrift://hive-iceberg-metastore:9083 # Every merge into statements creates 8 files. # Paralleling is enough for the demo, might need to be increased (or omitted entirely) when merge larger data volumes spark.sql.shuffle.partitions: "8" diff --git a/demos/data-lakehouse-iceberg-trino-spark/create-trino-tables.yaml b/demos/data-lakehouse-iceberg-trino-spark/create-trino-tables.yaml index 5a0f5ae9..a1ce4d7f 100644 --- a/demos/data-lakehouse-iceberg-trino-spark/create-trino-tables.yaml +++ b/demos/data-lakehouse-iceberg-trino-spark/create-trino-tables.yaml @@ -10,7 +10,14 @@ spec: initContainers: - name: wait-for-testdata image: oci.stackable.tech/sdp/tools:1.0.0-stackable0.0.0-dev - command: ["bash", "-c", "echo 'Waiting for job load-test-data to finish' && kubectl wait --for=condition=complete --timeout=30m job/load-test-data"] + command: + - bash + - -euo + - pipefail + - -c + - | + echo 'Waiting for job load-test-data to finish' + kubectl wait --for=condition=complete --timeout=30m job/load-test-data containers: - name: create-tables-in-trino image: oci.stackable.tech/sdp/testing-tools:0.2.0-stackable0.0.0-dev diff --git a/demos/data-lakehouse-iceberg-trino-spark/setup-superset.yaml b/demos/data-lakehouse-iceberg-trino-spark/setup-superset.yaml index 187f94ee..ddd5f5e6 100644 --- a/demos/data-lakehouse-iceberg-trino-spark/setup-superset.yaml +++ b/demos/data-lakehouse-iceberg-trino-spark/setup-superset.yaml @@ -9,7 +9,11 @@ spec: containers: - name: setup-superset image: oci.stackable.tech/sdp/testing-tools:0.2.0-stackable0.0.0-dev - command: ["bash", "-c", "curl -o superset-assets.zip https://raw.githubusercontent.com/stackabletech/demos/main/demos/data-lakehouse-iceberg-trino-spark/superset-assets.zip && python -u /tmp/script/script.py"] + command: + - "bash" + - "-c" + - "pipefail" + - "curl -o superset-assets.zip https://raw.githubusercontent.com/stackabletech/demos/main/demos/data-lakehouse-iceberg-trino-spark/superset-assets.zip && python -u /tmp/script/script.py" volumeMounts: - name: script mountPath: /tmp/script @@ -39,7 +43,7 @@ data: import logging import requests - base_url = "http://superset-node-default:8088" # For local testing / developing replace it, afterwards change back to http://superset-node-default:8088 + base_url = "http://superset-node:8088" # For local testing / developing replace it, afterwards change back to http://superset-node:8088 superset_username = open("/superset-credentials/adminUser.username").read() superset_password = open("/superset-credentials/adminUser.password").read() trino_username = "admin" diff --git a/stacks/data-lakehouse-iceberg-trino-spark/nifi.yaml b/stacks/data-lakehouse-iceberg-trino-spark/nifi.yaml index 58a4c2db..6c067d79 100644 --- a/stacks/data-lakehouse-iceberg-trino-spark/nifi.yaml +++ b/stacks/data-lakehouse-iceberg-trino-spark/nifi.yaml @@ -9,18 +9,19 @@ spec: clusterConfig: authentication: - authenticationClass: nifi-admin-credentials - listenerClass: external-unstable sensitiveProperties: keySecret: nifi-sensitive-property-key autoGenerate: true nodes: + roleConfig: + listenerClass: external-unstable config: resources: cpu: min: "2" max: "4" memory: - limit: '6Gi' + limit: "6Gi" storage: contentRepo: capacity: "10Gi" @@ -51,4 +52,4 @@ kind: Secret metadata: name: nifi-admin-credentials-secret stringData: - admin: {{ nifiAdminPassword }} + admin: "{{ nifiAdminPassword }}" diff --git a/stacks/data-lakehouse-iceberg-trino-spark/trino.yaml b/stacks/data-lakehouse-iceberg-trino-spark/trino.yaml index 0716844e..2848e35b 100644 --- a/stacks/data-lakehouse-iceberg-trino-spark/trino.yaml +++ b/stacks/data-lakehouse-iceberg-trino-spark/trino.yaml @@ -7,7 +7,6 @@ spec: image: productVersion: "476" clusterConfig: - listenerClass: external-unstable catalogLabelSelector: matchLabels: trino: trino @@ -18,6 +17,8 @@ spec: configMapName: opa package: trino coordinators: + roleConfig: + listenerClass: external-unstable config: queryMaxMemory: 10TB resources: @@ -25,7 +26,7 @@ spec: min: "1" max: "4" memory: - limit: '6Gi' + limit: "6Gi" roleGroups: default: replicas: 1 @@ -37,7 +38,7 @@ spec: min: "2" max: "6" memory: - limit: '20Gi' + limit: "20Gi" roleGroups: default: replicas: 4 From 8a47a9bda6009ddd80180f554486d7afe6ec5447 Mon Sep 17 00:00:00 2001 From: Malte Sander Date: Thu, 17 Jul 2025 11:50:41 +0200 Subject: [PATCH 2/8] try fix superset assets --- .../superset-assets.zip | Bin 48637 -> 50667 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/demos/data-lakehouse-iceberg-trino-spark/superset-assets.zip b/demos/data-lakehouse-iceberg-trino-spark/superset-assets.zip index 4f36c97101192cd0b28073480d24ff8b21e67071..ebe610be54b28d0c6abb218e5ae935e3d98da97a 100644 GIT binary patch literal 50667 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 literal 48637 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
7EM|2kS2q{_3th*9a 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 From 9f0044c91575c91deda9f2d9ceb213ff73685c06 Mon Sep 17 00:00:00 2001 From: Malte Sander Date: Thu, 17 Jul 2025 11:54:31 +0200 Subject: [PATCH 3/8] improve scripts --- .../create-nifi-ingestion-job.yaml | 3 ++- .../setup-superset.yaml | 11 +++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/demos/data-lakehouse-iceberg-trino-spark/create-nifi-ingestion-job.yaml b/demos/data-lakehouse-iceberg-trino-spark/create-nifi-ingestion-job.yaml index 0f36d867..c37b95a2 100644 --- a/demos/data-lakehouse-iceberg-trino-spark/create-nifi-ingestion-job.yaml +++ b/demos/data-lakehouse-iceberg-trino-spark/create-nifi-ingestion-job.yaml @@ -26,7 +26,8 @@ spec: - -euo - pipefail - -c - - python -u /tmp/script/script.py + - | + python -u /tmp/script/script.py volumeMounts: - name: script mountPath: /tmp/script diff --git a/demos/data-lakehouse-iceberg-trino-spark/setup-superset.yaml b/demos/data-lakehouse-iceberg-trino-spark/setup-superset.yaml index ddd5f5e6..4a14c4f5 100644 --- a/demos/data-lakehouse-iceberg-trino-spark/setup-superset.yaml +++ b/demos/data-lakehouse-iceberg-trino-spark/setup-superset.yaml @@ -10,10 +10,13 @@ spec: - name: setup-superset image: oci.stackable.tech/sdp/testing-tools:0.2.0-stackable0.0.0-dev command: - - "bash" - - "-c" - - "pipefail" - - "curl -o superset-assets.zip https://raw.githubusercontent.com/stackabletech/demos/main/demos/data-lakehouse-iceberg-trino-spark/superset-assets.zip && python -u /tmp/script/script.py" + - bash + - -euo + - pipefail + - -c + - | + curl -o superset-assets.zip https://raw.githubusercontent.com/stackabletech/demos/main/demos/data-lakehouse-iceberg-trino-spark/superset-assets.zip + python -u /tmp/script/script.py volumeMounts: - name: script mountPath: /tmp/script From aa67e65b5d5ad0971bb47ccbbf0af342dd0d98dd Mon Sep 17 00:00:00 2001 From: Malte Sander Date: Thu, 17 Jul 2025 12:03:07 +0200 Subject: [PATCH 4/8] remove trailing whitespace --- .../create-nifi-ingestion-job.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demos/data-lakehouse-iceberg-trino-spark/create-nifi-ingestion-job.yaml b/demos/data-lakehouse-iceberg-trino-spark/create-nifi-ingestion-job.yaml index c37b95a2..c837cf77 100644 --- a/demos/data-lakehouse-iceberg-trino-spark/create-nifi-ingestion-job.yaml +++ b/demos/data-lakehouse-iceberg-trino-spark/create-nifi-ingestion-job.yaml @@ -16,7 +16,7 @@ spec: - pipefail - -c - | - echo 'Waiting for all kafka brokers to be ready' + echo 'Waiting for all kafka brokers to be ready' kubectl wait --for=condition=ready --timeout=30m pod -l app.kubernetes.io/instance=kafka -l app.kubernetes.io/name=kafka containers: - name: create-nifi-ingestion-job From 48ea5f9b08553e2d8ef8491feb520aa15262bf14 Mon Sep 17 00:00:00 2001 From: Malte Sander Date: Thu, 17 Jul 2025 14:42:59 +0200 Subject: [PATCH 5/8] fix comment --- .../create-nifi-ingestion-job.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demos/data-lakehouse-iceberg-trino-spark/create-nifi-ingestion-job.yaml b/demos/data-lakehouse-iceberg-trino-spark/create-nifi-ingestion-job.yaml index c837cf77..34b12baa 100644 --- a/demos/data-lakehouse-iceberg-trino-spark/create-nifi-ingestion-job.yaml +++ b/demos/data-lakehouse-iceberg-trino-spark/create-nifi-ingestion-job.yaml @@ -61,7 +61,7 @@ data: import requests import urllib3 - # As of 2022-08-29 we cant use "https://nifi:8443" here because

The request contained an invalid host header [nifi:8443] in the request [/nifi-api]. Check for request manipulation or third-party intercept.

+ # As of 2022-08-29 we cant use "https://nifi-node:8443" here because

The request contained an invalid host header [nifi:8443] in the request [/nifi-api]. Check for request manipulation or third-party intercept.

ENDPOINT = f"https://nifi-node-default-0.nifi-node-default-headless.{os.environ['NAMESPACE']}.svc.cluster.local:8443" # For local testing / developing replace it, afterwards change back to f"https://nifi-node-default-0.nifi-node-default-headless.{os.environ['NAMESPACE']}.svc.cluster.local:8443" USERNAME = "admin" PASSWORD = open("/nifi-admin-credentials-secret/admin").read() From caf870cecc67cad81492c1b383c50efd331207d0 Mon Sep 17 00:00:00 2001 From: Malte Sander Date: Thu, 17 Jul 2025 14:43:21 +0200 Subject: [PATCH 6/8] add read statefulset to clusterrole --- .../serviceaccount.yaml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/demos/data-lakehouse-iceberg-trino-spark/serviceaccount.yaml b/demos/data-lakehouse-iceberg-trino-spark/serviceaccount.yaml index cb3ea626..53e2ccae 100644 --- a/demos/data-lakehouse-iceberg-trino-spark/serviceaccount.yaml +++ b/demos/data-lakehouse-iceberg-trino-spark/serviceaccount.yaml @@ -31,6 +31,14 @@ rules: - get - list - watch + - apiGroups: + - apps + resources: + - statefulsets + verbs: + - get + - list + - watch - apiGroups: - batch resources: From 55e517c82b6fb7c7e39b291bb630f5c72053f57f Mon Sep 17 00:00:00 2001 From: Malte Sander Date: Thu, 17 Jul 2025 14:44:38 +0200 Subject: [PATCH 7/8] wait for minio to be ready in spark ingestion job --- .../create-spark-ingestion-job.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/demos/data-lakehouse-iceberg-trino-spark/create-spark-ingestion-job.yaml b/demos/data-lakehouse-iceberg-trino-spark/create-spark-ingestion-job.yaml index a5901aca..10271f25 100644 --- a/demos/data-lakehouse-iceberg-trino-spark/create-spark-ingestion-job.yaml +++ b/demos/data-lakehouse-iceberg-trino-spark/create-spark-ingestion-job.yaml @@ -19,8 +19,10 @@ spec: - pipefail - -c - | + echo 'Waiting for all minio instances to be ready' + kubectl wait --for=condition=ready --timeout=30m pod -l app=minio,release=minio,stackable.tech/vendor=Stackable echo 'Waiting for all kafka brokers to be ready' - kubectl wait --for=condition=ready --timeout=30m pod -l app.kubernetes.io/name=kafka -l app.kubernetes.io/instance=kafka + kubectl wait --for=condition=ready --timeout=30m pod -l app.kubernetes.io/name=kafka,app.kubernetes.io/instance=kafka containers: - name: create-spark-ingestion-job image: oci.stackable.tech/sdp/tools:1.0.0-stackable0.0.0-dev From 37942e92d913619282b58d7d316b6269d2725a82 Mon Sep 17 00:00:00 2001 From: Malte Sander Date: Thu, 17 Jul 2025 14:47:06 +0200 Subject: [PATCH 8/8] fix wait condition label selector --- .../create-nifi-ingestion-job.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demos/data-lakehouse-iceberg-trino-spark/create-nifi-ingestion-job.yaml b/demos/data-lakehouse-iceberg-trino-spark/create-nifi-ingestion-job.yaml index 34b12baa..e86947df 100644 --- a/demos/data-lakehouse-iceberg-trino-spark/create-nifi-ingestion-job.yaml +++ b/demos/data-lakehouse-iceberg-trino-spark/create-nifi-ingestion-job.yaml @@ -17,7 +17,7 @@ spec: - -c - | echo 'Waiting for all kafka brokers to be ready' - kubectl wait --for=condition=ready --timeout=30m pod -l app.kubernetes.io/instance=kafka -l app.kubernetes.io/name=kafka + kubectl wait --for=condition=ready --timeout=30m pod -l app.kubernetes.io/instance=kafka,app.kubernetes.io/name=kafka containers: - name: create-nifi-ingestion-job image: oci.stackable.tech/sdp/testing-tools:0.2.0-stackable0.0.0-dev