データレイク
データレイク FAQ
このトピックでは、データレイクに関するよくある質問 (FAQ) を説明し、これらの問題に対する解決策を提供します。このトピックで言及されているいくつかのメトリクスは、SQL クエリのプロファイルからのみ取得できます。SQL クエリのプロファイルを取得するには、set enable_profile=true を指定する必要があります。
遅い HDFS DataNode
問題の説明
HDFS クラスターに保存されているデータファイルにアクセスする際、実行した SQL クエリのプロファイルから __MAX_OF_FSIOTime と __MIN_OF_FSIOTime メトリクスの値に大きな差があることに気付くかもしれません。これは、HDFS クラスター内の一部の DataNode が遅いことを示しています。以下は、遅い HDFS DataNode の問題を示す典型的なプロファイルの例です。
- 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
解決策
この問題を解決するために、次のいずれかの解決策を使用できます。
- [推奨] Data Cache 機能を有効にします。これにより、外部ストレージシステムから StarRocks クラスターの BEs または CNs にデータを 自動的にキャッシュすることで、遅い HDFS DataNode がクエリに与える影響を排除します。
- [推奨] HDFS クライアントと DataNode 間のタイムアウト時間を短縮します。この解決策は、Data Cache が遅い HDFS DataNode の問題を解決できない場合に適しています。
- Hedged Read 機能を有効にします。この機能を有効にすると、ブロックからの読み取りが遅い場合、StarRocks は新しい読み取りを開始し、元の読み取りと並行して実行し、異なるブロックレプリカに対して読み取ります。2 つの読み取りのいずれかが返された場合、もう一方の読み取りはキャンセルされます。Hedged Read 機能は読み取りを高速化するのに役立ちますが、Java 仮想マシン (JVM) のヒープメモリ消費量を大幅に増加させます。そのため、物理マシンのメモリ容量が小さい場合は、Hedged Read 機能を有効にしないことをお勧めします。
[推奨] Data Cache
Data Cache を参照してください。