Как запустить Seatunnel в разделенном режиме кластера на K8s

Как запустить Seatunnel в разделенном режиме кластера на K8s

7 августа 2025 г.

Apache Seatunnel-это новое поколение высокопроизводительного, распределенного интеграции данных и инструмента синхронизации данных, который был широко признан и применяется в отрасли. Seatunnel поддерживает три режима развертывания: локальный режим, гибридный режим кластера и разделенный режим кластера.

Эта статья направлена на то, чтобы ввести развертывание Seatunnel в разделенном режиме кластера в Kubernetes, предоставляя комплексный процесс развертывания и примеры конфигурации для тех, кто имеет соответствующие потребности.


1. Подготовка

Перед началом развертывания должны быть готовы следующие среды и компоненты:

  • Кластерная среда Kubernetes
  • Kubectl Commandline Tool
  • докер
  • Хелм (необязательно)

Для тех, кто знаком с рулем, вы можете напрямую обратиться к официальному учебному пособию по развертыванию управления:

  • https://seatunnel.apache.org/docs/2.3.10/start-v2/kubernetes/helm
  • https://github.com/apache/seatunnel/tree/dev/deploy/kubernetes/seatunnel

Эта статья в основном вводит развертывание на основе инструментов Kubernetes и Kubectl.


2. Строите Seatunnel Docker Image

Официальные изображения различных версий уже предоставлены и могут быть вытянуты напрямую. Для получения подробной информации, пожалуйста, обратитесь к официальной документации:Установка с DockerПолем

docker pull apache/seatunnel:<version_tag>

Поскольку нам нужно развернуть режим кластера, следующим шагом является настройка коммуникации сети кластеров. Сетевая служба кластера Seatunnel реализована черезХейзелкас, поэтому мы настроим эту часть следующей.



Конфигурация службы без головы

Hazelcast Cluster - это сеть, созданная членами кластера, работающего в Hazelcast, которая автоматически объединяется, чтобы сформировать кластер. Это автоматическое соединение достигается с помощью различных механизмов обнаружения, используемых членами кластера, чтобы найти друг друга.

Hazelcast поддерживает следующие механизмы открытия:

  • Auto Discovery, вспомогательные среды, такие как:
  • AWS
  • Лазур
  • GCP
  • Kubernetes
  • TCP
  • Многоадресная расстояния
  • Эврика
  • Зокепер

В развертывании кластера этой статьи мы настраиваем Hazelcast с помощью механизма Auto Discovery Kubernetes. Подробные принципы можно найти в официальном документе:Kubernetes Auto DiscoveryПолем

Механизм Auto Discovery от Hazelcast (режим поиска DNS) требует работы Kubernetes без головы. Сервис без головы разрешает имя домена службы в список IP -адресов всех соответствующих стручков, что позволяет участникам Hazelcast Cluster открывать друг друга.

Во -первых, мы создаем сервис Kubernetes без головы:

# use for hazelcast cluster join
apiVersion: v1
kind: Service
metadata:
  name: seatunnel-cluster
spec:
  type: ClusterIP
  clusterIP: None
  selector:
    app.kubernetes.io/instance: seatunnel-cluster-app
    app.kubernetes.io/version: 2.3.10
  ports:
  - port: 5801
    name: hazelcast

Ключевые части вышеуказанной конфигурации:

  • metadata.name: seatunnel-cluster: Имя сервиса, клиенты/узлы Hazelcast обнаруживают членов кластера через это имя
  • spec.clusterIP: None: Критическая конфигурация объявляет об этом как безголовой сервис без виртуального IP
  • spec.selector: Селекторные соответствующие метки POD, которые будут выбраны этой службой
  • spec.port: Порт, выставлен для Hazelcast

Между тем, чтобы получить доступ к кластеру внешне через API REST, мы определяем другую службу для мастер -узла:

# use for access seatunnel from outside system via rest api
apiVersion: v1
kind: Service
metadata:
  name: seatunnel-cluster-master
spec:
  type: ClusterIP
  clusterIP: None
  selector:
    app.kubernetes.io/instance: seatunnel-cluster-app
    app.kubernetes.io/version: 2.3.10
    app.kubernetes.io/name: seatunnel-cluster-master
    app.kubernetes.io/component: master
  ports:
  - port: 8080
    name: "master-port"
    targetPort: 8080
    protocol: TCP

