2017-08-24 8 views
2

HBaseにデータを格納する際に1つの問題があります。時間の経過後にHBaseテーブルサイズが減少する

  1. 大きなcsvファイル(サイズ:20G)は、結果としてhfiles(結果データサイズ:180G)でSparkアプリケーションによって処理されています。
  2. コマンドを使用して、テーブルの作成:'TABLE_NAME', {'NAME'=>'cf', 'COMPRESSION'=>'SNAPPY'}
  3. データ作成hfilesからコマンドhbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles -Dhbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily=1024 hdfs://ip:8020/path TABLE_NAME

とバルクロードされた右テーブルのローディング後のサイズは、しかしながら、ある期間の後に、180 Gである(昨日でした午後8時、午前8時頃)、データを14Gに圧縮するプロセスが開始されました。

私の質問はこのプロセスの名前ですか?それは大きな圧縮ですか?

hbase(main):001:0> major_compact 'TEST_TYMEK_CRM_ACTION_HISTORY' 
0 row(s) in 1.5120 seconds 

答えて

0

これはコンパクションプロセスである:私は手動で圧密(major_compactとコンパクト)をトリガしようとしているが、これはあるBecouseコマンドからの出力は圧縮されていないテーブルの上に開始しました。テーブルサイズの大きな違いの理由は次のように考えられます。 Sparkアプリケーションを使用すると、HFile用の圧縮コーデックを使用しません。これは、ファイル作成後に指定するためです。テーブルへのHFilesの添付はそれを変更しません(HDFSのすべてのファイルは不変です)。圧縮処理後のみ、データは圧縮されます。 HBase UIを使用してコンパクションプロセスを実行できます。それは通常60000ポートで走った。

関連する問題