plantpulse-analytics (分析階層)
役割
大容量分析・SQLクエリ・データカタログを担当するビッグデータスタックです。Aster TSDB・PostgreSQL・Iceberg(RustFS)データを分散分析します。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
Aster TSDB → Icebergアーカイバ(plantpulse-warehouse-web)は2026-09-06からプラットフォームイメージのplantpulse-warehouse-webコンテナで動作します。このコンテナにはそのモジュールは含まれていません。アーカイブジョブの状態はpd retentionのcold_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は値1つが双方向です — メタストアが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 statusにPP_ANALYTICS[KYUUBI] STOPPEDが数十秒表示されるのは正常です。
Gravitino — Iceberg RESTカタログ
Icebergテーブルのカタログサーバーです。MASTERのみで起動し、ワーカーのSparkはマスターのものを参照します。
| 項目 | 値 |
|---|---|
| ポート | 19001 (REST API) — Web画面はありません。 / は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 retentionのarchive_jobがNA + «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ジョブOutOfMemory | executorメモリ不足 | spark-defaults.conf.template の spark.executor.memory |
| Kyuubiが全く起動しない | コア数が実際より多い | ホストのDOCKER_PP_CLUSTER_CORESがコンテナに渡されているか — 16 vCPUボックスが30コアを信じるとこうなります |
| Kyuubiセッションタイムアウト | idleセッション蓄積 | kyuubi.session.idle.timeout |
| メタストア接続失敗 | PostgreSQL停止・hiveパスワード不一致 | pd status storage, passwd.sh PP_HIVE_PASSWORD |
| Iceberg小ファイル滞留 | optimize未実行 | ウェアハウスコンテナの最適化ジョブ → warehouseモジュール |
| Spark UIにアクセスできない | ファイアウォール | 4440 |
チューニングポイント
| 項目 | テンプレート | 推奨 |
|---|---|---|
| Spark executor memory | spark-defaults.conf.template | ホストメモリの25〜50% |
| Spark cores | PP_CLUSTER_CORES (ホストDOCKER_PP_CLUSTER_CORES) | ホストコア − 2 (自動) |
| Kyuubiエンジン共有レベル | kyuubi-defaults.conf.template | kyuubi.session.engine.share.level=USER |
詳細なチューニングはパフォーマンスチューニングを参照してください。
関連ドキュメント
- データレイク概要
- warehouseモジュール — Icebergアーカイブ
- plantpulse-data-gateway — SQLコンソール