После определения вышеуказанных служб Kubernetes, затем настройкаhazelcast-master.yamlиhazelcast-worker.yamlФайлы в соответствии с механизмом обнаружения Hazelcast Kubernetes.


Hazelcast Master и работник Yaml Configurations

В разделенном режиме кластера Seatunnel все конфигурации, связанная с сетью, содержатся вhazelcast-master.yamlиhazelcast-worker.yamlПолем

hazelcast-master.yamlпример:

hazelcast:
  cluster-name: seatunnel-cluster
  network:
    rest-api:
      enabled: true
      endpoint-groups:
        CLUSTER_WRITE:
          enabled: true
        DATA:
          enabled: true
    join:
      kubernetes:
        enabled: true
        service-dns: seatunnel-cluster.bigdata.svc.cluster.local
        service-port: 5801
    port:
      auto-increment: false
      port: 5801
  properties:
    hazelcast.invocation.max.retry.count: 20
    hazelcast.tcp.join.port.try.count: 30
    hazelcast.logging.type: log4j2
    hazelcast.operation.generic.thread.count: 50
    hazelcast.heartbeat.failuredetector.type: phi-accrual
    hazelcast.heartbeat.interval.seconds: 30
    hazelcast.max.no.heartbeat.seconds: 300
    hazelcast.heartbeat.phiaccrual.failuredetector.threshold: 15
    hazelcast.heartbeat.phiaccrual.failuredetector.sample.size: 200
    hazelcast.heartbeat.phiaccrual.failuredetector.min.std.dev.millis: 200

Элементы конфигурации ключей:

  1. кластер-имени
  2. Эта конфигурация идентифицирует, принадлежат ли несколько узлов один и тот же кластер; Только узлы с той же кластерной именем присоединятся к тому же кластеру Hazelcast. Различные узлы кластерной имени отклоняют запросы друг от друга.
  3. Сетевая конфигурация
  • REST-API.ENABLEABLE: служба REST HAZELCAST отключена по умолчанию в ST 2.3.10; Это должно быть явно включено здесь.
  • Service-DNS (требуется): полное доменное имя сервиса без головы, как правило,${SERVICE-NAME}.${NAMESPACE}.svc.cluster.localПолем
  • Service-Port (необязательно): порт Hazelcast; Если указано и> 0, переопределяет порт по умолчанию (5701).

Используя этот механизм Kubernetes, когда начинается стручка Hazelcast, он разрешает службу DNS, чтобы получить список IP всех элементов членов (через службу без головы), а затем участники пытаются соединения TCP через порт 5801.

Точно так жеhazelcast-worker.yamlКонфигурация:

hazelcast:
  cluster-name: seatunnel-cluster
  network:
    rest-api:
      enabled: true
      endpoint-groups:
        CLUSTER_WRITE:
          enabled: true
        DATA:
          enabled: true
    join:
      kubernetes:
        enabled: true
        service-dns: seatunnel-cluster.bigdata.svc.cluster.local
        service-port: 5801
    port:
      auto-increment: false
      port: 5801
  properties:
    hazelcast.invocation.max.retry.count: 20
    hazelcast.tcp.join.port.try.count: 30
    hazelcast.logging.type: log4j2
    hazelcast.operation.generic.thread.count: 50
    hazelcast.heartbeat.failuredetector.type: phi-accrual
    hazelcast.heartbeat.interval.seconds: 30
    hazelcast.max.no.heartbeat.seconds: 300
    hazelcast.heartbeat.phiaccrual.failuredetector.threshold: 15
    hazelcast.heartbeat.phiaccrual.failuredetector.sample.size: 200
    hazelcast.heartbeat.phiaccrual.failuredetector.min.std.dev.millis: 200
  member-attributes:
    rule:
      type: string
      value: worker

Через вышесказанное мы завершаем конфигурацию обнаружения участника Hazelcast Cluster на основе Kubernetes. Далее приступите к настройке Seatunnel Engine.


4. Настройка двигателя Seatunnel

Конфигурация, связанная с двигателем Seatunnel, находится вseatunnel.yamlфайл. Ниже приведен образецseatunnel.yamlКонфигурация для справки:

