c++上传oss中文路径报错_如何将Flink的savepoint保存到阿里云OSS上

本文介绍了如何将Flink的Savepoint保存到阿里云OSS,包括配置Flink支持OSS,修改flink-conf.yaml,设置相关权限,通过REST API停止并恢复Job,以及验证Savepoint的成功保存。详细步骤覆盖从基础概念到实际操作的全过程。
摘要由CSDN通过智能技术生成

导读:Flink 提供了Savepoint保存点,我们可以使用 Savepoint 进行 Flink 作业的停止与重启恢复等。而保存点存储位置是由flink-conf.yaml配置文件中的state.savepoints.dir属性进行指定的。常见如存储在本地 file:///flink/savepoints或 HDFS hdfs:///flink/savepoints,Flink同时也支持了其他的Flie System,本章主要讨论的是如何将savepoint存于阿里云OSS上。

基础概念

  • Flink Savepoint,是依据 Flink checkpointing 机制所创建的流作业执行状态的一致镜像。 可以使用 Savepoint 进行 Flink 作业的停止与重启、fork 或者更新。
  • OSS,是阿里云提供的海量、安全、低成本、高可靠的云存储服务,提供99.9999999999%的数据可靠性。使用RESTful API 可以在互联网任何位置存储和访问,容量和处理能力弹性扩展,多种存储类型供选择全面优化存储成本。
69cf91967eeff9d5f87c64aac1226339.png

配置

注:本例Flink采用Standalone Cluster形式部署,版本 1.10

1、为了使Flink支持OSS,需要将 /flink/opt 目录中将 flink-oss-fs-hadoop-1.10.0.jar 复制到 /flink/lib 目录下。其作用是为oss:// scheme的 URLs 注册默认的FileSystem包装器。

61e9dc5da5ad7e1e506da3039acb9b6d.png

2、修改/flink/conf/flink-conf.yaml 文件中state.savepoints.dir属性,缺省Savepoint目标目录

state.savepoints.dir: oss:///
b491a5d212fd0b787f0b06cfa8ac2e32.png

3、设置OSS FileSystem包装器后还需要添加确保允许Flink可以访问OSS的一些配置

e5b2ef520cf50876109758253aa739aa.png
#必须配置的参数fs.oss.endpoint、fs.oss.accessKeyId、fs.oss.accessKeySecret#其他配置可参考http://hadoop.apache.org/docs/current/hadoop-aliyun/tools/hadoop-aliyun/index.html

4、启动集群

#启动集群/flink/bin/start-cluster.sh 
481fb1d10854932115c3c9b26833c46b.png

测试

1、通过Apache Flink Dashboard 提交一个Flink Job

7240534f19afa3fae4ba01736b229530.png

2、使用REST API 接口停止 Job

Flink 官方提供了一套REST API,可用于查询正在运行的作业以及最近完成的作业的状态和统计信息等。https://ci.apache.org/projects/flink/flink-docs-stable/monitoring/rest_api.html

这里我们调用 /jobs/:jobid/stop 停止Job,这里有两个参数:

  • targetDirectory:指定savePoint的保存地址(根据官方文档说明,在这里指定目标目录会覆盖缺省值。而如果既未配置缺省值也未指定自定义目标目录,则触发 Savepoint 将失败)
  • drain:(可选)设置为true可以在获取保存点之前刷新MAX_WATERMARK,以清除等待计时器启动的任何状态
b9b2ada5a994a504db15b74d8021b9e7.png

调用后查看结果,返回一个requestId值,该值是接下来要获取savepoint路径的triggerid。

a6da7ecad241f9c67c2357e9882d2a84.png

3、由于调用的停止Job服务是一个异步操作,并没有立即返回给我们savepoint路径。这时候需要调用 /jobs/:jobid/savepoints/:triggerid 获取savePoint路径

2147d69d01f50c59e4bb31f87f5c7a67.png

调用后结果返回了savepointPath

7e865e73aff66bdd20934fb9232ff687.png

4、查看阿里云 OSS,savepoint保存成功

884d5f8a4a3d5a265eff308fce144c40.png

5、使用savepoint恢复Job,通过REST API /jars/:jarid/run 接口恢复Job,savepointPath参数中上传刚才获取到的savePointPath

ea5fea44f56727f6fbbc5c97c8248300.png
69c0947fdcbf5d889dcc00c52799ea01.png

Job 恢复成功

f11dc983549f62ec3cb7eddbaa99345e.png

最后

以上就是如何将Flink的savepoint保存到阿里云OSS上解决方案,大致为以下几部

  • 移动 flink-oss-fs-hadoop-1.10.0.jar至lib 目录下
  • 修改flink-conf.yaml的 state.savepoints.dir属性
  • 在flink-conf.yaml中加入允许Flink访问OSS的属性

感谢您的阅读,如果喜欢本文欢迎关注和转发,本头条号将坚持持续分享IT技术知识。对于文章内容有其他想法或意见建议等,欢迎提出共同讨论共同进步

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值