![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
hudi
文章平均质量分 81
BigDataToAI
分享大数据经验
展开
-
Apache Hudi 0.12.2发布
我们的目标是维护 0.12 更长时间,并通过最新的 0.12.x 版本提供稳定版本供用户迁移。此版本 (0.12.2) 是最新的 0.12 版本。原创 2023-01-11 22:14:54 · 395 阅读 · 1 评论 -
k8s hudi表快速测试指南
如果任务名称为basic-example,那么还需要基于上述core-site.xml创建hadoop-config-basic-example configmap。重启rpcbind服务与nfs服务,nfs是一个RPC程序,使用它前,需要映射好端口,通过rpcbind设定。在default namespace使用core-site.xml创建configmap,core-site。/data1/nfs/rootfs——NFS服务器端的目录,用于与nfs客户端共享。sync——资料同步写入内存和硬盘。原创 2022-12-16 15:03:19 · 891 阅读 · 0 评论 -
Spark SQL操作HUDI表实践
从 0.9.0 开始 hudi 已经支持 hudi 内置的 FileIndex:HoodieFileIndex 来查询 hudi 表,支持分区剪枝和 metatable 查询。这将有助于提高查询性能。它还支持非全局查询路径,这意味着用户可以通过基本路径查询表,而无需在查询路径中指定“*”。有关支持的所有表类型和查询类型的更多信息,请参阅表类型和查询。如果使用location语句指定一个位置,或者使用create external table显式地创建表,那么它就是一个外部表,否则它被认为是一个内部表。原创 2022-12-16 15:01:58 · 5511 阅读 · 1 评论 -
解决spark sql读取hudi表出现偶然读不出来问题分析
用beeline连接spark thriftserver或者kyuubi(spark 3.3.0)查询hudi mor表,发现对于同一个spark SQL在同一个beeline session里面不同时间查到的东西都是一样的。除此之外还有个问题就是,在同一个beeline session里面再过一段时间后,由于有些文件被合并了,再查会报以前的log文件找不到的问题。或者设置如下参数,也就是metadata的过期时间,将其设置为hudi clean清理周期以内。原创 2022-10-28 11:05:09 · 1500 阅读 · 0 评论 -
解决hudi hms catalog中flink建表,spark无法写入问题
在hudi 0.12.0版本,flink和spark都可以基于hive metastore进行元数据管理,更多信息可参考:hudi HMS Catalog指南。也就是说基于hudi hms catalog,flink建表之后,flink或者spark都可以写,或者spark建表之后,spark或者flink都可以写。但是目前 hudi 0.12.0版本中存在一个问题,当使用flink hms catalog建hudi表之后,spark sql结合spark hms catalog将hive数据进行批量导入时原创 2022-10-17 20:39:22 · 1650 阅读 · 0 评论 -
字节跳动基于Hudi的数据湖集成实践
本文是字节跳动数据平台开发套件团队在Flink Forward Asia 2021: Flink Forward 峰会上的演讲,着重分享了字节跳动数据湖技术上的选型思考和探索实践。本文重点分享字节的探索实践,对话框回复数字9可以阅读关于技术选型的思考。文 | Gary Li 字节跳动数据平台开发套件团队高级研发工程师,数据湖开源项目Apache Hudi PMC Member在选择了基于Hudi的数据湖框架后,我们基于字节跳动内部的场景,打造定制化落地方案。我们的目标是通过Hudi来支持所有带U转载 2022-02-14 23:55:28 · 1220 阅读 · 0 评论 -
Flink与Spark读写parquet文件全解析
Parquet介绍Parquet 是一种开源文件格式,用于处理扁平列式存储数据格式,可供 Hadoop 生态系统中的任何项目使用。 Parquet 可以很好地处理大量复杂数据。它以其高性能的数据压缩和处理各种编码类型的能力而闻名。与基于行的文件(如 CSV 或 TSV 文件)相比,Apache Parquet 旨在实现高效且高性能的平面列式数据存储格式。Parquet 使用记录粉碎和组装算法,该算法优于嵌套命名空间的简单展平。 Parquet 经过优化,可以批量处理复杂数据,并具有不同的方式来实现高效的原创 2022-01-26 09:46:37 · 3300 阅读 · 6 评论 -
使用 Apache Hudi、Kafka、Hive 和 Debezium 构建开放数据湖
总览在接下来的文章中,我们将学习如何使用开源软件 (OSS) 在 AWS 上构建数据湖,包括 Red Hat 的 Debezium、Apache Kafka、Kafka Connect、Apache Hive、Apache Spark、Apache Hudi 和 Hudi DeltaStreamer。 我们将使用完全托管的 AWS 服务来托管数据源、数据湖和开源工具。 这些服务包括 Amazon RDS、MKS、EKS、EMR 和 S3。工作流程如上面的架构图所示,这些是演示工作流.翻译 2022-01-26 01:43:52 · 1108 阅读 · 0 评论 -
Hudi源码分析之使用Flink Table/SQL实现Hudi Sources
在文章Flink Table/SQL自定义Sources和Sinks全解析(附代码)中我们说到在Flink Table/SQL中如何自定义Sources和Sinks,有了上述文章的基础,我们再来理解Flink Table/SQL是如何实现Hudi的数据读取与写入就比较容易了。动态表是自定义sources/sinks的核心,通过查阅源码我们可以知道在flink-hudi子模块中,org.apache.hudi.table.HoodieTableFactory类同时实现了DynamicTableSource原创 2022-01-23 23:31:17 · 2711 阅读 · 0 评论 -
hive metastore配置kerberos认证
hive从3.0.0开始提供hive metastore单独服务作为像presto、flink、spark等组件的元数据中心。但是默认情况下hive metastore在启动之后是不需要进行认证就可以访问的。所以本文基于大数据组件中流行的kerberos认证方式,对hive metastore进行认证配置。如果您还不了解如何单独启用hive metastore服务,那么您可以参考下述文章。Presto使用Docker独立运行Hive Standalone Metastore管理MinIO(S3)kdc原创 2022-01-11 02:48:40 · 3442 阅读 · 7 评论 -
hudi 0.10版本前瞻(20211202)
hudi在2021/11/26对0.10版本代码进行了冻结,并且在官网发布了0.10版本前瞻,我们来一起看一下0.10给我们带来了什么cool features。原创 2021-12-02 00:35:38 · 389 阅读 · 0 评论 -
hudi 0.10.0-SNAPSHOT适配hdp 3.1.5编译
新增hdp仓库在项目根目录下的pom文件中新增: <repository> <id>hdp</id> <url>https://repo.hortonworks.com/content/repositories/releases/</url> </repository>其他pom文件修改hive-jdbc依赖的hadoop-yarn-server-resourcemanager版本为SNA原创 2021-11-17 19:27:33 · 672 阅读 · 3 评论 -
Zeppelin结合Flink查询hudi数据
关于ZeppelinZeppelin是基于 Web 的notebook,是支持使用 SQL、Scala、Python、R 等进行数据驱动的交互式数据分析和协作的Notebook。Zeppelin支持多种语言后端,Apache Zeppelin 解释器允许将任何语言/数据处理后端插入 Zeppelin。 目前 Apache Zeppelin 支持 Apache Spark、Apache Flink、Python、R、JDBC、Markdown 和 Shell 等多种解释器。简单来说就是,让你通过Web原创 2021-10-10 00:50:48 · 635 阅读 · 0 评论 -
使用FLINK SQL从savepoint恢复hudi作业 (flink 1.13)
Flink从1.13版本开始支持在SQL Client从savepoint恢复作业。flink-savepoint介绍接下来我们从Flink SQL Client构建一个mysql cdc数据经kafka入hudi数据湖的例子。整体流程如下:在上述第二步中,我们通过手工停止kafka→hudi的Flink任务,然后在Flink SQL Client从savepoint进行恢复。下述工作类似于Flink SQL Client实战CDC数据入湖只是本文的flink版本为1.13.1,可参考其完成本文验证原创 2021-10-08 15:25:19 · 1941 阅读 · 0 评论 -
hudi的索引机制以及使用场景
Apache Hudi 使用索引来定位更新/删除所属的文件组。 对于 Copy-On-Write 表,通过避免需要连接整个数据集来确定要重写哪些文件,这可以实现快速的 upsert/delete 操作。 对于 Merge-On-Read 表,这种设计允许 Hudi 限制任何给定基本文件需要合并的记录数量。 具体来说,给定的基本文件只需要针对属于该基本文件一部分的记录的更新进行合并。 相比之下,没有索引组件的设计(例如:Apache Hive ACID)可能最终必须根据所有传入的更新/删除记录合并所有基本文件翻译 2021-10-04 00:22:13 · 3012 阅读 · 0 评论 -
使用prometheus监控hudi相关指标
前提首先请安装好prometheus、pushgateway以及grafana,如果还没安装请参考:Prometheus与pushGateway安装与使用Grafana安装指南对hudi相关指标进行监控,只需要在将数据写入hudi的时候进行监控配置即可,本文以Flink SQL Client实战CDC数据入湖为例,对其指标进行监控。基本环境介绍本文使用的prometheus、pushgateway以及grafana的地址和端口分别为:promotheus:hadoop1:9090原创 2021-09-30 18:22:47 · 602 阅读 · 0 评论 -
使用presto查询同步到hive的hudi数据
要完成如下任务,请确保已经使用其他方法将hudi数据同步到hive中。如果没有同步hive数据,可参考文章:使用flink SQL Client将mysql数据写入到hudi并同步到hive,并且,以下内容中的presto查询,即是基于上述参考文章所同步的hive表进行查询的,建议可先阅读上述参考文章。以下presto安装以单节点为例。presto 0.261下载下载presto-server和presto-climkdir /datamkdir /data/presto-clicd /dat原创 2021-09-27 22:01:23 · 1932 阅读 · 0 评论 -
使用Flink对hudi MOR表进行离线压缩
默认情况下,MERGE_ON_READ表的压缩是启用的。 触发器策略是在完成五次提交后执行压缩。 因为压缩会消耗大量内存,并且与写操作处于相同的管道中,所以当数据量很大(> 100000 /秒)时,很容易干扰写操作。 此时,使用离线压缩能够更稳定地执行压缩任务。压缩任务的执行包括两个部分:计划压缩计划和执行压缩计划。 建议调度压缩计划的进程由写任务周期性触发,默认情况下写参数compact.schedule.enable为启用状态。离线压缩需要在命令行上提交Flink任务。 程序入口如下: hu翻译 2021-09-26 00:08:14 · 1408 阅读 · 2 评论 -
将数据迁移到hudi中
Hudi维护元数据,如提交时间轴和索引来管理表。提交时间线有助于理解表上发生的操作以及表的当前状态。索引被Hudi用来维护一个记录键到文件id映射,从而有效地定位一个记录。目前,Hudi只支持书写parquet columnar格式。为了能够开始为现有表使用Hudi,您需要将现有表迁移到一个Hudi管理的表。有几种方法可以实现这一点。方法仅对新分区使用HudiHudi可以用来管理现有的表,而不影响/改变表中已经存在的历史数据。Hudi已经实现与这样的混合表兼容,但需要注意的是,整个Hive分区是否由H翻译 2021-09-25 15:55:04 · 1078 阅读 · 1 评论 -
使用flink SQL Client将mysql数据写入到hudi并同步到hive
测试环境组件版本mysql 5.7hive 3.1.2flink 1.12.2hudi 0.9.0hadoop 3.2.0首先请确保以下组件正常启动:mysqlhivemetastorehiveserver2hdfsyarnhudi适配hive 3.1.2源码编译0.9.0版本的hudi在适配hive3时,其hudi/package/hudi-flink-bundle/pom.xml文件使用的flink-connector-hive原创 2021-09-24 21:07:52 · 1531 阅读 · 10 评论 -
Hudi异步Clustering
在之前的一篇博客文章中,我们引入了一种新的名为clustering的表服务,它可以重组数据,从而在不影响写入速度的情况下提高查询性能。 我们学习了如何设置inline clustering。 在这篇文章中,我们将讨论自那以后发生的变化,并看看如何使用HoodieClusteringJob和DeltaStreamer实用工具来设置异步clustering。总览在较高的层次上,集群基于可配置的策略创建计划,根据特定的标准对符合条件的文件进行分组,然后执行计划。 Hudi支持多写入器,它在多个表服务之间提供快翻译 2021-09-19 19:46:49 · 816 阅读 · 1 评论 -
Hudi Clustering特性
概览Apache Hudi为大数据带来了流处理,在提供新鲜数据的同时,比传统批处理效率高一个数量级。在数据湖/数据仓库中,关键的权衡之一是输入速度和查询性能之间的权衡。数据摄取通常倾向于小文件,以提高并行性,并使数据能够尽快用于查询。但是,如果有很多小文件,查询性能就会下降。此外,在摄入期间,数据通常根据到达时间在同一位置。但是,当频繁查询的数据放在一起时,查询引擎的性能会更好。在大多数体系结构中,每个系统都倾向于独立地添加优化,以提高由于未优化的数据布局而导致的性能限制。本博客介绍了一种新的表服务,称为翻译 2021-09-18 22:56:58 · 1198 阅读 · 0 评论 -
Hudi内核分析之虚拟键(Virtual Keys)
总览Apache Hudi根据不同的表类型、配置参数来帮助您构建和管理数据湖,以满足每个人的需要。Hudi添加了每个记录的元数据字段,如_hoodie_record_key, _hoodie_partition path, _hoodie_commit_time,它有多种用途。它们有助于避免在合并、压缩和其他表操作期间重新计算记录键、分区路径,还有助于支持记录级增量查询(与仅跟踪文件的其他表格式相比)。此外,即使给定表的键字段在其生命周期内发生了更改,它也通过确保执行唯一的键约束来确保数据质量。但是对于不翻译 2021-09-18 16:45:04 · 406 阅读 · 0 评论 -
使用spark3操作hudi数据湖初探
环境:hadoop 3.2.0spark 3.0.3-bin-hadoop3.2hudi 0.8.0本文基于上述组件版本使用spark插入数据到hudi数据湖中。为了确保以下各步骤能够成功完成,请确保hadoop集群正常启动。确保已经配置环境变量HADOOP_CLASSPATH对于开源版本hadoop,HADOOP_CLASSPATH配置为:export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_HOME/share/hadoop/c原创 2021-09-17 23:40:26 · 2100 阅读 · 0 评论 -
使用flink插入数据到hudi数据湖初探
环境:hadoop 3.2.0flink 1.11.4-bin-scala_2.11hudi 0.8.0本文基于上述组件版本使用flink插入数据到hudi数据湖中。为了确保以下各步骤能够成功完成,请确保hadoop集群正常启动。确保已经配置环境变量HADOOP_CLASSPATH对于开源版本hadoop,HADOOP_CLASSPATH配置为:export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_HOME/share/hadoop原创 2021-09-17 23:39:57 · 953 阅读 · 0 评论 -
Hudi:Apache Hadoop上的增量处理框架
温馨提示本文部分翻译自2017.3.12 Uber Engineering发布文章《Hudi: Uber Engineering’s Incremental Processing Framework on Apache Hadoop》,随着Hudi的发展其架构发生了变化,但是对于了解Hudi的起源和演变还是非常有帮助的!随着ApacheParquet和Apache ORC等存储格式以及Presto和Apache Impala等查询引擎的发展,Hadoop生态系统有潜力作为面向分钟级延时场景的通用统一服务翻译 2021-09-17 23:39:15 · 512 阅读 · 0 评论 -
hudi 0.9.0-relese版本无法加载默认配置项问题与修复方法
问题描述:使用release-0.9.0分支对hudi进行打包,在使用flink以及spark的时候会报配置项空指针问题。就是某些配置项本来是可选的,有默认值的,但是在使用过程中发现该默认值无法加载。例如:ction.scala:122) [flink-dist_2.12-1.12.2.jar:1.12.2] at akka.japi.pf.UnitCaseStatement.applyOrElse(CaseStatements.scala:21) [flink-dist_2.12-1.12.2.j原创 2021-09-17 23:38:07 · 431 阅读 · 3 评论 -
Hudi关键术语及其概述
概览Apache Hudi基于hadoop兼容存储提供如下流原型更新/删除记录修改流关键概念Timeline(时间轴)在其核心,Hudi维护了在不同时刻对表执行的所有操作的时间轴,这有助于提供表的瞬时视图,与此同时也有效地支持按到达顺序的数据检索。Hudi的瞬时特性包括以下部分:瞬时动作:基于表的操作类型瞬时时间:通常是一个时间戳(201901117010349),随着动作的执行时间单调递增状态:顺势状态Hudi保证基于时间轴的动作是原子性的以及基于瞬时时间的翻译 2021-09-17 23:32:34 · 1207 阅读 · 0 评论 -
spark-shell操作hudi并使用hbase作为索引
前言接上一篇文章,上篇文章说到hudi适配hbase 2.2.6,这篇文章在spark-shell中操作hudi,并使用hbase作为索引。要完成以下实验,请先确保你已经按照文章步骤对hudi进行适配。并且得到了hudi-spark3-bundle_2.12-0.9.0.jar当然,如果你想先做一个实验,那么可以从这里以下链接下载我已经编译好的jar包。hudi-spark3-bundle_2.12-0.9.0.jarhbase-shaded-netty-2.2.1.jarhbase-shade原创 2021-09-17 23:30:48 · 591 阅读 · 0 评论 -
hudi 0.9.0适配hbase 2.2.6
总览在hudi中,hbase可以作为索引数据的存储,hudi默认使用的hbase版本为1.2.3。在hbase从1.x升级到2.x之后,其api发生了较大的变化,直接修改hudi中hbase的版本是不合适的,即会发生编译错误。本文对部分源码进行修改以使hbase 2.2.6适配hudi 0.9.0编译报错如果我们直接修改hbase的版本为2.2.6的话,会出现如下编译错误:[ERROR] Failed to execute goal org.apache.maven.plugins:maven-原创 2021-09-17 23:29:31 · 696 阅读 · 0 评论 -
Flink SQL Client实战CDC数据入湖
总览本文使用datafaker工具生成数据发送到MySQL,通过flink cdc工具将mysql binlog数据发送到kafka,最后再从kafka中读取数据并写入到hudi中。与此同时,在将数据写入到hudi中时,同步进行查询。组件版本与依赖datafaker 0.6.3mysql 5.7zookeeper 3.6.3kafka 2.8.0hadoop 3.2.0flink 1.12.2hudi 0.9.0为了完成以下内容,请确保mysql、zoo原创 2021-09-17 23:27:23 · 799 阅读 · 2 评论