seatunnel:
  engine:
    history-job-expire-minutes: 1440
    backup-count: 1
    queue-type: blockingqueue
    print-execution-info-interval: 60
    print-job-metrics-info-interval: 60
    classloader-cache-mode: true
    http:
      enable-http: true
      port: 8080
      enable-dynamic-port: false
      port-range: 100
    slot-service:
      dynamic-slot: true
    checkpoint:
      interval: 300000
      timeout: 60000
      storage:
        type: hdfs
        max-retained: 3
        plugin-config:
          namespace: /tmp/seatunnel/checkpoint_snapshot
          storage.type: hdfs
          fs.defaultFS: hdfs://xxx:8020 # Ensure directory has write permission
    telemetry:
      metric:
        enabled: true

Это включает в себя следующую информацию о конфигурации:

  • history-job-expire-minutes: Период хранения записей истории задач составляет 24 часа (1440 минут), после чего они будут автоматически очищены.
  • backup-count: 1: Количество резервных копий для состояния задачи составляет 1.
  • queue-type: blockingqueue: Используйте блокирующую очередь для управления задачами, чтобы избежать истощения ресурсов.
  • print-execution-info-interval: 60: Статус выполнения задачи печати каждые 60 секунд.
  • print-job-metrics-info-interval: 60: Выходные метрики задачи (такие как пропускная способность, задержка) каждые 60 секунд.
  • classloader-cache-mode: true: Включить кэширование загрузчика класса, чтобы уменьшить повторную нагрузку на нагрузку и улучшить производительность.
  • dynamic-slot: true: Разрешить динамическую настройку количества слота задачи на основе нагрузки для оптимизации использования ресурсов.
  • checkpoint.interval: 300000: Триггер -контрольная точка каждые 5 минут.
  • checkpoint.timeout: 60000: Тайм -аут контрольного точка установлен на 1 минуту.
  • telemetry.metric.enabled: true: Включить сбор метриков задач выполнения (например, задержка, пропускная способность) для мониторинга.


5. Создайте файлы kubernetes yaml для развертывания приложения

После завершения вышеуказанного рабочего процесса, окончательным шагом является создание файлов Kubernetes YAML для мастера и рабочих узлов, определяющих конфигурации, связанные с развертыванием.

Чтобы отделить файлы конфигурации из приложения, вышеупомянутые файлы конфигурации объединяются в одну конфигурацию, установленную под пути конфигурации контейнера для унифицированного управления и более легких обновлений.

Ниже приведены примеры конфигураций дляseatunnel-cluster-master.yamlиseatunnel-cluster-worker.yaml, покрытие монтажа ConfigMap, команды запуска контейнеров и определения ресурсов развертывания.

seatunnel-cluster-master.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: seatunnel-cluster-master
spec:
  replicas: 2  # modify replicas according to your scenario
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 50%
  selector:
    matchLabels:
      app.kubernetes.io/instance: seatunnel-cluster-app
      app.kubernetes.io/version: 2.3.10
      app.kubernetes.io/name: seatunnel-cluster-master
      app.kubernetes.io/component: master
  template:
    metadata:
      annotations:
        prometheus.io/path: /hazelcast/rest/instance/metrics
        prometheus.io/port: "5801"
        prometheus.io/scrape: "true"
        prometheus.io/role: "seatunnel-master"
      labels:
        app.kubernetes.io/instance: seatunnel-cluster-app
        app.kubernetes.io/version: 2.3.10
        app.kubernetes.io/name: seatunnel-cluster-master
        app.kubernetes.io/component: master
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: nodeAffinity-key
                operator: Exists
      containers:
        - name: seatunnel-master
          image: seatunnel:2.3.10
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 5801
              name: hazelcast
            - containerPort: 8080
              name: "master-port"
          command:
            - /opt/seatunnel/bin/seatunnel-cluster.sh
            - -r
            - master
          resources:
            requests:
              cpu: "1"
              memory: 4G
          volumeMounts:
            - mountPath: "/opt/seatunnel/config/hazelcast-master.yaml"
              name: seatunnel-configs
              subPath: hazelcast-master.yaml
            - mountPath: "/opt/seatunnel/config/hazelcast-worker.yaml"
              name: seatunnel-configs
              subPath: hazelcast-worker.yaml
            - mountPath: "/opt/seatunnel/config/seatunnel.yaml"
              name: seatunnel-configs
              subPath: seatunnel.yaml
            - mountPath: "/opt/seatunnel/config/hazelcast-client.yaml"
              name: seatunnel-configs
              subPath: hazelcast-client.yaml
            - mountPath: "/opt/seatunnel/config/log4j2_client.properties"
              name: seatunnel-configs
              subPath: log4j2_client.properties
            - mountPath: "/opt/seatunnel/config/log4j2.properties"
              name: seatunnel-configs
              subPath: log4j2.properties

      volumes:
        - name: seatunnel-configs
          configMap:
            name: seatunnel-cluster-configs

