0

現在、HBaseとHDFSを使用してデータを保存し始めています。私の最初の実験は、12GBのtxtファイル(圧縮なし)のデータを、レプリケーションが3に設定されているHBaseの「テスト」テーブル(HDFSサーバー)にインポートすることです。

しかし、驚いたことに、インポート後、NameNodeレポート(50070)は「使用されたDFS:390.93GB」と言っていました!12GBのデータをインポートしたばかりですが、HBaseが390GBのスペースを使い果たしました。それは私には意味がありません。では、この問題のトラブルシューティング方法を誰かに教えてもらえますか?

4

1 に答える 1

1

最初に頭に浮かぶのは、データを列ファミリに格納する方法です。具体的には、ファイルからデータの行を読み取り、それを長さM(i)のN列の列ファミリーに格納すると、少なくともSUM(M(i))のオーバーヘッドが発生します。各行の1<=i <= N +(ヘッダー+タイムスタンプ/など)。スペースを節約したい場合は、列に小さな名前を付けてください。

それ以外に、WALログ、中間分割、およびマージされていないデータファイル(完全に圧縮/マージされていない)があります。たとえば、データを数回インポートした場合(何らかの理由で、インポートが失敗した場合や、何かを行うためのより良い/より速い方法を考えたために、途中でデータを停止して最初からやり直した場合)、そのデータまた、圧縮が実行されるまでHファイルに存在します。

列の名前付けがスペースを消費しているものではないと思われる場合は、column-family/tableでmajor-compactionを実行してみてください。すべてのタスクの実行が完了するまで待って、フットプリントをもう一度確認してください...

それがいくつかの洞察を提供することを願っていますか?幸運を!

于 2013-03-04T20:41:09.827 に答える