在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 在元数据和数据领域生产级别的结合,都能使用户更好地解决实际问题,为业务带来更多价值。

Flink 作为现代数据仓库的统一引擎:Hive 集成生产就绪!的更多相关文章

  1. 大规模数据分析统一引擎Spark最新版本3.3.0入门实战

    @ 目录 概述 定义 Hadoop与Spark的关系与区别 特点与关键特性 组件 集群概述 集群术语 部署 概述 环境准备 Local模式 Standalone部署 Standalone模式 配置历史 ...

  2. 带你玩转Flink流批一体分布式实时处理引擎

    摘要:Apache Flink是为分布式.高性能的流处理应用程序打造的开源流处理框架. 本文分享自华为云社区<[云驻共创]手把手教你玩转Flink流批一体分布式实时处理引擎>,作者: 萌兔 ...

  3. 如何使用Hive集成Solr?

    (一)Hive+Solr简介 Hive作为Hadoop生态系统里面离线的数据仓库,可以非常方便的使用SQL的方式来离线分析海量的历史数据,并根据分析的结果,来干一些其他的事情,如报表统计查询等. So ...

  4. Apache Hudi 与 Hive 集成手册

    1. Hudi表对应的Hive外部表介绍 Hudi源表对应一份HDFS数据,可以通过Spark,Flink 组件或者Hudi客户端将Hudi表的数据映射为Hive外部表,基于该外部表, Hive可以方 ...

  5. Hive集成HBase;安装pig

    Hive集成HBase 配置 将hive的lib/中的HBase.jar包用实际安装的Hbase的jar包替换掉 cd /opt/hive/lib/ ls hbase-0.94.2*  rm -rf ...

  6. Hive集成HBase详解

    摘要 Hive提供了与HBase的集成,使得能够在HBase表上使用HQL语句进行查询 插入操作以及进行Join和Union等复杂查询   应用场景 1. 将ETL操作的数据存入HBase 2. HB ...

  7. 大数据技术之_11_HBase学习_02_HBase API 操作 + HBase 与 Hive 集成 + HBase 优化

    第6章 HBase API 操作6.1 环境准备6.2 HBase API6.2.1 判断表是否存在6.2.2 抽取获取 Configuration.Connection.Admin 对象的方法以及关 ...

  8. Hbase与hive集成与对比

    HBase与Hive的对比 1.Hive (1) 数据仓库 Hive的本质其实就相当于将HDFS中已经存储的文件在Mysql中做了一个双射关系,以方便使用HQL去管理查询. (2) 用于数据分析.清洗 ...

  9. hbase与hive集成:hive读取hbase中数据

    1.创建hbase jar包到hive lib目录软连接 hive需要jar包: hive-hbase-handler-0.13.1-cdh5.3.6.jar zookeeper-3.4.5-cdh5 ...

  10. Hive集成Mysql作为元数据时,提示错误:Specified key was too long; max key length is 767 bytes

    在进行Hive集成Mysql作为元数据过程中.做全然部安装配置工作后.进入到hive模式,运行show databases.运行正常,接着运行show tables:时却报错. 关键错误信息例如以下: ...

随机推荐

  1. Android热点SoftAP使用方式

    一.背景 最近项目中Android设备需要获取SoftAP信息(wifi账号.密码.IP等),然后传递到投屏器中,那么如何获取到SoftAP信息呢?我们知道可以通过WifiManager类里的方法可以 ...

  2. 关于全景(360)图片拼接的方法(Opencv3.0 Stitcher)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  3. 专访虚拟人科技:如何利用 3DCAT 实时云渲染打造元宇宙空间

    自古以来,人们对理想世界的探索从未停止,而最近元宇宙的热潮加速了这一步伐,带来了许多新的应用.作为元宇宙的关键入口,虚拟现实(VR)将成为连接虚拟和现实的桥梁.苹果发布的VISION PRO头戴设备将 ...

  4. 记录--canvas基础操作

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 1. 以下是一些有关使用Canvas的技巧: 绘制基本形状:Canvas可以用于绘制各种基本形状,如矩形.圆形.线条等.使用 fillRe ...

  5. 在ubuntu安装QT

    在ubuntu安装 安装motrix motrix下载 下载对应版本的QT QT下载 授权run文件 sudo chmod +x xxx.run 运行run文件 ./ xxx.run 运行界面 安装完 ...

  6. KingbaseES V8R6 等待事件之LWLock Buffer_IO

    等待事件含义 当进程同时尝试访问相同页面时,等待其他进程完成其输入/输出(I/O)操作时,会发生LWLock:BufferIO等待事件.其目的是将同一页读取到共享缓冲区中. 每个共享缓冲区都有一个与L ...

  7. archlinux 时移(timeshift)不会自动创建快照

    这是因为没有开启定时任务服务 解决办法 1.安装定时任务服务 sudo pacman -S cronie 2.设置自启动 sudo systemctl enble cronie

  8. 2 CSS基本选择器

    2 基本选择器 id选择器 id选择器使用"#"进行标识,后面紧跟id名,其基本语法格式为: #id名{属性1:属性值1;属性2:属性值2;属性3:属性值3;} 该语法中,id名即 ...

  9. #状压dp,背包,贪心#洛谷 5997 [PA2014]Pakowanie

    题目 你有 \(n\) 个物品和 \(m\) 个包.物品有重量,且不可被分割: 包也有各自的容量.要把所有物品装入包中,至少需要几个包? 分析 考虑物品的数量很小,首先优先选容量大的背包, 设\(f[ ...

  10. Jetty的http3模块

    启用http3模块,执行如下命令: java -jar $JETTY_HOME/start.jar --add-modules=http3 命令的输出,如下: ALERT: There are ena ...