Стратегия развертывания

  • Используйте несколько реплик (replicas=2) для обеспечения высокой доступности обслуживания.
  • Используйте стратегию обновления Rolling для развертывания нуля простоя:
  • maxUnavailable: 25%: Убедитесь, что не менее 75% стручков работают во время обновлений.
  • maxSurge: 50%: Временно разрешайте на 50% больше стручков во время перехода для плавного обновления.

Шелекторы метки

  • Используйте рекомендованные kubernetesСтандартная система метки
  • spec.selector.matchLabels: Определяет объем стручков, управляемых развертыванием на основе этикеток
  • spec.template.labels: метки, назначенные новым стручкам для определения их метаданных

Аффинность узла

  • НастройкаaffinityЧтобы указать, какие узлы должны быть запланированы POD
  • ЗаменятьnodeAffinity-keyс этикетками, соответствующими ваших узлам среды Kubernetes

Монтаж файла конфигурации

  • Централизовать файлы конфигурации основной конфигурации в конфигурации для отделения управления из приложений
  • ИспользоватьsubPathДля установки отдельных файлов из configmap

Аseatunnel-cluster-worker.yamlКонфигурация:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: seatunnel-cluster-worker
spec:
  replicas: 3  # modify replicas according to your scenario
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 50%
  selector:
    matchLabels:
      app.kubernetes.io/instance: seatunnel-cluster-app
      app.kubernetes.io/version: 2.3.10
      app.kubernetes.io/name: seatunnel-cluster-worker
      app.kubernetes.io/component: worker
  template:
    metadata:
      annotations:
        prometheus.io/path: /hazelcast/rest/instance/metrics
        prometheus.io/port: "5801"
        prometheus.io/scrape: "true"
        prometheus.io/role: "seatunnel-worker"
      labels:
        app.kubernetes.io/instance: seatunnel-cluster-app
        app.kubernetes.io/version: 2.3.10
        app.kubernetes.io/name: seatunnel-cluster-worker
        app.kubernetes.io/component: worker
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: nodeAffinity-key
                operator: Exists
      containers:
        - name: seatunnel-worker
          image: seatunnel:2.3.10
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 5801
              name: hazelcast
          command:
            - /opt/seatunnel/bin/seatunnel-cluster.sh
            - -r
            - worker
          resources:
            requests:
              cpu: "1"
              memory: 10G
          volumeMounts:
            - mountPath: "/opt/seatunnel/config/hazelcast-master.yaml"
              name: seatunnel-configs
              subPath: hazelcast-master.yaml
            - mountPath: "/opt/seatunnel/config/hazelcast-worker.yaml"
              name: seatunnel-configs
              subPath: hazelcast-worker.yaml
            - mountPath: "/opt/seatunnel/config/seatunnel.yaml"
              name: seatunnel-configs
              subPath: seatunnel.yaml
            - mountPath: "/opt/seatunnel/config/hazelcast-client.yaml"
              name: seatunnel-configs
              subPath: hazelcast-client.yaml
            - mountPath: "/opt/seatunnel/config/log4j2_client.properties"
              name: seatunnel-configs
              subPath: log4j2_client.properties
            - mountPath: "/opt/seatunnel/config/log4j2.properties"
              name: seatunnel-configs
              sub

              subPath: log4j2.properties

      volumes:
        - name: seatunnel-configs
          configMap:
            name: seatunnel-cluster-configs

После определения вышеуказанных файлов Master и Worker Yaml вы можете развернуть их в кластере Kubernetes, запустив:

kubectl apply -f seatunnel-cluster-master.yaml
kubectl apply -f seatunnel-cluster-worker.yaml

