未解決
1 Rookie
•
33 メッセージ
3
375
2024年12月10日 12:30
DataPlatformTech 第31回 PowerScaleのメタデータ管理 ~MetadataIQ~
いつも本ブログをご覧頂きまして誠にありがとうございます。気が付くと2024年もあと僅かとなりましたが、いかがお過ごしでしょうか?
本日(US時間の2024年12月10日)待望のOneFS9.10がリリースされました!OneFS9.10では、待望のフロントエンドネットワークのInfiniBand対応や大容量ドライブへの対応など幾つか注目するポイントがありますが、今回は特徴的な機能かつ今後ニーズが増えそうなMetadataIQをご紹介します。
# ちなみに、同じタイミングでInsightIQ 5.2もリリースとなりました。
MetadataIQは一言でいうと、PowerScaleのファイルシステムのメタデータに関する情報を、外部データベース(Elasticsearch)にエクスポートする機能です。
<本ブログで、Elasticsearch/Kibanaとの連携をご紹介するのは第6回以来で6年半ぶりです。>
MetadataIQ概要
組織における非構造化データ(ファイルやオブジェクト)の管理や利活用の課題として、いかに膨大な量のデータを効率良く可視化して検索性を高めるかが重要です。データベースを代表とする構造化データに比べて、非構造化データは瞬く間にデータが増え、数十PB、数十億ファイル/オブジェクトとなると全てのデータ(情報資産)を把握することが困難になります。この課題に対してPowerScaleに搭載されたMetadataIQの機能を使用すると複数のPowerScaleクラスタに格納されている様々なファイルのメタデータを1箇所の外部データベースに格納することで構造化されたグローバルビューの提供を実現します。
また、Elasticsearch単体だけではなくDell Data Lakehouseなどのデータプラットフォームに接続することで他のデータソースとのクエリフェデレーションも可能になります。その結果、ユーザならびにアプリケーションはファイルシステムをデータベースのように扱えるようになり、PowerScale内のデータを生成AIにおけるRAGのデータセットとして使用する際にデータを簡単に検索して見つけることができます。
別の観点では、PowerScaleには元々InsightIQのファイルシステム分析(FSA)という便利な機能があり、管理者はファイルシステムの利用状況を俯瞰的に確認することができますが、細かな内容を検索することは出来ませんでした。例えば「ホームディレクトリの配下に格納されている100MB以上のサイズを持つ動画ファイル」や「CloudPools先のオブジェクトストレージに存在するファイル名のリストや使用量」などの条件はInsightIQでは可視化することが困難でしたが、MetadataIQを用いることでこれらの項目の抽出やレポートの作成が可能となり、PowerScale内のデータに対するユーザの利用パターンをより深く知ることができるようになります。
環境準備
PowerScaleのメタデータのエクスポート先はElasticsearchになりますので、下記の図のように今回はElasticsearch/Kibanaのマシン1台とPowerScaleを2クラスタ(iq9100c1、iq9100c2)用意しました。本ブログのテスト環境は執筆時の最新版であるElasticsearch 8.15.3を使用しました。Elasticsearchならびに、この後ご紹介するKibanaの構築方法についてはElasticのサイト含めインターネット上に多くの情報がありますので割愛しますが、MetadataIQを使用するにあたりPowerScaleからElasticsearchにアクセスする際に必要となるAPI keyと証明書(http_ca.crt)を構築したElasticsearchから取得してください。
また、OneFSのバージョンは9.10が必要となります。メタデータの更新は内部的にスナップショットによる差分更新機能(Changelist)を利用しているため、ISI_PRIV_SNAPSHOT権限が必要となります。なお、本番機での利用に関してはメタデータの抽出ならびにスナップショットの作成によるリソース消費、Elasticsearchへのエクスポートにあたってのセキュリティリスクなど十分に考慮の上ご利用ください。
MetadataIQ設定
では実際にMetadataIQの設定方法を確認して行きたいと思います。OneFS9.10から新たに2つのサービス(デフォルト無効)が追加されています。プロデューサ(isi_metadataiq_producer_d)はメタデータを収集する機能で、コンシューマ(isi_metadataiq_consumer_d)はメタデータを外部データベースにエクスポートする機能を提供します。
iq9100c1-1# isi services | grep metadata isi_metadataiq_consumer_d MetadataIQ Consumer Service Disabled isi_metadataiq_producer_d MetadataIQ Producer Service Disabled |
早速、プロデューサとコンシューマのサービスを有効にします。
iq9100c1-1# isi services isi_metadataiq_producer_d enable The service 'isi_metadataiq_producer_d' has been enabled. iq9100c1-1# isi services isi_metadataiq_consumer_d enable The service 'isi_metadataiq_consumer_d' has been enabled. |
OneFS9.10では、新たにMetadataIQ関連のコマンド(isi metadataiq)が実装されています。isi metadataiq settings viewで現在のプロデューサとコンシューマの設定情報が確認できます。
iq9100c1-1# isi metadataiq settings view |
続いて、isi metadataiq settings modifyを用いて設定していきます。api-keyとca-certificate-pathには、それぞれElasticsearchから取得したAPI keyと証明書のパスを指定します。hostnameはElasticsearchのホストを、pathはPowerScaleのメタデータのエクスポート(プロデューサが収集を行う)対象となるパスを指定します。
メタデータの収集ならびにエクスポートを自動化するためにスケジュール(Schedule)を指定しますが、Scheduleで指定する日付のフォーマットはOneFS Jobのフォーマットとなります。毎日午前1時に実行する場合は、"every day at 01:00"、毎週月曜日の午前5時に実行する場合は、"Every 1 weeks on monday at 05:00 AM"のように記載します。少しわかりにくい場合は、OneFSに登録されているJob TypesのScheduleをサンプルとして見て頂くとイメージできると思います。今回はテスト環境なので10分毎に実行されるように、Scheduleは"every day every 10 minutes"を指定します。なお、--verboseオプションを含めるとコマンド実行後に設定前後の変更点(赤字部分)が表示されます。
iq9100c1-1#isi metadataiq settings modify --api-key='T2pfWTVwSUJWaVF1N2ljX0NhVEo6NWhxOVlmb0FUWlNhVW5CUkthcEI3Zw==' --ca-certificate-path=/ifs/cert/http_ca.crt --hostname='https://<IPアドレス>:9200' --path=/ifs/test --schedule='every day every 10 minutes' --verbose database_info.api_key: No key configured -> T2pfWTVwSUJWaVF1N2ljX0NhVEo6NWhxOVlmb0FUWlNhVW5CUkthcEI3Zw== producer.path: /ifs -> /ifs/test |
念のため、isi metadataiq settings modifyで設定が反映されたか確認します。赤字部分が先程実行したコマンドの結果(デフォルト値)からの変更点です。
iq9100c1-1# isi metadataiq settings view Consumer Max Threads: 8 Excluded Lnns: - Number Shards: 8 Fetch Size: 2048 Work Queue Size: 16 Verify Certificate: Yes Database Type: ELK database Hostname: https://<IPアドレス>:9200 Host Port: 9200 CA Certificate: 8ce7bf01ef74c78a43062200e275793e965e362c4ff4038b1bd8fb3edfa5e592 Api Key: A key is configured Producer Path: /ifs/test Schedule: every day every 10 minutes Changelist Job Retries: 2 Changelist Job Tolerable Pause Hours: 24 Changelist Job Tolerable State Request Failures: 720 |
正しく設定が完了すると、スケジュールに従ってプロデューサがメタデータを収集しコンシューマがElasticsearchへエクスポートを行います。メタデータの収集(ChangelistCreate)の動作完了後にスナップショットを確認すると、MetadataIQ用のスナップショットが作成されたことが確認できます。名前後半の1732604409は作成された時間となります。(UNIX時間なので日付フォーマットに変換すると2024年11月26日 16:00です。)
iq9100c1-1# isi snapshot list ID Name Path -------------------------------- 1438 MetadataIQ_1732604409 /ifs -------------------------------- Total: 1 |
コンシューマによるエクスポートが完了すると、Elasticsearchのインデックス管理に"isi-metadataiq-index.<クラスタ名>"ではじまるインデックスが登録されたことが確認できます。KibanaのDiscoverからデータビューを作成する際に登録されたインデックスパターンを指定することで、PowerScaleのメタデータの確認や操作が可能となります。
メタデータは約30ものフィールドが存在します。ファイルの絶対パス、サイズ、タイムスタンプ、クラスタ名、ノードプール名など、データの抽出やファイルの分析に利用できる個々のファイルに対するメタデータが構造化されたことが確認できます。(下記スクリーンショットは一部インジェストパイプラインで追加したフィールドが存在します。)
例えば、Elasticsearch上のメタデータに対してクエリを実行することにより、CloudPools上に存在しているファイル一覧も表示することができます。
Kibanaによるメタデータの可視化
Kibanaでは比較的簡単にダッシュボードが作成できます。とは言ってもKibanaの知識と美的センスの無い私には難儀でしたが、独り悶々とKibanaと格闘していた矢先に渡りに船で弊社プリンシパルエンジニアのAndrewさんがダッシュボードを作成してくれました。(涙)
幾つか抜粋してスクリーンショットを掲載します。(何等かの方法でこのダッシュボードもしくはこれに近いものが一般公開される予定です。)
<クラスタ合計/クラスタ別のファイル数、ディレクトリ数、合計容量、CloudPools上のファイル、ファイルサイズ毎の分布グラフ>
<クラスタ合計/クラスタ別、タイムスタンプ毎のファイル数や容量分布グラフ>
<クラスタ合計/クラスタ別、ファイル拡張子やファイルカテゴリによる分布グラフ>
<クラスタ合計/クラスタ別、パス(ディレクトリ)毎のファイル数、ノードプールの使用状況、CloudPools上のファイル分布グラフ>
以上、MetadataIQのご紹介となります。少しでも皆様のデータ利活用のお役に立てれば幸いです。
関連リンク
DataPlatformTech 第30回 Dell Technologies Forum 2024 まとめ(Dell Data Lakehouseセッション)
[Meet The Experts]Dell Data Lakehouse
IsilonianTech 第28回 Dell Data Lakehouse