Cloudera Data WarehouseとKuduクラスターの統合

# 概要

Apache ImpalaとApache Kuduは、ストリーミングデータに対するリアルタイム分析や時系列データ、リアルタイム・データウェアハウスのユースケースに最適な組み合わせです。

過去10年間で200社以上のCloudera顧客が、取り込みにApache Spark、リアルタイムBIにApache Impalaを組み合わせてApache Kuduを導入し、数千ノード規模で稼働させています。
ユースケースは、通信(4G/5G)分析、石油・ガス業界のリアルタイムレポートとアラート、製薬企業のサプライチェーン、銀行の基幹システムや株式取引分析など多岐にわたります。

Kuduの強みは、高速性を支えるC++製カラムナー・ストレージエンジンにあります。データは取り込み後わずか数秒でクエリ可能になり、一貫性とアトミック性を確保しつつ更新・削除のトランザクションもサポートします。Impala は分散型C++製SQLエンジンで、Kuduと連携して数百万行規模のクエリに対しサブ秒レベルのSLAを実現します。

Cloudera は、Real Time DataMart クラスター上でApache Kuduを、Kubernetes 上の Cloudera Data Warehouse（CDW）で Apache Impala を提供しています。スケーラブルなImpala（CDW）とKudu（DataHub クラスター）を組み合わせることで、計算（Impala）とストレージ（Kudu）を分離し、それぞれを独立してスケールさせることが可能になります。複数の CDW 仮想クラスターを、用途ごとに異なるリアルタイムDataMartクラスター／Kuduクラスターへ接続する高度なシナリオも実現できます。



# 構成手順

## 前提条件
* バージョン7.2.15以降のKudu DataHub クラスターを作成
* CDW 環境を 1.6.1-b258以降（ランタイム 2023.0.13.20）へアップグレード
* CDWでImpala仮想ウェアハウス（VW）を作成


### Step 1: Kuduマスターノードの情報を取得
* 1:	CDP にログインし Data Hub Clusters へ移動。CDW からクエリしたい Kudu Real Time Data Mart クラスターを選択
![b03-integrating-cloudera-data-warehouse-with-kudu-clusters-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133516/6b493319-c93d-4c3c-9942-f1555f7a410a.png)


* 2:	クラスター詳細の Nodes タブを開き、3 台の Kudu マスターノード名を控える

例：
```
go01-datamart-master20.go01-dem.ylcu-atmi.cloudera.site
go01-datamart-master30.go01-dem.ylcu-atmi.cloudera.site
go01-datamart-master10.go01-dem.ylcu-atmi.cloudera.site
```

![b03-integrating-cloudera-data-warehouse-with-kudu-clusters-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133516/a26762fd-083f-499e-8128-e1b861100541.png)

### Step 2: CDW Impala仮想ウェアハウスの設定
* 1:	CDW で対象の Impala VW を開き Edit → 設定画面へ。Impala VW バージョンが 2023.0.13-20 以上であることを確認
* 2:	Impala coordinator のフラグファイル設定を編集

![b03-integrating-cloudera-data-warehouse-with-kudu-clusters-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133516/a190da7a-fe8d-4201-96c8-74ab251c39e6.png)

* 3:	kudu_master_hosts を検索し、以下のように 3 台のマスターをカンマ区切りで指定（ポート 7051 を付与）

```
go01-datamart-master20.go01-dem.ylcu-atmi.cloudera.site:7051,go01-datamart-master30.go01-dem.ylcu-atmi.cloudera.site:7051,go01-datamart-master10.go01-dem.ylcu-atmi.cloudera.site
```

![b03-integrating-cloudera-data-warehouse-with-kudu-clusters-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133516/db80aa89-8981-4209-95fb-b1ce4fbf9c84.png)


* 4:	kudu_master_hosts が存在しない場合は ＋ アイコンで追加。
![b03-integrating-cloudera-data-warehouse-with-kudu-clusters-6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133516/530d95ec-aa09-4bef-9db5-9920aa04bb06.png)


* 5:	Apply changes をクリックして変更内容を適用し、VW の再起動を待つ

### Step 3: Kudu テーブルのクエリ実行
VW の更新が完了したら、Hue、Impala Shell、ODBC/JDBC クライアントから Kudu テーブルをクエリできるようになります。
![b03-integrating-cloudera-data-warehouse-with-kudu-clusters-7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133516/b50b4b8b-6868-45e5-ae1c-1eafd4c36f1b.png)

![b03-integrating-cloudera-data-warehouse-with-kudu-clusters-8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133516/fd427c12-6dc5-40bf-b92e-c967d72618e3.png)

# まとめ

CDW と Kudu DataHub を統合することで、オンデマンドに計算リソースをスケールアップし、DataHub 側は Kudu のみを実行する構成が可能になります。Impala VW から Kudu をクエリする利点は、ノイジーネイバーからの分離、オートスケーリング、自動停止などです。

さらに Cloudera Data Engineering を使って Kudu へデータを取り込むことで、DataHub クラスターをストレージ専用にすることも可能です。高度なユーザーは、TBLPROPERTIES で Kudu クラスタ情報を指定し、任意の Kudu DataHub クラスタを対象にクエリできます。

この統合により、以下の最新 CDW 機能も利用可能です。
* CDW Impala の JWT 認証
* オブジェクトストアと Kudu テーブルを単一の Impala サービスで利用（BI ツール側の設定が簡素化）
* Kudu（DataHub）の容量不足時のみスケールアップ／アウト可能。将来的にはリアルタイム DM テンプレートでの Impala を停止し、CDW Impala で Kudu をクエリする構成も選択できます