Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

自己紹介

Slide 3

Slide 3 text

Apache Hive: “Distributed Data Warehouse at Massive Scale” Spark / Flink / Trino / etc. Hive Metastore (Metadata Repository) RDBMS Backend Amazon S3 / HDFS / etc. HiveServer2 (SQL Gateway) YARN / Hadoop Hive on Tez Kubernetes Hive LLAP

Slide 4

Slide 4 text

Data LakeからLakehouseへ On-prem Cloud Proprietary Open Data Warehouse Enterprise DWH Data Lake Big Data Cloud Data Warehouse Compute-Storage Separation Lakehouse Open Table Format

Slide 5

Slide 5 text

Data LakeからLakehouseへ On-prem Cloud Proprietary Open Data Warehouse Enterprise DWH Data Lake Big Data Cloud Data Warehouse Compute-Storage Separation Lakehouse Open Table Format

Slide 6

Slide 6 text

Data LakeからLakehouseへ On-prem Cloud Proprietary Open Data Warehouse Enterprise DWH Data Lake Big Data Cloud Data Warehouse Compute-Storage Separation Lakehouse Open Table Format

Slide 7

Slide 7 text

発表内容 - Lakehouseを支える機能 - (1) カタログ - (2) 計算エンジン - (3) 継続的テーブルメンテナンス - クラウドネイティブ対応 - (4) Kubernetes-Native Hive Disclaimer: 今日紹介する機能の中には、まだリリースされていないものも含まれています

Slide 8

Slide 8 text

Lakehouseカタログ

Slide 9

Slide 9 text

おさらい: 汎用メタデータリポジトリ Hive Metastore (Stateless Java App) RDBMS Backend 分散ストレージ上の ファイル群 例: HDFS / S3 / GCS / ADLS Files RDBMSやNoSQL 例: PostgreSQL, MySQL, Apache HBase, Apache Kudu Databases イベントストリーム 例: Apache Kafkaトピック Event store Open Table Format 例: Apache Iceberg, Apache Hudi, Delta Lake Lakehouse

Slide 10

Slide 10 text

おさらい: デファクトスタンダードな Thrift API Hive Metastore API Apache Spark Cloud Data Warehouse Trino - Thrift - Kerberos / LDAP - Any table format Apache Gravitino

Slide 11

Slide 11 text

Iceberg REST Catalog API: 新しい、もう一つの標準 商用サービス - Databricks Unity Catalog - Cloudera Iceberg REST Catalog - Snowflake Open Catalog - AWS Glue - Amazon S3 Tables - Google Cloud's Lakehouse - Microsoft Fabric OneLake - Dremio Open Catalog OSS実装 - Unity Catalog - Apache Polaris - Apache Gravitino - Lakekeeper - Project Nessie

Slide 12

Slide 12 text

Iceberg REST Catalog API backed by Hive Metastore “Hive Metastoreを通して学ぶIceberg REST Catalog ― 仕様から実装まで” https://speakerdeck.com/okumin/from-spec-to-implementation-iceberg-rest-catalog-with-hive-metastore-japanese-version Trino REST Catalog Hive Metastore Iceberg REST API Hive Catalog API Server Iceberg REST API Hive Metastore Thrift API Trino REST Catalog REST API RDBMS RDBMS Thrift RPC REST API Embedded Mode Standalone Mode (>= 4.3)

Slide 13

Slide 13 text

HMS Thrift API再考: 汎用メタデータ APIの価値 最も普及した汎用メタデータAPI → 既存データを活かしつつ、未来の可能性を狭めない 利用する側 現実世界のデータ HMS Thrift API Apache Spark Trino Cloud DWH Federated Catalog 次世代クエリエンジン Hive Table CSV/TSV PostgreSQL Delta Lake 次世代フォーマット

Slide 14

Slide 14 text

まとめ: 時空を超えるメタストア Lakehouse時代に適応 過去と未来も大事に Iceberg REST API OAuth 2.0 Metrics Reporting Thrift API これまでのデータ資産 未来のイノベーション 🤝

Slide 15

Slide 15 text

Lakehouse計算エンジン

Slide 16

Slide 16 text

原則: マルチエンジン、単一コピー Hiveは数ある計算エンジンの一つという立ち位置 Batch → Hive, Spark Interactive → Trino, Hive LLAP Streaming → Flink, Spark ML前処理 → Spark, Polars ▦ 同じIcebergテーブル

Slide 17

Slide 17 text

Hiveがサポートする Iceberg機能の一例 - Iceberg V1 & V2 - ✅ Schema Evolution - ✅ Partition Evolution - ✅ Hidden Partitioning - ✅ DELETE/UPDATE/MERGE - ✅ Time Travel - ✅ Branching / Tagging - Iceberg V3 - ✅ Row Lineage (for Parquet) - ✅ Deletion Vectors - ✅ Variant Type

Slide 18

Slide 18 text

Partition Aware Optimization “HiveのBucket Map JoinをIcebergテーブルでも使用できるようにした話” https://blog.okumin.com/entry/2025/03/18/122546

Slide 19

Slide 19 text

外部カタログ対応 “Expanding the Hive Ecosystem with Iceberg REST” https://medium.com/@dmitriy.fingerman/expanding-the-hive-ecosystem-with-iceberg-rest-f51da5019fe6 Hive on Tez S3 Tables Iceberg REST Catalog API Table Bucket Get Table Metadata Read Data Files

Slide 20

Slide 20 text

まとめ: Hive = スケーラブル SQLクエリエンジン 分散SQLクエリエンジン Hive以外も使おう Hive on Tez & LLAP Iceberg主要機能 高性能オプティマイザー ストリーム処理 SQL以外のI/F 機械学習