При нормальных обстоятельствах вы увидите кластер Seatunnel, работающий с 2 главными узлами и 3 рабочими узлами:

$ kubectl get pods | grep seatunnel-cluster

seatunnel-cluster-master-6989898f66-6fjz8                        1/1     Running                0          156m
seatunnel-cluster-master-6989898f66-hbtdn                        1/1     Running                0          155m
seatunnel-cluster-worker-87fb469f7-5c96x                         1/1     Running                0          156m
seatunnel-cluster-worker-87fb469f7-7kt2h                         1/1     Running                0          155m
seatunnel-cluster-worker-87fb469f7-drm9r                         1/1     Running                0          156m

На этом этапе мы успешно развернули кластер Seatunnel в Kubernetes, используя разделенный режим кластера. Теперь, когда кластер готов, как клиенты отправляют на него рабочие места?


6. Клиент подчиняется заданиям в кластер


Отправить задания, используя инструмент командной строки

Все клиентские конфигурации для Seatunnel расположены вhazelcast-client.yamlфайл.

Сначала загрузите бинарный пакет установки локально на клиент (который содержитbinиconfigкаталоги) и убедитесь, что путь установки Seatunnel соответствует серверу. Это то, что официальная документация относится как к: установление Seatunnel_home, так же, как сервер, в противном случае ошибки, такие как «не могут найти путь плагина разъема на сервере», может произойти, потому что путь плагина на стороне сервера отличается от пути клиента.

Введите каталог установки и изменитеconfig/hazelcast-client.yamlФайл, чтобы указывать на адрес службы без головы, созданный ранее:

hazelcast-client:
      cluster-name: seatunnel-cluster
      properties:
        hazelcast.logging.type: log4j2
      connection-strategy:
        connection-retry:
          cluster-connect-timeout-millis: 3000
      network:
        cluster-members:
          - seatunnel-cluster.bigdata.svc.cluster.local:5801

После того, как конфигурация клиента будет выполнена, вы можете отправить задания в кластер. Есть два основных способа настройки вариантов JVM для подачи работы:

  • Настроить параметры JVM вconfig/jvm_client_optionsфайл:
  • Параметры JVM, настроенные здесь, будут применяться ко всем заданиям, представленным черезseatunnel.sh, независимо от работы в локальном или кластерном режиме. Все представленные задания поделится одной и той же конфигурацией JVM.
  • Укажите параметры JVM непосредственно в командной строке при отправке заданий:
  • При отправке рабочих мест черезseatunnel.sh, вы можете указать параметры JVM в командной строке, например,
  • sh bin/seatunnel.sh --config $SEATUNNEL_HOME/config/v2.batch.config.template -DJvmOption=-Xms2G -Xmx2GПолем
  • Это позволяет определять варианты JVM индивидуально для каждой подачи задания.

Далее, вот пример конфигурации задания, чтобы продемонстрировать отправку задания в кластер:

env {
  parallelism = 2
  job.mode = "STREAMING"
  checkpoint.interval = 2000
}

source {
  FakeSource {
    parallelism = 2
    plugin_output = "fake"
    row.num = 16
    schema = {
      fields {
        name = "string"
        age = "int"
      }
    }
  }
}

sink {
  Console {
  }
}

Используйте следующую команду на клиенте, чтобы отправить задание:

sh bin/seatunnel.sh --config config/v2.streaming.example.template -m cluster -n st.example.template -DJvmOption="-Xms2G -Xmx2G"

На главном узле перечислите задание с:

$ sh bin/seatunnel.sh -l

Job ID              Job Name             Job Status  Submit Time              Finished Time            
------------------  -------------------  ----------  -----------------------  -----------------------  
964354250769432580  st.example.template  RUNNING     2025-04-15 10:39:30.588  

Вы можете увидеть работу по имениst.example.templateв настоящее время находится в состоянии бега. В журналах узлов работников вы должны наблюдать за записями журнала, например:

2025-04-15 10:34:41,998 INFO  [.a.s.c.s.c.s.ConsoleSinkWriter] [st-multi-table-sink-writer-1] - subtaskIndex=0  rowIndex=1:  SeaTunnelRow#tableId=fake SeaTunnelRow#kind=INSERT : bdaUB, 110348049
2025-04-15 10:34:41,998 INFO  [.a.s.c.s.c.s.ConsoleSinkWriter] [st-multi-table-sink-writer-1] - subtaskIndex=1  rowIndex=1:  SeaTunnelRow#tableId=fake SeaTunnelRow#kind=INSERT : mOifY, 1974539087
2025-04-15 10:34:41,999 INFO  [.a.s.c.s.c.s.ConsoleSinkWriter] [st-multi-table-sink-writer-1] - subtaskIndex=0  rowIndex=2:  SeaTunnelRow#tableId=fake SeaTunnelRow#kind=INSERT : jKFrR, 1828047742
2025-04-15 10:34:41,999 INFO  [.a.s.c.s.c.s.ConsoleSinkWriter] [st-multi-table-sink-writer-1] - subtaskIndex=1  rowIndex=2:  SeaTunnelRow#tableId=fake SeaTunnelRow#kind=INSERT : gDiqR, 1177544796
2025-04-15 10:34:41,999 INFO  [.a.s.c.s.c.s.ConsoleSinkWriter] [st-multi-table-sink-writer-1] - subtaskIndex=0  rowIndex=3:  SeaTunnelRow#tableId=fake SeaTunnelRow#kind=INSERT : bCVxc, 909343602
...

Это подтверждает, что работа была успешно представлена в кластер Seatunnel и работает нормально.


Отправить задания, используя API REST

Seatunnel также предоставляет API REST для запроса статуса работы, статистики, отправки и остановки работ. Мы настроили службу без головы для главных узлов с открытым портом 8080. Это позволяет отправлять задание через API REST от клиентов.

Вы можете отправить задание, загрузив файл конфигурации через Curl:

curl 'http://seatunnel-cluster-master.bigdata.svc.cluster.local:8080/submit-job/upload' --form 'config_file=@"/opt/seatunnel/config/v2.streaming.example.template"' --form 'jobName=st.example.template'

{"jobId":"964553575034257409","jobName":"st.example.template"}

Если подача успеха, API возвращает идентификатор задания и название задания, как указано выше.

Чтобы перечислить работу по работе, запрос:

curl 'http://seatunnel-cluster-master.bigdata.svc.cluster.local:8080/running-jobs'

[{"jobId":"964553575034257409","jobName":"st.example.template","jobStatus":"RUNNING","envOptions":{"job.mode":"STREAMING","checkpoint.interval":"2000","parallelism":"2"}, ...}]

Ответ показывает статус задания и дополнительные метаданные, подтверждая, что метод подачи задания REST работает правильно.

Более подробную информацию об API остальных можно найти в официальной документации:RESTFUL API V2


7. Резюме

Эта статья была посвящена тому, как развернуть Seatunnel в Kubernetes, используя рекомендуемый разделенный режим кластера. Подводя итог, основные этапы развертывания включают:

  1. Подготовьте среду Kubernetes: убедитесь, что установлен работает кластер Kubernetes и необходимые инструменты.
  2. Строите Seatunnel Docker Images: Используйте официальное изображение, если не требуется индивидуальная разработка; В противном случае постройте локально и создайте свой собственный образ.
  3. Настройка безголовного обслуживания и кластера Hazelcast: Kubercast Kubernetes Auto-Discovery DNS Режим поиска DNS требует службы без головы Kubernetes, поэтому создайте безголую сервис и настройка Hazelcast с помощью DNS Service DNS. Безголовный сервис решается для всех IPS для всех стручков, чтобы позволить обнаружению участника Hazelcast Cluster Discovery.
  4. Настройте Seatunnel Engine: изменитьseatunnel.yamlЧтобы установить параметры двигателя.
  5. Создайте Kubernetes развертывание файлов YAML: определите развертывание мастера и работников с помощью селекторов узлов, команд запуска, ресурсов и томов, а затем развернуть в Kubernetes.
  6. Настройте клиент Seatunnel: установите Seatunnel на клиенту, убедитесьSEATUNNEL_HOMEсоответствует серверу и настраиваетhazelcast-client.yamlЧтобы подключиться к кластеру.
  7. Отправить и запустить задание: отправьте задания от клиента в кластер Seatunnel для выполнения.

Конфигурации и случаи, представленные здесь, служат ссылками. Там может быть много других параметров конфигурации и деталей, не охваченных. Отзывы и дискуссии приветствуются. Надеюсь, это полезно для всех!


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE