Apache SeaTunnel 集群部署详细教程

SeaTunnel Engine 的Master服务和Worker服务分离,每个服务单独一个进程。

  • Master节点只负责作业调度,RESTful API,任务提交等,Imap数据只存储在Master节点中。
  • Worker节点只负责任务的执行,不参与选举成为Master,也不存储Imap数据。

在所有Master节点中,同一时间只有一个Master节点工作,其他Master节点处于standby状态。

Master节点宕机或心跳超时,会从其它节点中选举出一个新的Master Active节点。

这是最推荐的一种使用方式,在该模式下Master的负载会很小Master更多的资源用来进行作业的调度,任务的容错指标监控以及提供Rest API服务等,会有更高的稳定性

同时Worker节点不存储Imap的数据,所有的Imap数据都存储在Master节点中,即使Worker节点负载高或者挂掉,也不会导致Imap数据重新分布。

下载安装包

在开始下载SeaTunnel之前,您需要确保您已经安装了SeaTunnel所需要的以下软件:

安装Java (Java 8 或 11, 其他高于Java 8的版本理论上也可以工作) 以及设置 JAVA_HOME

进入SeaTunnel下载页面(https://seatunnel.apache.org/download)下载最新版本的发布版安装包`seatunnel- -bin.tar.gz`

或者您也可以通过终端下载

export version="2.3.8"
wget "https://archive.apache.org/dist/seatunnel/${version}/apache-seatunnel-${version}-bin.tar.gz"
tar -xzvf "apache-seatunnel-${version}-bin.tar.gz"

配置 SEATUNNEL_HOME

您可以通过添加 /etc/profile.d/seatunnel.sh 文件来配置 SEATUNNEL_HOME 。

/etc/profile.d/seatunnel.sh 的内容如下:

export SEATUNNEL_HOME=${seatunnel install path}
export PATH=$PATH:$SEATUNNEL_HOME/bin

配置 Master 节点 JVM 选项

Master节点的JVM参数在$SEATUNNEL_HOME/config/jvm_master_options文件中配置。


# JVM Heap
-Xms2g
-Xmx2g

# JVM Dump
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/tmp/seatunnel/dump/zeta-server

# Metaspace
-XX:MaxMetaspaceSize=2g

# G1GC
-XX:+UseG1GC

Worker节点的JVM参数在$SEATUNNEL_HOME/config/jvm_worker_options文件中配置。


# JVM Heap
-Xms2g
-Xmx2g

# JVM Dump
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/tmp/seatunnel/dump/zeta-server

# Metaspace
-XX:MaxMetaspaceSize=2g

# G1GC
-XX:+UseG1GC

配置 SeaTunnel Engine

SeaTunnel Engine 提供许多功能,需要在 seatunnel.yaml中进行配置。

Imap中数据的备份数设置(该参数在Worker节点无效)

SeaTunnel Engine 基于 Hazelcast IMDG 实现集群管理。集群的状态数据(作业运行状态、资源状态)存储在 Hazelcast IMap

存储在 Hazelcast IMap 中的数据将在集群的所有节点上分布和存储。

Hazelcast 会分区存储在 Imap 中的数据。每个分区可以指定备份数量。因此,SeaTunnel Engine 可以实现集群 HA,无需使用其他服务(例如 zookeeper)。

backup count 是定义同步备份数量的参数。例如,如果设置为 1,则分区的备份将放置在一个其他成员上。如果设置为 2,则将放置在两个其他成员上。

我们建议 backup-count 的值为 min(1, max(5, N/2))。N 是集群节点的数量。

seatunnel:
    engine:
        backup-count: 1
        # 其他配置

由于在分离集群模式下,Worker节点不存储Imap数据,因此Worker节点的backup-count配置无效。

如果Master和Worker进程在同一个机器上启动,Master和Worker会共用

### SeaTunnel集群部署中的Kerberos认证配置 #### 1. **背景介绍** SeaTunnel 是一款强大的流批一体数据处理引擎,在企业级环境中,通常会结合 Kerberos 进行身份验证以增强安全性。在集群环境下,正确配置 Kerberos 认证是确保 SeaTunnel 能够安全访问受保护资源(如 HDFS 和 Hive)的关键步骤。 以下内容详细描述了如何在 SeaTunnel 集群中配置 Kerberos 认证[^1]。 --- #### 2. **前置条件** - 已安装并配置好 Kerberos KDC(Key Distribution Center)。 - 所有参与计算的节点均已加入 Kerberos 域,并能正常解析域名和服务地址。 - 准备好用于 SeaTunnel 的 Kerberos principal 和 keytab 文件。 --- #### 3. **关键配置步骤** ##### (1)**准备 Kerberos 主体和 Keytab 文件** 为 SeaTunnel 创建专用的 Kerberos principal 并生成对应的 keytab 文件。假设我们使用的 principal 名称为 `seatunnel@YOUR-REALM.COM`,则可通过以下命令生成 keytab 文件: ```bash kadmin.local -q "addprinc seatunnel/YOUR-HOSTNAME@YOUR-REALM.COM" kadmin.local -q "xst -norandkey -kt /path/to/seatunnel.keytab seatunnel/YOUR-HOSTNAME@YOUR-REALM.COM" ``` 将生成的 `/path/to/seatunnel.keytab` 文件分发到所有 SeaTunnel 集群节点上的相同路径下。 --- ##### (2)**配置 Hadoop 环境** 由于 SeaTunnel 经常与 Hadoop 生态系统交互,因此需要确保 Hadoop 环境已正确配置 Kerberos 支持。主要修改以下几个文件: - **core-site.xml**: 添加以下属性以启用 Kerberos 认证。 ```xml <property> <name>hadoop.security.authentication</name> <value>kerberos</value> </property> <property> <name>dfs.namenode.kerberos.principal</name> <value>nn/_HOST@YOUR-REALM.COM</value> </property> ``` - **hdfs-site.xml**: 设置 NameNode 和 DataNode 的 Kerberos principal。 ```xml <property> <name>dfs.namenode.kerberos.internal.spnego.principal</name> <value>HTTP/_HOST@YOUR-REALM.COM</value> </property> ``` 确保以上配置文件被放置在 SeaTunnel 各节点的 `$HADOOP_CONF_DIR` 中。 --- ##### (3)**调整 SeaTunnel 配置** 在 SeaTunnel 的任务配置文件或启动脚本中,添加以下参数以便支持 Kerberos 认证: - **环境变量设置**: 在启动 SeaTunnel 之前,通过环境变量指定 Kerberos 相关信息。 ```bash export HADOOP_USER_NAME=seatunnel export JAVA_OPTS="-Djava.security.auth.login.config=/path/to/jaas.conf \ -Dsun.security.krb5.debug=true" ``` - **jaas.conf 文件**: 编辑 JAAS 配置文件以定义登录模块。 ```conf Client { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true storeKey=true keyTab="/path/to/seatunnel.keytab" principal="seatunnel/YOUR-HOSTNAME@YOUR-REALM.COM"; }; ``` 将此文件保存为 `/path/to/jaas.conf`,并通过 `-Djava.security.auth.login.config` 参数指向它。 --- ##### (4)**Sink 插件的具体配置** 如果使用 Hive Sink 插件,则需在其配置中显式声明 Kerberos 相关参数。例如: ```yaml sink { type = "hive" table_name = "default.seatunnel_krb_test" metastore_uri = "thrift://namenode001:9083" kerberos_principal = "seatunnel/YOUR-HOSTNAME@YOUR-REALM.COM" kerberos_keytab_path = "/path/to/seatunnel.keytab" } ``` 上述配置指定了 Hive Metastore URI 以及 Kerberos principal 和 keytab 文件的位置[^2]。 --- ##### (5)**测试连接** 完成上述配置后,可尝试提交一个简单的 SeaTunnel 作业以验证 Kerberos 认证是否生效。例如: ```bash ./bin/flink run ./examples/batch/sql-jdbc-to-hive-example.jar \ --source-url jdbc:mysql://mysql-host:3306/test_db \ --sink-table default.seatunnel_krb_test ``` 观察日志输出,确认是否存在任何 Kerberos 认证相关的异常。 --- #### 4. **常见问题排查** - **问题:无法获取 TGT(Ticket Granting Ticket)。** 解决方案:检查 keytab 文件的有效性和权限;确保客户端时间与 KDC 时间一致。 - **问题:HiveServer2 报错“GSS initiate failed”。** 解决方案:核实 jaas.conf 文件的内容无误;重新导入 keytab 文件。 - **问题:性能瓶颈导致 HiveServer2 负载过高。** 推荐优化措施包括增加 HiveServer2 实例数量或将查询分流至多个分区表[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DolphinScheduler社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值