HDFS における「ストリーミング データ アクセス」とはどういう意味ですか?

HDFS における「ストリーミング データ アクセス」とはどういう意味ですか?

HDFS アーキテクチャ ページによると、HDFS は「ストリーミング データ アクセス」用に設計されています。それが正確に何を意味するのかはわかりませんが、シークなどの操作が無効になっているか、パフォーマンスが最適ではないことを意味していると思います。これは正しいでしょうか?

ブラウザ クライアントにストリーミングする必要があるオーディオ/ビデオ ファイルを保存するために HDFS を使用することに興味があります。ストリームのほとんどは最初から最後までですが、一部のストリームにはシーク数が多くなる可能性があります。

これをより良く実行できる別のファイル システムがあるでしょうか?

答え1

ストリーミングとは、データがバーストまたは波状で入ってくるのではなく、データを転送するときに、特定のしきい値を超える一定のビットレートを提供できることを意味します。

HDFS がストリーミング用にレイアウトされている場合、一定のストリームのデータをキャッシュするために若干のオーバーヘッドが必要になりますが、おそらくシークは引き続きサポートされます。

もちろん、システムやネットワークの負荷によっては、シークに少し時間がかかる場合もあります。

答え2

HDFS は、データを 64 MB などの大きなブロックに保存します。ハード ドライブ上でデータを順番に配置することで、ハード ドライブがデータを読み取るために行うシークの回数を減らすという考え方です。

さらに、HDFS はユーザー空間のファイル システムであるため、クラスター全体のすべてのブロック (およびそのレプリカ) が保存されるメモリ内ディレクトリを含む単一の中央ネーム ノードが存在します。ファイルは大きくなることが予想され (たとえば 1 GB 以上)、複数のブロックに分割されます。ファイルを読み取るために、コードはネーム ノードにブロックのリストを要求し、ブロックを順番に読み取ります。

ドライブがこれらの大きなデータ ブロックに対して維持できる最大 I/O レートを維持することにより、データはハード ドライブから「ストリーミング」されます。

答え3

ストリーミングデータ用Hadoop: 決定版ガイド、第 3 版:

HDFS は、最も効率的なデータ処理パターンは、一度書き込み、何度も読み取るパターンであるという考えに基づいて構築されています。データセットは通常、ソースから生成またはコピーされ、その後、時間の経過とともにそのデータセットに対してさまざまな分析が実行されます。各分析には、データセットのすべてではないにしても、大部分が含まれるため、データセット全体を読み取る時間の方が、最初のレコードを読み取る際の待ち時間よりも重要です。

関連情報