1.iceberg能解决大数据领域的痛点问题
谈及引入 Iceberg 的原因,在构建大数据生态的过程中遇到的一些痛点 Iceberg 恰好能解决:
(1)T+0 的数据落地和处理。传统的数据处理流程从数据入库到数据处理通常需要一个较长的环节、涉及许多复杂的逻辑来保证数据的一致性,由于架构的复杂性使得整个流水线具有明显的延迟。Iceberg 的 ACID 能力可以简化整个流水线的设计,降低整个流水线的延迟。
(2)降低数据修正的成本。传统 Hive/Spark 在修正数据时需要将数据读取出来,修改后再写入,有极大的修正成本。Iceberg 所具有的修改、删除能力能够有效地降低开销,提升效率。
2.iceberg技术设计上的优势
至于为何最终选择采用 Iceberg,而不是其他两个开源项目,技术方面的考量主要有以下几点:
(1)Iceberg 的架构和实现并未绑定于某一特定引擎,它实现了通用的数据组织格式,利用此格式可以方便地与不同引擎(如 Flink、Hive、Spark)对接,这对于腾讯内部落地是非常重要的,因为上下游数据管道的衔接往往涉及到不同的计算引擎;
(2)良好的架构和开放的格式。相比于 Hudi、Delta Lake,Iceberg 的架构实现更为优雅,同时对于数据格式、类型系统有完备的定义和可进化的设计;
(3)面向对象存储的优化。Iceberg 在数据组织方式上充分考虑了对象存储的特性,避免耗时的 listing 和 rename 操作,使其在基于对象存储的数据湖架构适配上更有优势。
3.iceberg社区考量
除去技术上的考量,代码质量、社区等方面详细的评估如下:
(1)整体的代码质量以及未来的进化能力。整体架构代码上的抽象和优势,以及这些优势对于未来进行演化的能力是团队非常关注的。一门技术需要能够在架构上持续演化,而不会具体实现上需要大量的不兼容重构才能支持。
(2)社区的潜力以及腾讯能够在社区发挥的价值。社区的活跃度是另一个考量,更重要的是在这个社区中腾讯能做些什么,能发挥什么样的价值。如果社区相对封闭或已经足够成熟,那么腾讯再加入后能发挥的价值就没有那么大了,在选择技术时这也是团队的一个重要考量点。
(3)技术的中立性和开放性。社区能够以开放的态度去推动技术的演化,而不是有所保留地向社区贡献,同时社区各方相对中立而没有一个相对的强势方来完全控制社区的演进。