
私たちはHadoopクラスタを持っており、Sparkアプリケーションの速度低下の挙動を調査するためにメトリクス収集データを収集しています。
Hadoopクラスタに関する長い調査を経て
Prometheus メトリクスポイントから、node_disk_io_now が通常よりも高い値を示しており、これはデータノードマシン上のすべての HDFS ディスクに関連していることがわかりました。
node_disk_io_now の定義は次のとおりです。
node_disk_io_now (フィールド 9) ゼロになる唯一のフィールド。リクエストが適切な struct request_queue に渡されると増加し、リクエストが終了すると減少します。
カーネルパラメータの調整がディスクパフォーマンスにプラスの影響を与えるかどうかを知りたい
node_disk_io_nowの定義によると、キューで待機しているタスクが多すぎるようです。
そして、いくつかのカーネルパラメータが上記の動作を改善するのに役立ち、キュー内のタスクが長時間そこに留まらなくなる可能性があります。
答え1
質問では、使用しているディスクの種類が SSD/SAS/NLSAS かハイブリッドかわかりません。これが選択の最も重要な部分です。
質問への回答として、カーネル パラメータについては、クラスターに最適なものを見つけるために調整できるパラメータがいくつかあると答えます。
IO 最適化の重要な部分は IO スケジューラです。現在の Linux カーネルには 3 つの IO スケジューラがあります。
NOOP(FIFO):ストレージ デバイス自体が独自の最適化を処理できるほどスマートな SAN、SSD タイプのストレージに使用されます。
締め切り:一般的に、ファイル サーバーとデータベース サーバーに適しています。スループットとレイテンシのどちらを強化するかを検討する必要があります。または、読み取り要求を増やすか、その逆を行うこともできます。
質問:サーバーには推奨されませんが、デスクトップでの使用には適しています。
IO スケジューラの他に、仮想メモリ用のパラメータがいくつかあります。以下ではそれらについてのみ説明しますが、パフォーマンスを向上させるには、それらについて自分で詳しく読む必要があります。
vm.swappiness
vm.dirty_ratio
vm.dirty_background_ratio
vm.dirty_expire_centisecs
and....
答え2
これを改善できるカーネル オプションは (私の知る限り) ありません。ただし、他のすべてのノードの RAID コントローラーがそのノードと同じ値 (たとえば、ブロック書き込みサイズ) を持っているか、またはその逆であるかどうかを確認することをお勧めします。
また、/etc/fstab 内のすべてのマウントに同じオプションが設定されていることを確認してください。
それ以外では、ディスクの仕様をチェックして、同じであることを確認する必要があります。
一部のファイル システムでは RAM に大量のキャッシュを行うため、RAM のサイズを確認することもできます。HDFS についてはよくわかりませんが、たとえば ZFS はこれに大きく依存しています。