gpt4 book ai didi

hadoop - HBase 区域服务器崩溃

转载 作者:可可西里 更新时间:2023-11-01 15:54:28 25 4
gpt4 key购买 nike

我正在尝试创建大约 589 个表并进行随机插入。我开始逐表处理:所以我创建一个表,然后进行所有插入,然后创建另一个表,直到所有数据都被摄取。

这个解决方案的架构是:

  • Python 客户端位于一台机器上,它使用数据摄取 HBase。
  • 托管 HBase 的 Cloudera 服务器独立配置,这是一个与客户端位于同一台机器上的虚拟机,由其 IP 地址标识。该服务器的特性如下:64GB 存储空间、4GB RAM 和 1 个 CPU。
  • 客户端与 HBase Thrift 服务器通信。

所以这里的问题是,当我尝试摄取所有这些数据量时。在区域服务器关闭之前,客户端只能创建和插入大约 300MB(大约创建了 45 个表并插入了相应的行,然后服务器在第 46 个表的数据摄取时崩溃)。我已经用不同的机器特性测试了所有这些,摄取数据的大小因机器而异(如果机器有更多内存,将插入更多数据 [已经用不同的 VM 硬件特性测试过])。我怀疑它来自 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: Detected pause in JVM or host machine (eg GC): pause of approximately 1016msNo GCs detected

RegionServer 的日志中什么也没有出现。

另一方面,当我尝试只创建一个表并插入更多数据时,这是可行的!

请问有什么解决办法吗?

提前致谢。

最佳答案

您的虚拟机内存太低。尝试将其增加到至少 12GB。您忘记了 Java 进程的堆只是内存占用的一个部分。通过设置 HBASE_HEAPSIZE=4G,您是说您希望 HBase 分配所有 VM 的内存。除了 HBase 之外,VM 还需要运行 Linux 守护进程和您的 Cloudera 服务。

关于hadoop - HBase 区域服务器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45736804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com