网易数据湖探索与实践( 四 )

  • 新metadata模式:文件级别列统计信息可以用来根据where字段进行文件过滤 , 很多场景下可以大大减少扫描文件数 , 提升查询性能
  • 新API模式:存储批流一体1. 流式写入-增量拉取(基于Iceberg统一存储模式可以同时满足业务批量读取以及增量订阅需求)2. 支持批流同时读写同一张表 , 统一表schema , 任务执行过程中不会出现FileNotFoundException
  • Iceberg的提升体现在:
    网易数据湖探索与实践文章插图
    03
    数据湖Iceberg社区现状
    网易数据湖探索与实践文章插图
    目前Iceberg主要支持的计算引擎包括Spark2.4.5、Spark 3.x以及Presto 。 同时 , 一些运维工作比如snapshot过期、小文件合并、增量订阅消费等功能都可以实现 。
    在此基础上 , 目前社区正在开发的功能主要有Hive集成、Flink集成以及支持Update/Delete功能 。 相信下一个版本就可以看到Hive/Flink集成的相关功能 。
    04
    网易数据湖Iceberg实践之路
    网易数据湖探索与实践文章插图
    Iceberg针对目前的大数量的情况下 , 可以大大提升ETL任务执行的效率 , 这主要得益于新Partition模式下不再需要请求NameNode分区信息 , 同时得益于文件级别统计信息模式下可以过滤很多不满足条件的数据文件 。
    网易数据湖探索与实践文章插图
    当前iceberg社区仅支持Spark2.4.5 , 我们在这个基础上做了更多计算引擎的适配工作 。 主要包括如下:
    • 集成Hive 。 可以通过Hive创建和删除iceberg表 , 通过HiveSQL查询Iceberg表中的数据 。
    • 集成Impala 。 用户可以通过Impala新建iceberg内表\外表 , 并通过Impala查询Iceberg表中的数据 。 目前该功能已经贡献给Impala社区 。
    • 集成Flink 。 已经实现了Flink到Iceberg的sink实现 , 业务可以消费kafka中的数据将结果写入到Iceberg中 。 同时我们基于Flink引擎实现了小文件异步合并的功能 , 这样可以实现Flink一边写数据文件 , 一边执行小文件的合并 。 基于Iceberg的小文件合并通过commit的方式提交 , 不需要删除合并前的小文件 , 也就不会引起读取任务的任何异常 。
    作者:范欣欣 , 网易大数据技术专家 。 他与Apache HBase PMC成员、小米公司HBase工程师胡争合著的新书《HBase原理与实践》 , 这也是业界第一本专门阐述HBase原理的书 。