Flink 高效 sink 写入 oss | 学习笔记

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
简介: 快速学习 Flink 高效 sink 写入 oss。

开发者学堂课程【数据湖 JindoFS + OSS 实操干货36讲Flink 高效 sink 写入 oss】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/833/detail/13967


Flink 高效 sink 写入 oss

 

内容介绍

.背景介绍

.功能介绍

.如何配置

.如何使用

 

一、背景介绍

Apache Flink 简介

Apache Flink 是新一代大数据计算引擎的代表,以分布式流计算为核心,同时支持批处理。

特点:

低延时: Flink 流式计算可以做到亚秒甚至毫秒级延时,相比之下Spa流计算很难达到毫秒级

高吞吐: Fink 以分布式快照算法实现容错对吞吐量的影响很小

高容错:基于分布式快照算法,Fink实现了低代价、高效的容错表现,以及 Exactly Once 语义保证。

JindoFS Flink Connector 产生背景

阿里云对象存储 Object Storage Service(oss):

海量:无限容量,弹性伸缩

安全:129的数据安全性,多种加密方式

低成本:远低于云磁盘,且有多种存储方式、生命周期管理等节约成本

高可靠:服务可用性99.9

已服务于海量用户

 

二、功能介绍

Flink 应用广泛:

流计算领域业内主要解决方案

Apache 基金会最活跃项目之一

未来:流批一体、在线分析

Flink 使用痛点:

开源 Apache Flink 尚不支持直接写入OSS

Hadoop OSS SDK 写入性能不一定满足需求

JindoFS Flink Connector 介绍

整体架构:

1.两阶段 Checkpoint (检查点)机制:

第一阶段 MPU (MultiPartUpload,分片上传)写入 OSS

第二阶段 MPU 提交

2.Recoverable Writer 可恢复性写入:

临时文件以普通文件格式上传 OSS

Sink节点状态快照

JindoFS Flink Connector 介绍

写入 OSS vS. 写入亚马逊 S3:

Native 实现:数据写入以C++代码实现,相比 java 更高效

高速读写:多线程读写临时文件,对大于1的文件优势尤其明显

数据缓存:读写 OSS 实现本地缓存,加速外部访问

OSs 访问加速, JindoFs 提供新支持1.png

三、如何配置JindoFS Flink Connector

1.环境要求

集群上有开源版本 Flink软件,版本不低于1.10.1

2.SDK 配置:

下载所需 SDK 文件:

jindo-flink-sink-S{(version)} jar

jindofs-sdk-S{version} jar

下载链接( Github ):

@https://github.com/aliyun/alibabacloud-jin/blob/master/docs/ jindofs sdk_ download.md

将两个jar放置于集群 Flink 目录下 lib 文件夹

-Flink 根目录通常可由 SFLINKHOME 环境变量获取

-集群所有节点均需配置

Java SPI:自动加载资源,无需额外配置

文档链接(Github):

https://github.com/aliyun/alibabacloud-jing/blob/master/docs/flink/jindofs_sdk on_flink_for_oss.md

四、在程序中使用 JindoFS Flink Connector

确保集群能够访问 OSS Bucket

1. 前提:已购买 Oss 产品,Oss 网站链接 . OSS OSS :

https://www.aliyun.com/product/oss

2.确保能够访问 OSS Bucket,例如正确配置密钥或免密服务等

使用合适的路径,流式写入 OSS Bucket

写入 ss 须使用 os 前缀路径,类似于

ossuser-bucket->user--defined--sink-dir>

更多优化! JindoFS SDK加速OSS访问,参考:

https://github. com/aliyun/alibabacloud-jir/blob/master/docs /jindofs_sdk_vs_hadoop_sdk.md

在程序中使用 JindoFS Flink Connector:Java

在程序中开启 Flink Checkpoint

前提:使用可重发的数据源, Kafka

通过 StreamExecutionEnvironment 对象打开 Checkpoint (示例)

建立:

StreamExecutionEnvironment env= StreamExecutionEnvironment.getExecutionEr

打开:

envenableCheckpointing(

示例程序

下文中, outputStream 是一个预先形成的 DataStream 对象,若需写入 ss,则可以这样添加sinkString outputPath ="oss:///":

StreamingFileSinksink= StreamingF. forRowformat

new Path(outputPath)

new SimpleStringEncoder("UTF-8)

)buildo:

outputStream.addSink(sink)

上述程序指定将 outputStream 中的 String 内容写入 ss 路径 oss //user-bucket-/user--defined--sink-dir>

最后还需用 envexecute 语句执行 Flin 作业,env 是已建立的  StreamExecutionEnviro 对象

最后,ava 作业打包为 jar 文件,并用 flink run在集群提交即可。

在程序中使用 JindoFS Flink Connector:更多配置

用户通过 flink run 提交 java pyflink 程序时可以额外自定义一些参数,格式

flink run-m yarn-cluster-yD key1= valuel-yD key2=value2

目前支持“熵注入”及“分片上传并行度”两项配置

熵注入 (entropy injection):

1.功能:将写入路径的一段特定字符串匹配出来,用一段随机的字符串进行替换

2.效果:削弱所谓片区 (sharding) 效应,提高写入效率

3.配置参数:

oss.entropy.key=

oss.entropy length=

分片上传并行度

配置参数: oss upload.max. concurrentuploads

默认值:当前可用的处理器数量


相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
2月前
|
消息中间件 关系型数据库 MySQL
大数据-117 - Flink DataStream Sink 案例:写出到MySQL、写出到Kafka
大数据-117 - Flink DataStream Sink 案例:写出到MySQL、写出到Kafka
201 0
|
7月前
|
Oracle 关系型数据库 数据处理
实时计算 Flink版产品使用合集之写入OSS是否要开通oss-hdfs服务
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
7月前
|
Oracle 关系型数据库 API
实时计算 Flink版产品使用合集之当sink到elasticsearch时,可以指定es的指定字段吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
实时计算 Flink版产品使用合集之当sink到elasticsearch时,可以指定es的指定字段吗
|
2月前
|
消息中间件 NoSQL Kafka
大数据-116 - Flink DataStream Sink 原理、概念、常见Sink类型 配置与使用 附带案例1:消费Kafka写到Redis
大数据-116 - Flink DataStream Sink 原理、概念、常见Sink类型 配置与使用 附带案例1:消费Kafka写到Redis
199 0
|
4月前
|
SQL 关系型数据库 测试技术
实时数仓 Hologres操作报错合集之执行Flink的sink操作时出现报错,是什么原因
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
4月前
|
存储 Java 关系型数据库
实时计算 Flink版产品使用问题之以jar包方式同步数据是否需要定义存储oss的位置
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4月前
|
存储 SQL Java
实时数仓 Hologres产品使用合集之如何使用Flink的sink连接
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
5月前
|
消息中间件 NoSQL Redis
实时计算 Flink版产品使用问题之配置了最大连续失败数不为1,在Kafka的精准一次sink中,如果ck失败了,这批数据是否会丢失
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
消息中间件 SQL Kafka
实时计算 Flink版产品使用问题之如何实现OSS数据到Kafka的实时同步
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
NoSQL 关系型数据库 MySQL
实时计算 Flink版产品使用问题之如何确保多并发sink同时更新Redis值时,数据能按事件时间有序地更新并且保持一致性
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。