1、胡争 Apache Iceberg&HBase PMCApache Apache FlinkFlink 集成集成 Apache Iceberg Apache Iceberg 最佳实践最佳实践HiveHive表面临的挑战表面临的挑战IcebergIceberg的解决方案的解决方案FlinkFlink和和IcebergIceberg最佳实践最佳实践现状及规划现状及规划#1#2#3#4#1#1Hive Hive 表格式面临的挑战表格式面临的挑战挑战#1:上云Hadoop HDFS Hive Table FormatHive MetastoreParquetAvroORCGeneric Table F
2、ormatCatalogParquetAvroORCAliyun OSSAmazon S3Google GCSHMS 信息冗杂(Schema/表级统计信息/分区信息等),边界不清。无法扩展到云厂商 Catalog 服务。HMS 存储中心化,扩展性差。HDFS 成本高,缺乏弹性。Hive 表格式抽象不清晰,暴露太多差异化细节给上层。Hadoop HDFS 挑战#1:上云Hive MetastoreCentralized metastore databasepart-000.parquetpart-031.parquetBlock Meta DataWrite Path 依赖 HDFS 的多个文件
3、 RENAME 原子性语义Read Path 先查 MySQL 获取分区列表,再 LIST 目录获取文件Block Meta Data中心化的 Metastore 数据库,扩展性差表级统计信息更新不及时,缺乏有效的文件统计信息挑战#1:上云支持多种对象存储特点:弹性、低廉、稳定要求要求一一统一的Table语义抽象度高,ACID,多种文件格式要求要求二二计算引擎互连互通支持Hive,Spark,Flink,Presto读写要求要求三三挑战#2:近实时数仓Hive TableGeneric Table小时级时效性体验分钟时级时效性体验Hadoop HDFS Hive MetastoreCentra
4、lized metastore databasepart-000.parquetpart-031.parquetBlock Meta DataBlock Meta Data挑战#2:近实时数仓入仓:HMS受限于扩展性,难以做按分钟做分区查询:先查MYSQL找分区,再list分区目录找文件,元数据index效率低查询:缺乏文件级全局统计信息出仓:不支持增量数据查询挑战#2:近实时数仓分钟级入湖入仓湖仓内数据更实时要求要求一一更高效索引加速数据分析查询响应更快要求要求二二增量出湖出仓下游ETL响应更快要求要求三三挑战#3:变更IDName1001Alex1002BobIDName1001Alex1
5、002BobAddressBJSH问题一:Schema 变更(如新增一个字段)挑战#3:变更问题二:分区变更(从月级分区改成天级分区)2021/012021/021.avro2.avro3.avro4.avro5.avro6.avroPartition by month(ts)2021/01/012021/02/011.avro2.avro3.avro4.avro5.avro6.avroPartition by day(ts)挑战#3:变更问题三:CDC 数据变更挑战#3:变更Schema 变更表结构随业务变动而变更要求一要求一分区变更调整分区策略适配不同分析诉求要求要求二二数据变更表级/分区
6、级/文件级/行级不同粒度变更要求要求三三#2 2Iceberg Iceberg 的解决方案的解决方案Iceberg 数据湖系统架构阿里云EMRMaxComputeHologresDLF CatalogData Lake ManagerJindoFs CacheAliyun OSSDatabaseImport DataETLAuthoritySecurityLake SaaSCompactionData SortExpire DataSnapshotsMetadataMetrics挑战#1:上云Manifest FileManifest FileDataDataDatabaseDatabaseT