我正在嘗試創建約589個表並進行隨機插入。我開始按表格處理表格:所以我創建一個表格,然後製作所有插入內容,然後創建另一個表格,直到獲取所有數據。HBase的RegionServer崩潰
這種解決方案的體系結構是:
- Python客戶端位於一臺計算機,其攝取HBase的數據。
- Cloudera服務器託管HBase獨立配置,它是與客戶端位於同一臺機器並通過其IP地址標識的VM。該服務器的特性如下:64GB存儲空間,4GB RAM和1個CPU。
- 客戶端與HBase Thrift Server進行通信。
所以這裏的問題是,當我嘗試攝取所有這些數據量時。在regionserver關閉之前,客戶端只能創建並插入大約300MB(大約創建了45個表,並插入相應的行,然後服務器在第46個表的數據提取時崩潰)。我已經用不同的機器特性測試了所有這些,所攝入數據的大小因機器而異(如果機器有更多的內存,將會插入更多的數據[已經用不同的虛擬機硬件特性測試了這一點))。我懷疑它來自Java堆內存的管理,所以我試圖做出不同的配置。但它並沒有讓它變得更好。這裏是我的HBase的主要配置:
HBase的-site.xml中
<property>
<name>hbase.rest.port</name>
<value>8070</value>
<description>The port for the HBase REST server.</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://quickstart.cloudera:8020/hbase</value>
</property>
<property>
<name>hbase.regionserver.ipc.address</name>
<value>0.0.0.0</value>
</property>
<property>
<name>hbase.master.ipc.address</name>
<value>0.0.0.0</value>
</property>
<property>
<name>hbase.thrift.info.bindAddress</name>
<value>0.0.0.0</value>
</property>
<property>
<name>hbase.hregion.max.filesize</name>
<value>10737418240</value> <!-- 10 GB -->
</property>
<property>
<name>hbase.hregion.memstore.flush.size</name>
<value>33554432</value> <!-- 32 MB -->
</property>
<property>
<name>hbase.client.write.buffer</name>
<value>8388608</value>
</property>
<property>
<name>hbase.client.scanner.caching</name>
<value>10000</value>
</property>
<property>
<name>hbase.regionserver.handler.count</name>
<value>64</value>
</property>
hbase-env.sh
# The maximum amount of heap to use. Default is left to JVM default.
export HBASE_HEAPSIZE=4G
# Uncomment below if you intend to use off heap cache. For example, to allocate 8G of
# offheap, set the value to "8G".
# export HBASE_OFFHEAPSIZE=1G
# Extra Java runtime options.
# Below are what we set by default. May only work with SUN JVM.
# For more on why as well as other possible settings,
# see http://wiki.apache.org/hadoop/PerformanceTuning
export HBASE_OPTS="-XX:+UseConcMarkSweepGC"
# Configure PermSize. Only needed in JDK7. You can safely remove it for JDK8+
export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=4g -XX:MaxPermSize=4g"
這裏是我從主得到的錯誤服務器日誌:
util.JvmPauseMonitor:在JVM或主機(例如GC)檢測暫停:暫停 約1016msNo GC的檢測
,並沒有出現在RegionServer的日誌。
另一方面,當我嘗試創建只有一個表,並插入更多的數據這個工程!
請問如何解決這個問題的任何好的想法?
在此先感謝。