【问题标题】:Possible memory issue crashing Hbase Thrift Server可能导致 Hbase Thrift Server 崩溃的内存问题
【发布时间】:2013-01-30 04:28:45
【问题描述】:

我正在使用 Hbase 和 Hbase Thrift Server 运行 Cloudera CDH4。一天几次,Thrift 服务器崩溃。

在 /var/log/hbase/hbase-hbase-thrift-myserver.out 中,有这样的:

#
# java.lang.OutOfMemoryError: Java heap space
# -XX:OnOutOfMemoryError="kill -9 %p"
#   Executing /bin/sh -c "kill -9 8151"...

在 /var/log/hbase/hbase-hbase-thrift-myserver.log 中,文件末尾没有错误消息。只有很多 DEBUG 消息表明其中一个节点正在缓存特定文件。

我不知道 Hbase Thrift Server 的任何配置选项。 /etc/ 中没有明显的文件。只是 /etc/hbase/conf 和它的 Hbase 文件。

关于调试的任何想法?

【问题讨论】:

    标签: memory crash hbase thrift cloudera


    【解决方案1】:

    我们在设置 HBase Thrift 时遇到了同样的问题,最后使用了一个看门狗脚本,如果 Thrift 没有运行,它会重新启动它。

    您是否每天多次使用 HBase 服务器?这可能会导致这种情况。没有办法解决这个问题,Thrift 似乎每次使用时都会占用(或泄漏)大量内存,因此您需要一个看门狗脚本。

    如果看门狗脚本过于繁重,您可以使用简单的 cron 作业在频繁的时间间隔内重新启动 Thrift,以确保它保持正常运行。

    以下 cron 每两小时重新启动一次 Thrift。

    0 */2 * * * hbase-daemon.sh restart thrift
    

    【讨论】:

    • 谢谢。我向 Cloudera 邮件列表发送了一封电子邮件,因此希望有人可以告诉我们为什么会发生这种情况。我会在此期间尝试您的解决方案
    【解决方案2】:

    使用 /etc/hbase/conf/hbase-env.sh,我增加了堆大小,这解决了崩溃问题。

    # The maximum amount of heap to use, in MB. Default is 1000.
    export HBASE_HEAPSIZE=8000
    

    感谢Harsh J on the CDH Users mailing list 帮助我弄清楚。正如他所指出的,我缺少日志消息表明kill -9 可能正在发生:

    确实,如果日志尾部中缺少关闭处理程序消息 崩溃前,可能有一个 kill -9 通过 OOM 处理程序。

    【讨论】:

      【解决方案3】:

      增加堆大小可能并不总是解决办法。

      按照这个cloudera blog

      Thrift 服务器可能正在接收无效数据。 我建议启用帧传输和紧凑协议。

      如果您在服务器上启用这些协议,客户端应该使用相同的协议。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-22
        • 2016-02-21
        • 1970-01-01
        • 2011-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-01
        相关资源
        最近更新 更多