5

比較的小さなレポート (数 GB) を生成するために、いくつかの大きなファイル (~2 TB) を小さなクラスター (~10 サーバー) で処理する必要があります。

私は中間結果ではなく、最終レポートのみに関心があり、マシンには大量の RAM が搭載されているため、理想的にはデータを保存することにより、可能な限りディスク アクセスを削減する (結果として速度を上げる) ために使用することは素晴らしいことです。場合にのみディスクを使用して揮発性メモリ内のブロック。

構成ファイルと前の質問を見ると、 Hadoop はこの機能を提供していないようです。Spark の Web サイトでは memory_and_diskオプションについて説明していますが、新しい言語に基づいた新しいソフトウェアを展開するよう会社に依頼したいと思います。

私が見つけた唯一の「解決策」は 、hdfs-default.xmlのように設定dfs.datanode.data.dirし、ファイルシステムの代わりに揮発性メモリを使用してデータを保存するように設定することですが、この場合でも、RAMがいっぱいになると動作が悪くなると思います/dev/shm/スワップを使用します。

Hadoop でデータブロックを可能な限り RAM に保存し、必要な場合にのみディスクに書き込むトリックはありますか?

4

2 に答える 2

2

Hadoop 2.3 のリリース以降、メモリ キャッシングで HDFS を使用できるようになりました。

于 2014-09-01T14:41:49.177 に答える
1

mapred.job.reduce.input.buffer.percent(デフォルトは0、 に近いものを試して1.0ください。たとえば、このブログ投稿を参照してください) をいじったり、 の値をmapred.inmem.merge.thresholdに設定したりすることもできます0。適切な値を見つけるのはちょっとした芸術であり、いくつかの実験が必要であることに注意してください。

于 2013-04-14T07:27:54.820 に答える