Data lake
Data lake関連のFAQ
このトピックでは、データレイクに関するいくつかのよくある質問(FAQ)を説明し、これらの問題への解決策を提供します。このトピックで言及されているいくつかのメトリクスは、SQLクエリのプロファイルからのみ取得できます。SQLクエリのプロファイルを取得するには、set enable_profile=true
と指定する必要があります。
HDFSノードの遅延
問題の説明
HDFSクラスタに格納されているデータファイルにアクセスする際、実行するSQLクエリのプロファイルから__MAX_OF_FSIOTime
と__MIN_OF_FSIOTime
メトリクスの値に大きな差があることがあります。これはHDFSノードの遅延を示しています。次の例は、HDFSノードの遅延の問題を示す典型的なプロファイルです。
- InputStream: 0
- AppIOBytesRead: 22.72 GB
- __MAX_OF_AppIOBytesRead: 187.99 MB
- __MIN_OF_AppIOBytesRead: 64.00 KB
- AppIOCounter: 964.862K (964862)
- __MAX_OF_AppIOCounter: 7.795K (7795)
- __MIN_OF_AppIOCounter: 1
- AppIOTime: 1s372ms
- __MAX_OF_AppIOTime: 4s358ms
- __MIN_OF_AppIOTime: 1.539ms
- FSBytesRead: 15.40 GB
- __MAX_OF_FSBytesRead: 127.41 MB
- __MIN_OF_FSBytesRead: 64.00 KB
- FSIOCounter: 1.637K (1637)
- __MAX_OF_FSIOCounter: 12
- __MIN_OF_FSIOCounter: 1
- FSIOTime: 9s357ms
- __MAX_OF_FSIOTime: 60s335ms
- __MIN_OF_FSIOTime: 1.536ms
解決策
この問題を解決するために、以下の解決策のいずれかを使用できます。
- [推奨] データキャッシュ機能を有効にすると、外部ストレージシステムからデータを自動的にStarRocksクラスタのBEにキャッシュすることで、遅延したHDFSノードの影響をクエリから排除できます。
- Hedged Read機能を有効にする。この機能を有効にすると、ブロックからの読み取りが遅い場合、StarRocksは新しい読み取りを起動し、元の読み取りと並列して別のブロックレプリカに対して読み取りを行います。2つの読み取りのいずれかが返ってくると、もう一方の読み取りはキャンセルされます。Hedged Read機能は読み取りの高速化に役立ちますが、Java仮想マシン(JVM)上のヒープメモリの消費量も大幅に増加させます。そのため、物理マシンのメモリ容量が小さい場合は、Hedged Read機能を有効にしないことをお勧めします。
[推奨] データキャッシュ
データキャッシュを参照してください。
Hedged Read
HDFSクラスタ でHedged Read機能を有効にし、設定するために、BEの設定ファイル be.conf
で以下のパラメータ(v3.0以降でサポート)を使用します。
パラメータ | デフォルト値 | 説明 |
---|---|---|
hdfs_client_enable_hedged_read | false | Hedged Read機能を有効にするかどうかを指定します。 |
hdfs_client_hedged_read_threadpool_size | 128 | HDFSクライアントのHedged Readスレッドプールのサイズを指定します。スレッドプールのサイズは、HDFSクライアントで実行されるHedged Readのスレッド数を制限します。このパラメータは、HDFSクラスタの |
hdfs_client_hedged_read_threshold_millis | 2500 | Hedged Readを開始する前に待機するミリ秒数を指定します。たとえば、このパラメータを |
クエリのプロファイルで以下のメトリクスの値が0
を超えている場合、Hedged Read機能が有効になっています。
メトリクス | 説明 |
---|---|
TotalHedgedReadOps | 開始されたHedged Readの数 |
TotalHedgedReadOpsInCurThread | Hedged Readスレッドプールが |
TotalHedgedReadOpsWin | Hedged Readが元の読み取りを上回った回数 |
xicalBlock>