2016-08-03 62 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