49

Hudi对比|Apache Hudi与Apache HBase等系统的对比

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzU5OTQ1MDEzMA%3D%3D&%3Bmid=2247487245&%3Bidx=1&%3Bsn=9c92402a2ad0018a5d9008e426aa8c48
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Apache Hudi填补了在DFS上处理数据的巨大空白,并可以和一些大数据技术很好地共存 然而,将Hudi与一些相关系统进行对比,来了解Hudi如何适应当前的大数据生态系统,并知晓这些系统在设计中做的不同权衡仍将非常有用。

Kudu

Apache Kudu是一个与Hudi具有相似目标的存储系统,该系统通过对 upserts支持来对PB级数据进行实时分析。一个关键的区别是Kudu还试图充当OLTP工作负载的数据存储,而Hudi并不希望这样做。因此,Kudu不支持增量拉取(截至2017年初),而Hudi支持增量处理。

Kudu与分布式文件系统抽象和HDFS完全不同,它自己的一组存储服务器通过RAFT相互通信。与之不同的是,Hudi旨在与底层Hadoop兼容的文件系统(HDFS,S3或Ceph)一起使用,并且没有自己的存储服务器群,而是依靠Apache Spark来完成繁重的工作。因此,Hudi可以像其他Spark作业一样轻松扩展,而Kudu则需要硬件和运营支持,特别是HBase或Vertica等数据存储系统。到目前为止,我们还没有做任何直接的基准测试来比较Kudu和Hudi。但是,如果我们要使用CERN,我们预期Hudi在摄取parquet文件上有更卓越的性能。

Hive事务

Hive事务/ACID是另一项类似的工作,它试图在ORC文件格式之上的实现 读取时合并的存储层。可以理解,此功能与Hive以及LLAP之类的其他工作紧密相关。Hive事务不提供Hudi提供的读取优化存储选项或增量拉取。在实现选择方面,Hudi充分利用了类似Spark的处理框架的功能,而Hive事务特性则在用户或Hive Metastore启动的Hive任务/查询的下实现。根据我们的生产经验,与其他方法相比,将Hudi作为库嵌入到现有的Spark管道中要容易得多,并且操作不会太繁琐。Hudi还设计用于与Presto/Spark等非Hive引擎合作,并计划引入除Parquet以外的文件格式。

HBase

尽管HBase最终是OLTP工作负载的键值存储层,但由于与Hadoop的相似性,用户通常倾向于将HBase与分析相关联。鉴于HBase经过严格的写优化,它支持开箱即用的亚秒级更新,Hive-on-HBase允许用户查询该数据。但是,就分析工作负载的实际性能而言,Parquet/ORC之类的混合列式存储格式可以轻松超越HBase,因为这些工作负载主要是读取繁重的工作。Hudi弥补了更快的数据与分析存储格式之间的差距。从运营的角度来看,与管理分析使用的HBase Region服务器集群相比,为用户提供可更快给出数据的库更具可扩展性。最终,HBase不像Hudi这样重点支持提交时间、 增量拉取之类的增量处理原语。

流式处理

一个普遍的问题:"Hudi与流处理系统有何关系?",我们将尝试回答。简而言之,Hudi可以与当今的批处理(写时复制存储)和流处理(读时合并存储)作业集成,以将计算结果存储在Hadoop中。对于Spark应用程序,这可以通过将Hudi库与Spark/Spark流式DAG直接集成来实现。在非Spark处理系统(例如Flink、Hive)情况下,可以在相应的系统中进行处理,然后通过Kafka主题/DFS中间文件将其发送到Hudi表中。从概念上讲,数据处理管道仅由三个部分组成:输入, 处理, 输出,用户最终针对输出运行查询以便使用管道的结果。Hudi可以充当将数据存储在DFS上的输入或输出。Hudi在给定流处理管道上的适用性最终归结为你的查询在Presto/SparkSQL/Hive的适用性。

更高级的用例围绕增量处理的概念展开,甚至在处理引擎内部也使用Hudi来加速典型的批处理管道。例如:Hudi可用作DAG内状态存储类似Flink使用的RocksDB:

https://ci.apache.org/projects/flink/flink-docs-release-1.2/ops/state_backends.html#the-rocksdbstatebackend

这是路线图上的一个项目并将最终以Beam Runner的形式呈现。

Iceberg & Delta

对于与Iceberge和Delta的对比,可以看如下对比图(2019年9月之前由Qubole技术博客提供)。

ErIV7fU.png!web

Hudi社区并不想通过官方文档方式来比较与同为数据湖开源框架Iceberge和Delta的区别,因为这可能会让开发者觉得Hudi立场不中立,为保持更为中立的立场,社区更愿意将此比较交给开发者,让他们去选择适合自己的框架。

eiuIjey.png!web

BFFbMbf.jpg!web

↓扫码关注 HBase技术社区公众号↓

jQR7Vj3.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK