Flink 作为现代数据仓库的统一引擎:Hive 集成生产就绪!

简介: 如果你对以上问题深有同感,那说明这篇文章很适合你。我们来看看如何真正解决这个问题。接下来我将带各位了解下 Flink 与 Hive 生产级别的整合工作。

在2020年,你的数据仓库和基础设施需要满足哪些需求?

我们总结了几下几点:

首先,当下的企业正快速转向更实时化的模式,这要求企业具备对线上流式数据进行低延迟处理的能力,以满足实时(real-time)或近实时(near-real-time)的数据分析需求。人们对从数据产生到数据可用之间延迟的容忍度越来越低。曾经几个小时甚至几天的延误不再被接受。用户期待的是几分钟甚至几秒钟的数据端到端体验。

第二,数据基础设施需要具备同时处理线上和线下数据的能力,两种模式在实际应用中都不可或缺。除了上面提到的流处理,用户也需要批处理做即席查询(ad-hoc query)和数据挖掘。数据基础设施不应该要求用户二选一,而应该提供两个选项并且都是高质量的。

第三,数据工程师、数据科学家、分析师和运维人员都在渴望一套统一的数据技术栈,以便更轻松的使用。大数据领域的技术栈已经支离破碎很多年了,企业可能有一套流处理系统,一套批处理系统,一套线上数据分析系统。这基本都是由于当年流处理框架不够成熟而被迫采用过时的 lambda 架构造成的问题。现在不同了,流处理已成为主流,终端用户不必再学习多种技能和维护各种复杂的工具和数据处理管道(data pipeline)。用户渴望的是一套统一的简单易学易维护的方案。

如果你对以上问题深有同感,那说明这篇文章很适合你。我们来看看如何真正解决这个问题。

接下来我将带各位了解下 Flink 与 Hive 生产级别的整合工作。

Flink 与 Hive 生产级整合

Flink 一直遵循“ 流优先,批是流的一个特例”的思想理念。在这一思想的指导下,Flink 将最先进的流式处理技术运用到批处理中,使得 Flink 的批处理能力一早就令人印象深刻。特别是在 Flink 1.10 中我们基本完成了从1.9开始的对 Blink planner 的整合工作后,Flink SQL 的批处理能力更上一层楼。

Hive 在大数据生态中已成为标准的数据仓库组件。它不仅仅是一个 SQL 引擎,也是一个数据管理系统。但由于自身的局限,Hive 在当下面临很大的挑战,也无法满足的用户需求。

基于此,我们从 Flink 1.9 推出了 Flink 和 Hive 整合的 beta 版本。在过去几个月中,我们基于用户的反馈,在各个方面都对产品进行了加强。我很高兴的宣布,Flink 和 Hive 的整合在 Flink 1.10 版本中能实现生产可用!

下面来为大家介绍一些细节。

统一的元数据管理

Hive Metastore 已逐渐成为 Hadoop 生态中元数据管理的中枢。很多公司都用 Hive Metastore 管理他们的 Hive 甚至非 Hive 的元数据。

Flink 1.9 中我们推出了 Flink 的 HiveCatalog,将 Flink 对接 Hive Metastore 中丰富的元数据。HiveCatalog 有两层作用。

  • 一是它允许 Flink 用户将 Flink 本身的元数据,包括表、函数等,存储到 Hive Metastore 中。
  • 二是它允许 Flink 使用 Hive Metastore 中已有的 Hive 元数据,使得 Flink 可以读写 Hive 的表。

Flink 1.10 中的新功能是用户可以对接几乎所有版本的 Hive Metastore。这里有一个例子是如何将 Flink 的 Kafka 表元数据存储到 Hive Metastore 中。

代码示例:
https://ci.apache.org/projects/flink/flink-docs-release-1.10/dev/table/hive/hive_catalog.html#example

流处理

由于 Hive 自身的缺陷,用户无法获得实时数据导入的能力。但通过与 Flink 的整合,用户可以解锁一些其他很有用的场景,比如:

  • 对 Flink 的实时数据和 Hive 的离线数据做 join
  • 通过 Flink 回填 Hive 的数据

Hive 版本兼容

在 Flink 1.10 中,我们兼容了几乎所有 Hive 1.x, 2.x, 3.x 的版本。

复用 Hive 函数

在 Flink 1.9 中用户已经可以复用 Hive UDF。这对 Hive 用户是极大的利好,因为用户不需要再重新开发函数,省时省力。

Flink 1.10 引入了 module 的概念,并通过 HiveModule 支持了所有 Hive 自带的函数(built-in functions)。Hive 社区在过去很多年积累了数量可观的有用的自带函数,这将方便用户在 Flink 更好地完成他们的工作。

加强读写 Hive 数据

1.10 加强了对 Hive 数据读写的支持。

在读方面,Flink 可以读取 Hive 的分区表和视图(view);同时,我们添加了很多读优化,比如分区裁剪(partition-pruning)和 projection pushdown 来减少从文件系统摄入的数据;对 ORC 文件,我们加入了向量化读取。

在写方面,Flink 引入了“INSERT INTO” 和 “INSERT OVERWRITE” 语法;此外,Flink 可以静态和动态写入 Hive 分区表。

更多的数据类型

1.10 中我们支持了更多的常用 Hive 类型。

后续规划

社区计划在用户反馈的基础上进一步优化两个系统间的整合。一些 1.11 的目标包括:

  • Hive 的 near-real-time streaming sink
  • 原生 Parquet 文件读取
  • 额外的交互性 - 允许用户从 Flink 创建 Hive 的表和函数等
  • 更好地开箱即用性
  • Hive 语法的支持

