Iceberg数据湖的Table、Catalog、Hadoop配置Configuration

目录

  • 1. Configuration
    • 1.1 table properties
      • 1.1.1 Read properties
      • 1.1.2 Write properties
      • 1.1.3 Table behavior properties
      • 1.1.4 Reserved table properties
      • 1.1.4 Compatibility flags
    • 1.2 Catalog properties
      • 1.2.1 Lock catalog properties
    • 1.3 Hadoop configuration

1. Configuration

1.1 table properties

1.1.1 Read properties

因为Iceberg在HDFS上的data文件,通常都是一个个的小文件,所以读取的时候会先进行combine,然后再返回数据。下面是进行combine的一些配置

Property 默认 描述
read.split.target-size 134217728 (128 MB) 合并data输入文件的目标大小
read.split.metadata-target-size 33554432 (32 MB) 合并metadata输入文件的目标大小
read.split.planning-lookback 10 合并输入文件时,计划使用的垃圾箱数量
read.split.open-file-cost 4194304 (4 MB) 合并输入文件时,预估打开一个输入文件的成本大小

1.1.2 Write properties

Property 默认 描述
write.format.default parquet 表默认的file format,可选参数为parquet、avro、orc
write.parquet.row-group-size-bytes 134217728 (128 MB) Parquet row group size
write.parquet.page-size-bytes 1048576 (1 MB) Parquet page size
write.parquet.dict-size-bytes 2097152 (2 MB) Parquet dictionary page size
write.parquet.compression-codec gzip Parquet压缩编码格式,可选参数为zstd、brotli、lz4、gzip、snappy、uncompressed
write.parquet.compression-level null Parquet compression level
write.avro.compression-codec gzip Avro压缩编码格式,可选参数为gzip(deflate with 9 level)、gzip、snappy、uncompressed
write.metadata.compression-codec none Metadata压缩编码格式,可选参数为none、gzip
write.metadata.metrics.default truncate(16) 表中所有列默认的metrics模式,可选的参数为none、counts、truncate(length)、full
write.metadata.metrics.column.col-name (not set) 表中某一列的metrics模式,可选的参数为none、counts、truncate(length)、full
write.target-file-size-bytes 536870912 (512 MB) 写入文件的目标大小
write.distribution-mode none 定义写入数据的分布式情况,可选参数为:1. none: 不shuffle数据,2. hash: 根据partition key进行hash分布,3. range: 根据partition key或者sort key进行范围分布
write.wap.enabled false Enables write-audit-publish writes
write.summary.partition-limit 0 如果changed partition count小于当前参数,则snapshot summaries包含partition-level汇总状态
write.metadata.delete-after-commit.enabled false 当表commit之后,是否删除oldest version metadata files
write.metadata.previous-versions-max 100 当表commit之后,保留最大历史version metadata files数量,超过该历史版本数量的将被删除
write.spark.fanout.enabled false 在Spark中开启Partitioned-Fanout-Writer writes

1.1.3 Table behavior properties

Property 默认 描述
commit.retry.num-retries 4 在失败前,commit重试的次数
commit.retry.min-wait-ms 100 当一次commit失败,到再次进行commit,之间的最小时间间隔
commit.retry.max-wait-ms 60000 (1 min) 当一次commit失败,到再次进行commit,之间的最大时间间隔
commit.retry.total-timeout-ms 1800000 (30 min) 当一个commit进行多次重试时,累计的重试超时时间
commit.status-check.num-retries 3 当一个connection丢失,导致一个未知的commit状态,需要进行多少次status-check,去判断一个commit是否成功
commit.status-check.min-wait-ms 1000 (1s) 当一次status-check完成,到下一次status-check,之间的最小时间间隔
commit.status-check.max-wait-ms 60000 (1 min) 当一次status-check完成,到下一次status-check,之间的最大时间间隔
commit.status-check.total-timeout-ms 1800000 (30 min) 当进行多次status-check时,累计的check超时时间
commit.manifest.target-size-bytes 8388608 (8 MB) 合并manifest files的目标大小
commit.manifest.min-count-to-merge 100 当manifest files的数量最少达到多少时,才进行合并
commit.manifest-merge.enabled true 写的时候是否自动合并manifest files
history.expire.max-snapshot-age-ms 432000000 (5 days) 默认最大的snapshot过期时间
history.expire.min-snapshots-to-keep 1 当所有snapshot都过期时,默认最小保留多少个snapshot不过期
history.expire.max-ref-age-ms Long.MAX_VALUE (forever) 对于snapshot references(除了main branch,main branch永远不会过期),默认最大snapshot references过期时间

1.1.4 Reserved table properties

只在创建或更新表的时候使用,并不会作为表metadata保存下来

Property 默认 描述
format-version 1 表的format version,即版本1和版本2,可选的参数为1、2

1.1.4 Compatibility flags

Property 默认 描述
compatibility.snapshot-id-inheritance.enabled false 开启提交没有显式snapshot IDs的snapshots

1.2 Catalog properties

Property 默认 描述
warehouse null 数据仓库的根路径
uri null URI字符串,比如Hive metastore URI
clients 2 客户端池大小

1.2.1 Lock catalog properties

关于catalog lock相关的配置,用来控制commit期间的lock行为

Property 默认 描述
lock.table null 用于lock的辅助表
lock.acquire-interval-ms 5 seconds the interval to wait between each attempt to acquire a lock在两次尝试获取lock之间的时间间隔
lock.acquire-timeout-ms 3 minutes 尝试获取lock所花费的的最大时间
lock.heartbeat-interval-ms 3 seconds 当获取lock之后,两次心跳之间的时间间隔
lock.heartbeat-timeout-ms 15 seconds 当没有心跳超过多久,lock被认为过期

1.3 Hadoop configuration

用于Hive Metastore connector

Property 默认 描述
iceberg.hive.client-pool-size 5 当追踪HMS中的表,Hive客户端连接池的大小
iceberg.hive.lock-timeout-ms 180000 (3 min) 获取一个lock所花费的最大时间,单位毫秒
iceberg.hive.lock-check-min-wait-ms 50 检查获取到的lock状态,所花费的最小时间,单位毫秒
iceberg.hive.lock-check-max-wait-ms 5000 检查获取到的lock状态,所花费的最大时间,单位毫秒。该参数应该小于Hive Metastore的事务超时时间,即hive.txn.timeout或metastore.txn.timeout(新版本)

你可能感兴趣的:(#,Iceberg,iceberg,table,catalog,hadoop,configuration配置)