2016-08-03 7 views
1

HBaseに14.5Millionのレコードを保存しています。各行には20以上の列があります。私は最初に7000万レコードを挿入しようとしました。これは非常にスムーズで1.7分で完了しました。HBaseに大量のデータを保存するのが非常に遅い

次に、14.5百万という実際のフルデータを挿入しようとしました。私は一度それらのすべてを挿入しようとすると、それは多くの時間がかかります。それは1.5時間走った。

Sparkは私のプログラミングモデルです。私は、TableOutPutFormatとclouderaのhbase-sparkのbulkputを使ってsaveAsNewHadoopDataSetを使ってみました。

どちらも同じようです。私は8つのノードサーバー上で実行しており、8つのリージョンサーバーと1つの列ファミリーのみを使用しています。リージョンサーバーとマスターの両方に4GBのヒープを割り当てました。

私は何かが不足しているかHBaseが一度に大量のデータを挿入するとわかりません。

あなたのごちそうを提供してください。また、私はHBaseデータの上に直接データフレーム抽象化を使用し、データフレームをHBaseに直接保存できるように、pheonixレイヤーをインストールする予定です。

私は、HBaseが1450万レコードのためにどうやって窒息することができるかを見つけるのにまだ苦労しています。データは約9 GBです。

答えて

1

テーブルをあらかじめ分割していない可能性があり、hbaseは1つのリージョンサーバーを使用してデータを書き込むだけですか?

テーブルの分割数を確認してください.1つの分割がある場合は、100万のレコードを挿入してテーブルを切り捨て、すべてのデータを挿入した後に分割することができます。切り捨てテーブルは分割数を変更せず、すべてのデータを削除します。あなたは8つのノードを持っているので、テーブルに少なくとも8つの分割が必要です。

+0

こんにちはハリル、 私は、以下のコマンドを使用して分割されています。 hbase org.apache.hadoop.hbase.util.RegionSplitter table_name UniformSplit -c 8 -f column_family。 しかし、依然としてHBase Master UIをチェックインすると、ほとんどのリクエストは1つのリージョンサーバーを経由しています。 – Srini

+0

すべてのリクエストが単一のノードに向いている場合、多分ホットスポットであり、あなたのrow_keysはすべて同じものか少し違っていますか? –

+0

あなたのロウキー形式は何ですか、タイムスタンプで始まり、ホットスポットが発生した場合、変更する必要があります。 – halil

0

スプライスマシンについて考えましたか?

https://github.com/splicemachine/spliceengine

それはHBaseのに毎秒ノードあたり約10万レコードをインポートすることができます。それは輸入、コンパクション、および大規模なクエリのために内部的に使用していますスパーク

http://doc.splicemachine.com/Administrators/ImportingData.html

本当に簡単一括インポートコマンドを持っています。

また、HBaseにデータを格納する方法も考えてください。各列を別々に格納すると、多くの領域を占有する可能性があります。

幸運...

関連する問題