检查点是一种容错恢复机制。这种机制确保程序在运行时,即使突然遇到异常,也能自行恢复。
检查点存储是一种存储检查点数据的存储机制。
SeaTunnel Engine支持以下检查点存储类型:
我们使用微内核设计模式将检查点存储模块从引擎中分离出来。这允许用户实现他们自己的检查点存储模块。
checkpoint-storage-api
是检查点存储模块API,它定义了检查点存储模块的接口。
如果你想实现你自己的检查点存储模块,你需要实现CheckpointStorage
并提供相应的CheckpointStorageFactory
实现。
seatunnel-server
模块的配置在seatunnel.yaml
文件中。
seatunnel: engine: checkpoint: storage: type: hdfs #检查点存储的插件名称,支持hdfs(S3, local, hdfs), 默认为localfile (本地文件), 但这种方式已弃用 # 插件配置 plugin-config: namespace: #检查点存储父路径,默认值为/seatunnel/checkpoint/ K1: V1 # 插件其它配置 K2: V2 # 插件其它配置
注意: namespace必须以"/"结尾。
阿里云oss是基于hdfs-file,所以你可以参考hadoop oss文档来配置oss.
除了与oss buckets交互外,oss客户端需要与buckets交互所需的凭据。 客户端支持多种身份验证机制,并且可以配置使用哪种机制及其使用顺序。也可以使用of org.apache.hadoop.fs.aliyun.oss.AliyunCredentialsProvider的自定义实现。 如果您使用AliyunCredentialsProvider(可以从阿里云访问密钥管理中获得),它们包括一个access key和一个secret key。 你可以这样配置:
seatunnel: engine: checkpoint: interval: 6000 timeout: 7000 storage: type: hdfs max-retained: 3 plugin-config: storage.type: oss oss.bucket: your-bucket fs.oss.accessKeyId: your-access-key fs.oss.accessKeySecret: your-secret-key fs.oss.endpoint: endpoint address fs.oss.credentials.provider: org.apache.hadoop.fs.aliyun.oss.AliyunCredentialsProvider
有关Hadoop Credential Provider API的更多信息,请参见: Credential Provider API.
阿里云oss凭证提供程序实现见: 验证凭证提供
S3基于hdfs-file,所以你可以参考hadoop s3文档来配置s3。
除了与公共S3 buckets交互之外,S3A客户端需要与buckets交互所需的凭据。 客户端支持多种身份验证机制,并且可以配置使用哪种机制及其使用顺序。也可以使用com.amazonaws.auth.AWSCredentialsProvider的自定义实现。 如果您使用SimpleAWSCredentialsProvider(可以从Amazon Security Token服务中获得),它们包括一个access key和一个secret key。 您可以这样配置:
seatunnel: engine: checkpoint: interval: 6000 timeout: 7000 storage: type: hdfs max-retained: 3 plugin-config: storage.type: s3 s3.bucket: your-bucket fs.s3a.access.key: your-access-key fs.s3a.secret.key: your-secret-key fs.s3a.aws.credentials.provider: org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider
如果您使用InstanceProfileCredentialsProvider
,它支持在EC2 VM中运行时使用实例配置文件凭据,您可以检查iam-roles-for-amazon-ec2. 您可以这样配置:
seatunnel: engine: checkpoint: interval: 6000 timeout: 7000 storage: type: hdfs max-retained: 3 plugin-config: storage.type: s3 s3.bucket: your-bucket fs.s3a.endpoint: your-endpoint fs.s3a.aws.credentials.provider: org.apache.hadoop.fs.s3a.InstanceProfileCredentialsProvider
有关Hadoop Credential Provider API的更多信息,请参见: Credential Provider API.
如果您使用HDFS,您可以这样配置:
seatunnel: engine: checkpoint: storage: type: hdfs max-retained: 3 plugin-config: storage.type: hdfs fs.defaultFS: hdfs://localhost:9000 // 如果您使用kerberos,您可以这样配置: kerberosPrincipal: your-kerberos-principal kerberosKeytabFilePath: your-kerberos-keytab
如果HDFS是HA模式,您可以这样配置:
seatunnel: engine: checkpoint: storage: type: hdfs max-retained: 3 plugin-config: storage.type: hdfs fs.defaultFS: hdfs://usdp-bing seatunnel.hadoop.dfs.nameservices: usdp-bing seatunnel.hadoop.dfs.ha.namenodes.usdp-bing: nn1,nn2 seatunnel.hadoop.dfs.namenode.rpc-address.usdp-bing.nn1: usdp-bing-nn1:8020 seatunnel.hadoop.dfs.namenode.rpc-address.usdp-bing.nn2: usdp-bing-nn2:8020 seatunnel.hadoop.dfs.client.failover.proxy.provider.usdp-bing: org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
如果HDFS在hdfs-site.xml
或core-site.xml
中有其他配置,只需使用seatunnel.hadoop.
前缀设置HDFS配置即可。
seatunnel: engine: checkpoint: interval: 6000 timeout: 7000 storage: type: hdfs max-retained: 3 plugin-config: storage.type: hdfs fs.defaultFS: file:/// # 请确保该目录具有写权限
当storage:type为hdfs时,默认关闭cache。如果您想启用它,请设置为disable.cache: false
。
seatunnel: engine: checkpoint: interval: 6000 timeout: 7000 storage: type: hdfs max-retained: 3 plugin-config: storage.type: hdfs disable.cache: false fs.defaultFS: hdfs:/// # Ensure that the directory has written permission
or
seatunnel: engine: checkpoint: interval: 6000 timeout: 7000 storage: type: hdfs max-retained: 3 plugin-config: storage.type: hdfs disable.cache: false fs.defaultFS: file:///