【问题标题】:Exception in thread "main" java.lang.OutOfMemoryError: Java heap space in flume线程“主”java.lang.OutOfMemoryError 中的异常:flume 中的 Java 堆空间
【发布时间】:2020-12-20 15:07:04
【问题描述】:

问题:线程“主”java.lang.OutOfMemoryError 中的异常:flume 中的 Java 堆空间。

执行命令

flume-ng agent --conf conf 
--conf-file /usr/local/flume/conf/twitter.conf --name TwitterAgent
-Dflume.root.logger=DEBUG.console

输出:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

配置文件 config file

Flume env.sh flume-env.sh

【问题讨论】:

  • 您的问题中没有足够的信息让我们帮助您。尝试阅读一些现有的关于 Flume 和 OOME 的问答;例如stackoverflow.com/questions/50349540。或者添加更多细节……比如相关的配置文件、版本信息、堆栈跟踪、你尝试过的东西等等。
  • export JAVA_OPTS="-Xms400m -Xmx2000m -Dcom.sun.management.jmxremote" 这是我的flume-env.sh中的内存分配。我正在使用 jdk 11 和水槽版本 1.8.0
  • 您所说的与您的问题相矛盾。 9.7G与2G不一样。也许您应该阅读java 命令的手册条目,以了解您使用的-Xms-Xmx 选项的实际含义。
  • java -Xmx10000m -XshowSettings:all ,当我运行此命令以了解我的堆空间设置时,这出现了,这就是我共享此 VM 设置的原因:Max。堆大小:9.77G 使用虚拟机:OpenJDK 64 位服务器虚拟机
  • 我有 3.5Gb 内存,即使我将最大堆空间设置为 3GB ,它也会显示相同的错误。我可能听起来很天真,但我真的需要帮助

标签: java hadoop bigdata flume


【解决方案1】:

我将您使用的配置与示例here 进行了比较,我看不到任何错误。我能看到的唯一区别是:

  • 您为TwitterAgent.channels.MemChannel.capacity 使用了较小的值
  • 您使用了较小的 TwitterAgent.sinks.HDFS.hdfs.batchsizeTwitterAgent.sinks.HDFS.hdfs.rollcount
  • TwitterAgent.sinks.HDFS.hdfs.path 不同。

我没想到这些会增加内存利用率。

要检查的另一件事是数据是否真正流入 HDFS。 same source 表示您应该使用 Hadoop 管理 Web UI 检查数据是否流入 Hadoop。我想如果数据没有流动,那么它可能会在flume-ng应用程序的堆中累积。如果积累的数据过多,最终会导致堆溢出。不管你设置什么堆大小。

数据可能无法流动的可能原因包括:

  • Hadoop 未运行。
  • Hadoop 运行在与您在 Flume 配置文件中指定的主机(或 IP)和/或端口不同的主机(或 IP)和/或端口上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-23
    • 2023-03-13
    • 1970-01-01
    • 2016-11-24
    • 1970-01-01
    • 2018-07-08
    • 1970-01-01
    相关资源
    最近更新 更多