风暴事件处理器–每个工作者的GC日志文件

在过去的三个月中,我正在与一个新团队合作,为电信领域的大数据分析构建产品。

Storm事件处理器是我们使用的主要框架之一,而且确实很棒。 您可以阅读其官方文档(已改进)中的更多详细信息。

Storm使用Workers来完成您的工作,其中每个人都是一个JVM,并且由Storm内部管理(启动,如果无响应则重新启动,将Worker移至群集的另一个节点等)。 对于单个作业,您可以在集群上运行多个Worker(Storm决定如何在集群节点中分配Worker)。 作为“节点”,我指的是正在运行的操作系统,可以在VM或物理机上运行。

这里的棘手问题是,即使节点中的所有Worker正在运行/处理其他类型的作业,它们都读取相同的配置文件(STORM_HOME / conf / storm.yaml )。 此外,有一个单一的参数(worker.childopts)在此文件中,其用于所有工人(在同一节点的)来初始化他们的JVM(如何设置JVM选项)。

因为我们想知道GC在每个worker中的性能如何,我们需要监视每个Worker / JVM的GC日志。

就像我说的那样,问题在于,当一个节点中的所有Worker都从同一配置文件中读取相同的参数以初始化其JVM时,因此为每个Worker / JVM使用不同的GC日志记录文件并不是一件容易的事。

幸运的是,Storm开发人员已经公开了解决此问题的“ 变量 ”。 此变量名为“ ID ”,并且对于每个节点上的每个Worker都是唯一的(相同的Worker ID可能存在于不同的节点中)。

对于Workers JVM Options,我们在“ storm.yaml ”文件中使用以下条目:

worker.childopts: "-Xmx1024m -XX:MaxPermSize=256m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbose:gc -Xloggc:/opt/storm/logs/gc-storm-worker-%ID%.log"

请注意,您必须在“ ID ”字符串之前和之后添加“ ”(以便被标识为内部Storm变量)。

此外,对于Supervisor JVM选项(每个节点上有一个进程),我们在“ storm.yaml ”文件中使用以下条目:

supervisor.childopts: "-Xmx512m -XX:MaxPermSize=256m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbose:gc -Xloggc:/opt/storm/logs/gc-storm-supervisor.log"

我也包括了一种内存设置(“ -Xmx”和“ -XX:MaxPermSize”),但这只是一个例子。

请记住,Storm需要Oracle Hotspot JDK 6 (尚不支持JDK 7/8)。 这是一个严重的缺点,但我们希望它会尽快解决。

希望能帮助到你!

民主需要免费软件

翻译自: https://www.javacodegeeks.com/2014/04/storm-event-processor-gc-log-file-per-worker.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值