Slide 21

Slide 21 text

Lakehouse継続的テーブルメンテナンス

Slide 22

Slide 22 text

メンテナンスの必要性 Small Files Problem 積み重なるスナップショット 物理未削除状態 スキャン性能劣化 メタデータオーバーヘッド GDPR違反リスク v1 v2 v… v99999 Data File Deletion Vector row1 row2 row3 row4 0 1 row5 1 0 0

Slide 23

Slide 23 text

メンテナンス機能対応状況 - ✅ Minorコンパクション : 非常に小さな Data Fileのマージ - ✅ Majorコンパクション : 小さなData Fileや削除ファイルのマージ - ✅ Smartコンパクション : Minor / Majorコンパクションの自動選択 - ✅ Expire Snapshots - ✅ 孤立ファイルの削除

Slide 24

Slide 24 text

Hive組み込みの継続的テーブルメンテナンス Hiveをフル構成でデプロイすると、設定値を調整するだけでIcebergテーブルのメンテナ ンスを継続実行 Hive Metastore IcebergHouseKeeperService IcebergTableOptimizer HiveServer2 + Tez Enqueue Major / Minor Compaction Perform Compaction Expire Snapshots Iceberg Table w/ Old Snapshots Iceberg Table w/ Small Files HDFS, S3, etc.

Slide 25

Slide 25 text

まとめ: Lakehouseを使える状態に保つ カタログとクエリエンジンを同時開発 → 統合されたメンテナンス体験 Hive Metastore - テーブルの状態を把握 - 適切なコンパクションの選択 - 古いスナップショットの削除 - メンテナンスタスクをスケジュール Hiveクエリエンジン - スケーラブルなコンパクション実行基盤 - 安定したリソースプール

Slide 26

Slide 26 text

Kubernetes-Native Hive

Slide 27

Slide 27 text

従来のHiveデプロイ構成 Apache HiveはHadoop YARNが必須であり、手軽な構築手段がなかった

Slide 28

Slide 28 text

Quickstart with Docker docker run \ --rm \ --env SERVICE_NAME=hiveserver2 \ --name hive \ apache/hive:4.2.0 HiveServer2 + Hive Metastore docker run \ --rm \ --name hms \ apache/hive:standalone-metastore-4.2.0 Hive Metastore w/ Iceberg REST Catalog API 2023年から公式Dockerイメージを配布 → とりあえず試すのが簡単に

Slide 29

Slide 29 text

オブジェクトストレージ対応 JARを追加するだけで任意のオブジェクトストレージに対応 Hive Hadoop FileSystem API hdfs:// ofs:// s3a:// abfs:// HDFS Apache Ozone Amazon S3 Azure Data Lake Storage

Slide 30

Slide 30 text

Hive on Hadoop → Kubernetes YARN NodeManager タスク用コンテナ Hive LLAP Tez App Master OR 分散タスクコーディネーター YARNコンテナを立ち上げてタスクをスケジュール OR 常駐型プロセスLLAPにタスクをスケジュール あとは分散Hive on TezをなんとかすればKubernetesでHive全体が動くようになるが……

Slide 31

Slide 31 text

Hive on Hadoop → Kubernetes Tez Application Masterが最後の関門だった YARN NodeManager タスク用コンテナ Hive LLAP Tez App Master OR YARN依存: 強 YARN依存: 強 ただしLLAPがあれば必須 ではない YARN依存: 弱 (極論EC2でも動くはず)

Slide 32

Slide 32 text

Hive on Kubernetes ついにmasterブランチではLLAPモードのHive on TezがKubernetesで動くように! Kubernetes Hive LLAP Tez App Master ZooKeeper Session Management Service Discovery Schedule Tez tasks to LLAP

Slide 33

Slide 33 text

Kubernetes Operator & Helm Chart # For Tez AMs and LLAP daemons helm install zookeeper bitnami/zookeeper ... # For Metastore backend helm install postgres bitnami/postgresql ... # Install Hive Metastore, HiveServer2, and LLAP daemons helm install hive oci://registry-1.docker.io/ayushtkn/hive-operator ... “Cloud-Native Apache Hive: A Deep Dive into the New Kubernetes Operator, Autoscaling, and Multi-Tenancy” https://medium.com/@ayushtkn/cloud-native-apache-hive-a-deep-dive-into-the-new-kubernetes-operator-autoscaling-and-6d3e4427121a

Slide 34

Slide 34 text

Apache Hive Is a Cloud Native Lakehouse Platform # For Tez AMs and LLAP daemons helm install zookeeper bitnami/zookeeper ... # For Metastore backend helm install postgres bitnami/postgresql ... # Install Hive Metastore, HiveServer2, and LLAP daemons helm install hive oci://registry-1.docker.io/ayushtkn/hive-operator ... カタログ + SQLクエリエンジン + 継続的テーブルメンテナンス

Slide 35

Slide 35 text

まとめ: 今後のデプロイ方法 Kubernetes Tez App Master ZooKeeper Hive LLAP Hadoop YARN Tez App Master タスク用コンテナ Hive LLAP Helmチャートで簡単デプロイ。 Hadoopクラスタを持っていない人はこっちが 便利。 YARNによるエンタープライズグレードなスケ ジューリングが可能。 数百・数千テナントを管理するならこっちの 方が実績がある。

Slide 36

Slide 36 text

Apache Hive: そしてCloud Native Lakehouseへ - Lakehouseに必要な機能の多くを単体でサポートできる豊富な機能群 - 公式DockerイメージやKubernetesサポートにより利用ハードルが大幅減