数仓正在向更实时化的方向发展,与 Flink 的紧密结合会使这个趋势向前更进一步。

Flink 1.10 中与 Hive 在元数据和数据领域生产级别的结合,都能使用户更好地解决实际问题,为业务带来更多价值。

相关实践学习
基于Hologres+Flink搭建GitHub实时数据大屏
通过使用Flink、Hologres构建实时数仓,并通过Hologres对接BI分析工具(以DataV为例),实现海量数据实时分析.
实时计算 Flink 实战课程
如何使用实时计算 Flink 搞定数据处理难题?实时计算 Flink 极客训练营产品、技术专家齐上阵,从开源 Flink功能介绍到实时计算 Flink 优势详解,现场实操,5天即可上手! 欢迎开通实时计算 Flink 版: https://cn.aliyun.com/product/bigdata/sc Flink Forward Asia 介绍: Flink Forward 是由 Apache 官方授权,Apache Flink Community China 支持的会议,通过参会不仅可以了解到 Flink 社区的最新动态和发展计划,还可以了解到国内外一线大厂围绕 Flink 生态的生产实践经验,是 Flink 开发者和使用者不可错过的盛会。 去年经过品牌升级后的 Flink Forward Asia 吸引了超过2000人线下参与,一举成为国内最大的 Apache 顶级项目会议。结合2020年的特殊情况,Flink Forward Asia 2020 将在12月26日以线上峰会的形式与大家见面。
相关文章
|
12月前
|
存储 消息中间件 Kafka
基于 Flink 的中国电信星海时空数据多引擎实时改造
本文整理自中国电信集团大数据架构师李新虎老师在Flink Forward Asia 2024的分享,围绕星海时空智能系统展开,涵盖四个核心部分:时空数据现状、实时场景多引擎化、典型应用及未来展望。系统日处理8000亿条数据,具备亚米级定位能力,通过Flink多引擎架构解决数据膨胀与响应时效等问题,优化资源利用并提升计算效率。应用场景包括运动状态识别、个体行为分析和群智感知,未来将推进湖仓一体改造与三维时空服务体系建设,助力数字化转型与智慧城市建设。
1006 3
基于 Flink 的中国电信星海时空数据多引擎实时改造
|
消息中间件 关系型数据库 MySQL
基于 Flink CDC YAML 的 MySQL 到 Kafka 流式数据集成
基于 Flink CDC YAML 的 MySQL 到 Kafka 流式数据集成
1276 0
|
消息中间件 关系型数据库 MySQL
基于 Flink CDC YAML 的 MySQL 到 Kafka 流式数据集成
本教程展示如何使用Flink CDC YAML快速构建从MySQL到Kafka的流式数据集成作业,涵盖整库同步和表结构变更同步。无需编写Java/Scala代码或安装IDE,所有操作在Flink CDC CLI中完成。首先准备Flink Standalone集群和Docker环境(包括MySQL、Kafka和Zookeeper),然后通过配置YAML文件提交任务,实现数据同步。教程还介绍了路由变更、写入多个分区、输出格式设置及上游表名到下游Topic的映射等功能,并提供详细的命令和示例。最后,包含环境清理步骤以确保资源释放。
1014 2
基于 Flink CDC YAML 的 MySQL 到 Kafka 流式数据集成
|
SQL 人工智能 关系型数据库
Flink CDC YAML:面向数据集成的 API 设计
本文整理自阿里云智能集团 Flink PMC Member & Committer 徐榜江(雪尽)在 FFA 2024 分论坛的分享,涵盖四大主题:Flink CDC、YAML API、Transform + AI 和 Community。文章详细介绍了 Flink CDC 的发展历程及其优势,特别是 YAML API 的设计与实现,以及如何通过 Transform 和 AI 模型集成提升数据处理能力。最后,分享了社区动态和未来规划,欢迎更多开发者加入开源社区,共同推动 Flink CDC 的发展。
844 12
Flink CDC YAML:面向数据集成的 API 设计
|
SQL 弹性计算 DataWorks
Flink CDC 在阿里云 DataWorks 数据集成入湖场景的应用实践
Flink CDC 在阿里云 DataWorks 数据集成入湖场景的应用实践
636 6
|
SQL 人工智能 关系型数据库
Flink CDC YAML:面向数据集成的 API 设计
Flink CDC YAML:面向数据集成的 API 设计
634 5
|
消息中间件 Java 微服务
微服务——SpringBoot使用归纳——Spring Boot中集成ActiveMQ——发布/订阅消息的生产和消费
本文详细讲解了Spring Boot中ActiveMQ的发布/订阅消息机制,包括消息生产和消费的具体实现方式。生产端通过`sendMessage`方法发送订阅消息,消费端则需配置`application.yml`或自定义工厂以支持topic消息监听。为解决点对点与发布/订阅消息兼容问题,可通过设置`containerFactory`实现两者共存。最后,文章还提供了测试方法及总结,帮助读者掌握ActiveMQ在异步消息处理中的应用。
532 0
|
存储 缓存 Cloud Native
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
|
SQL Cloud Native 关系型数据库
云原生数据仓库使用问题之分组优化如何实现
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
Cloud Native 关系型数据库 OLAP
云原生数据仓库操作报错合集之遇到“table does not exist”错误,该怎么办
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。

相关产品

  • 实时计算 Flink版