メインコンテンツまでスキップ

plantpulse-analytics (分析レイヤー)

役割

大規模分析・SQLクエリ・データカタログを担当するビッグデータスタックです。Cassandra・PostgreSQL・Iceberg(MinIO)データを分散分析します。pd 起動順序では2番目のゲートキーパーです。

項目
モジュール名plantpulse-analytics
インストール先/opt/kopens/plantpulse-platform/plantpulse-analytics/
サイズ約 4.4GB (プラットフォーム内で最大)
pd サービスanalytics — MASTER: spark-master → hive → gravitino → kyuubi / WORKER: spark-worker → kyuubi
アカウントPP_SPARK_USER / PP_SPARK_PASSWORD (クライアント)、PP_HIVE_USER / PP_HIVE_PASSWORD (メタストア)、PP_GRAVITINO_USER / PP_GRAVITINO_PASSWORD (カタログバックエンド)

構成

ディレクトリ構造

plantpulse-analytics/
├── spark/ # bin/ (spark-submit · beeline · spark-sql) · conf/ (생성물) · logs/ · work/
├── hive/ # bin/ · conf/hive-site.xml (생성물) · logs/
├── kyuubi/ # bin/ · conf/kyuubi-defaults.conf (생성물) · logs/ · work/
├── gravitino/ # bin/ · conf/gravitino-iceberg-rest-server.conf (생성물) · logs/
└── hadoop/ # 라이브러리 — 단일 노드에서는 HDFS 를 띄우지 않습니다

各コンポーネント

Spark — 分散処理エンジン

項目
ポート7077 (マスター RPC) · 4440 (マスター UI) · 8081 (ワーカー UI)
モードStandalone。ワーカーノードが接続されると、そのノードの spark-worker がマスターに登録されます
設定spark-defaults.conf.template · spark-env.sh.template · metrics.properties.template
ワークロードKyuubi セッションの SQL、ウェアハウスの Iceberg アーカイブジョブ

マスター UI は http://<server-ip>:4440/ です(8080 ではありません)。Iceberg カタログは Gravitino の REST エンドポイント(PP_GRAVITINO_ICEBERG_REST_PORT、19001)を指すようにテンプレートがレンダリングされます。

docker exec -it plantpulse-datalake /opt/kopens/plantpulse-platform/plantpulse-analytics/spark/bin/spark-sql --master spark://127.0.0.1:7077
アーカイブワーカーはデータレイクの外にあります

Cassandra → Iceberg アーカイバー(plantpulse-warehouse)は 2026-09-06 からプラットフォームイメージplantpulse-warehouse コンテナで管理されます。このコンテナにはそのモジュールはありません。アーカイブジョブの状態は pd retentioncold_tier · archive_job 行で確認します → warehouse モジュール

Hive Metastore

項目
ポート9083 (thrift)
バックエンドPostgreSQL DB hive-metastore-230 (PP_HIVE_DB)、アカウント hive
設定hive-site.xml.template (hive と spark の2箇所にレンダリング)

PP_HIVE_PASSWORD は値が双方向です — メタストアが PostgreSQL に接続する際に提示され、クライアントが Kyuubi に接続する際に hive-auth.properties で検証されます。そのため passwd.sh はアカウント変更と再レンダリングの両方を実行します。

Kyuubi — SQL ゲートウェイ

JDBC / Thrift 経由で SQL クライアント(DBeaver · Tableau · データゲートウェイ)が Spark に接続するゲートウェイです。セッション分離とキューイングを提供します。

項目
ポート10000 (thrift) · 10099 (Web UI)
設定kyuubi-defaults.conf.template
認証hive-auth.properties — アカウント PP_SPARK_USER / PP_SPARK_PASSWORDこのファイルが作成します
docker exec -it plantpulse-datalake bash -c \
'/opt/kopens/plantpulse-platform/plantpulse-analytics/spark/bin/beeline -u "jdbc:hive2://127.0.0.1:10000/default" -n "$PP_SPARK_USER" -p "$PP_SPARK_PASSWORD"'

起動順序で Kyuubi が最後なので、起動直後 pd statusPP_ANALYTICS[KYUUBI] STOPPED が数十秒表示されるのは正常です。

Gravitino — Iceberg REST カタログ

Iceberg テーブルのカタログサーバーです。MASTER でのみ起動し、ワーカーの Spark はマスターのものを参照します。

項目
ポート19001 (REST API) — Web UI はありません。 / は 404 を返します
バックエンドPostgreSQL アカウント gravitino (PP_GRAVITINO_PASSWORD)
設定gravitino-iceberg-rest-server.conf.template

統合運用

docker exec plantpulse-datalake pd status analytics
docker exec plantpulse-datalake pd restart analytics # 실행 중인 SQL · Spark 잡이 전부 중단됩니다
docker exec plantpulse-datalake pd logs --lines 100 analytics

アーカイブジョブが実行中の場合(pd retentionarchive_jobNA + «running»)、終了後に再起動してください。

よく使うクエリ

-- Cassandra 직접 조회 (Spark SQL)
SELECT date_format(time, 'yyyy-MM-dd HH:00') AS hour, avg(value) AS avg_value
FROM cassandra.pp.tm_tag_point
WHERE tag_id = 'TAG_001' AND time >= date_sub(current_date(), 1)
GROUP BY 1 ORDER BY 1;

-- Iceberg (콜드 티어)
USE iceberg;
SHOW TABLES;
SELECT count(*), min(time), max(time) FROM tw_tag_point WHERE dt BETWEEN '2026-01-01' AND '2026-05-30';

ログ

docker exec plantpulse-datalake pd logs --list | grep -i "spark\|hive\|kyuubi\|gravitino"

よくある問題

症状原因対処
Spark ジョブ OutOfMemoryexecutor メモリ不足spark-defaults.conf.templatespark.executor.memory
Kyuubi が起動しないコア数が実際より多いホストの DOCKER_PP_CLUSTER_CORES がコンテナに渡されているか確認 — 16 vCPU のマシンが 30 コアを認識すると このような状況になります
Kyuubi セッションタイムアウトアイドルセッション蓄積kyuubi.session.idle.timeout
メタストア接続失敗PostgreSQL ダウン · hive パスワード不一致pd status storagepasswd.sh PP_HIVE_PASSWORD
Iceberg 小ファイル蓄積optimize 未実行ウェアハウスコンテナの最適化ジョブ → warehouse モジュール
Spark UI アクセス不可ファイアウォール4440

チューニングポイント

項目テンプレート推奨
Spark executor メモリspark-defaults.conf.templateホストメモリの 25 ~ 50%
Spark コア数PP_CLUSTER_CORES (ホスト DOCKER_PP_CLUSTER_CORES)ホストコア数 − 2 (自動)
Kyuubi エンジン共有レベルkyuubi-defaults.conf.templatekyuubi.session.engine.share.level=USER

詳細なチューニングはパフォーマンスチューニングを参照してください。

関連ドキュメント