2016-08-03 33 views
1

我正在爲HBase保存1450萬條記錄。每行有20列。我首先嚐試插入0.7百萬條記錄,該記錄非常流暢,並在1.7分鐘內完成。將大數據保存到HBase已經很慢

然後我試圖插入14.5百萬的實際和完整數據。如果我試圖插入所有這些,它會花費很多時間。它跑了1.5小時。

Spark是我的編程模型。我嘗試使用saveAsNewHadoopDataSet使用TableOutPutFormat和cloudera的hbase-spark bulkput。

兩者似乎都使用相同的。我在8節點集羣上運行,有8個區域服務器,只使用單列系列。我爲區域服務器和主服務器分配了4GB堆。

我不確定,如果我缺少任何東西或者HBase真的扼殺大量數據一次插入。

請提供您的tough。。我也計劃安裝pheonix圖層,以便我可以直接在HBase數據上使用數據幀抽象,並將數據框直接保存到HBase。

我仍然在努力尋找HBase如何能夠遏制1450萬條記錄。數據僅爲9 GB左右。

回答

1

可能是你沒有預分割你的表和hbase只使用1區域服務器來寫入數據?

請檢查表拆分計數,如果它有一個拆分,你可以在插入100萬條記錄和截斷表後插入所有數據。截斷表不會更改分割計數,將刪除所有數據。由於您有8個節點,因此您的表格中至少需要8個分割。

+0

哈里爾嗨, 我一直在使用下面的命令拆分。 hbase org.apache.hadoop.hbase.util.RegionSplitter table_name UniformSplit -c 8 -f column_family。 但是,當我檢入HBase Master UI時,仍然大部分請求都只經過一個區域服務器。 – Srini

+0

如果您的所有請求都轉到單個節點,也許它是熱點,那麼您的row_keys是否都開始相同或者它們稍有不同? –

+0

你的rowkey格式是什麼,如果它以時間戳開始,那麼它引起熱點,你應該改變。 – halil