`
woodding2008
  • 浏览: 289605 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Storm TickTuple 意外停止

 
阅读更多

Storm的滑动窗口TickTuple通常用来控制bolt定制执行入库操作,使用过程中遇到了TickTuple“意外停止”的情况。

 

场景描述

Jiaodian任务共计使用12个worker,tick tuple间隔为5分钟。

WebPvLogSpout & WebPvLogBolt的executor数量为12.

WebPvLogSpout消费kafka topic,log_product_ypvlog共计10个partition

6月14号下午启动,次日凌晨1点35分之后,有2个bolt就收不到tick tuple。

生产tickTuple消息的线程【user-timer】由于disruptor的原因一直处于挂起状态。

"user-timer" daemon prio=10 tid=0x00007f8ea8ac7000 nid=0x353c runnable [0x00007f8e29662000]
   java.lang.Thread.State: TIMED_WAITING (parking)【处于挂起状态,一致等待信号激活自己,正常情况应该处于sleeping状态】
at sun.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:349)
at com.lmax.disruptor.AbstractMultithreadedClaimStrategy.waitForFreeSlotAt(AbstractMultithreadedClaimStrategy.java:99)
at com.lmax.disruptor.AbstractMultithreadedClaimStrategy.incrementAndGet(AbstractMultithreadedClaimStrategy.java:49)
at com.lmax.disruptor.Sequencer.next(Sequencer.java:127)
at backtype.storm.utils.DisruptorQueue.publishDirect(DisruptorQueue.java:174)
at backtype.storm.utils.DisruptorQueue.publish(DisruptorQueue.java:167)
at backtype.storm.disruptor$publish.invoke(disruptor.clj:66)
at backtype.storm.disruptor$publish.invoke(disruptor.clj:68)
at backtype.storm.daemon.executor$setup_ticks_BANG_$fn__6510.invoke(executor.clj:315)
at backtype.storm.timer$schedule_recurring$this__1807.invoke(timer.clj:99)
at backtype.storm.timer$mk_timer$fn__1790$fn__1791.invoke(timer.clj:50)
at backtype.storm.timer$mk_timer$fn__1790.invoke(timer.clj:42)
at clojure.lang.AFn.run(AFn.java:24)
at java.lang.Thread.run(Thread.java:745)

 

问题分析

包装后的kafka客户端会让分配不到partition的spout一直阻塞[ArrayBlockingQueue.take()]

user-timer多个小时的jstack信息,都是TIMED_WAITING (parking),其他worker的状态是sleeping。

spout几个小时一直阻塞,由于spout接收队列会被metrics and system stream塞满,一直得不到处理,会导致TickTuple消息无法放入到队列,这就导致了user-timer线程一直挂起,等待被唤醒。

 

解决方案

将spout的数量设置为kafka topic的partition相等的数量,实际上是不让spout长时间的处于阻塞状态。

 

 

官网issues

https://issues.apache.org/jira/browse/STORM-299

 

 

 

 

 

 

  • 大小: 104 KB
分享到:
评论

相关推荐

    storm集群启动与停止脚本共2页.pdf.zip

    【标题】"storm集群启动与停止脚本共2页.pdf.zip" 提供的是一份关于storm集群管理的文档,主要涵盖了如何启动和停止storm集群的关键步骤。Storm是Apache开源的一个分布式实时计算系统,它能够处理大规模的数据流并...

    storm-ui:Apache Storm 的用户界面

    主分支: ##包裹包战 mvn clean package -DskipTests=true -Dwarcp ./target/storm-ui.war $TOMCAT_HOME/webapps/包装罐 mvn clean package -DskipTests=truecp ./target/storm-ui-*.jar $STORM_HOME/external/...

    storm入门.pdf

    Storm是一个分布式实时计算系统,能够有效地处理大量数据流。它由Twitter公司开发,最初的目的是为了处理大规模的数据,如社交网络上的实时信息更新。Storm的基本单位是“topology”(拓扑结构),它可以理解为一个...

    Storm入门到精通

    Storm入门到精通 Storm 是一个分布式实时计算系统,主要用于处理大规模数据流。它的核心组件包括Spout和Bolt,分别负责数据的输入和处理。下面是对 Storm 的一个概述,从基础知识到实践应用。 Storm 组件 Storm ...

    StormStorm集成Kafka 从Kafka中读取数据

    1. 添加依赖:在项目中引入Storm和Kafka相关的库,如storm-kafka或storm-kafka-client。 2. 配置KafkaSpout:设置KafkaSpout的配置,包括Zookeeper地址、Kafka的Group ID、要消费的主题等。 3. 创建Spout实例:基于...

    apache-storm-2.4.0.tar.gz

    1. `bin` 目录:包含了启动、停止 Storm 服务的脚本,如 `storm.sh` 和其他管理工具。 2. `conf` 目录:存放配置文件,例如 `storm.yaml`,用户可以根据自己的需求进行修改。 3. `lib` 目录:包含 Storm 及其依赖的...

    Storm入门教程 之Storm原理和概念详解

    Storm入门教程 之Storm原理和概念详解,出自Storm流计算从入门到精通之技术篇,Storm入门视频教程用到技术:Storm集群、Zookeeper集群等,涉及项目:网站PV、UV案例实战、其他案例; Storm视频教程亮点: 1、Storm...

    storm开发jar包以及storm例子源码

    10. **Topologies的生命周期**:创建、提交、激活、停止和重新平衡,这些都是控制Storm拓扑运行状态的重要操作。 在压缩包中的"strom开发"文件可能包含了上述过程的详细步骤,源码示例,以及可能的配置文件和文档。...

    细细品味Storm_Storm简介及安装

    ### Storm简介及安装知识点梳理 #### 一、Storm简介 **Storm** 是一款由BackType公司开发的分布式实时计算系统,后被Twitter收购并开源。它主要用于处理大规模的数据流,能够简单、高效、可靠地处理实时数据。...

    Apache Storm(apache-storm-2.3.0.tar.gz)

    Apache Storm(apache-storm-2.3.0.tar.gz) 是一个免费的开源分布式实时计算系统。Apache Storm 可以轻松可靠地处理无限制的数据流,实时处理就像 Hadoop 进行批处理一样。Apache Storm 很简单,可以与任何编程语言...

    webservice测试工具storm

    "Storm"是一款专门用于测试Web服务的工具,下面我们将深入探讨其相关知识点。 1. WebService概念: WebService是通过XML(可扩展标记语言)、WSDL(Web服务描述语言)和SOAP(简单对象访问协议)等标准来构建的,...

    Storm API实现词频统计

    **Storm API实现词频统计详解** 在大数据处理领域,Apache Storm是一个实时计算系统,它能够持续处理数据流,实现低延迟、高吞吐量的数据分析。在这个“Storm API实现词频统计”的案例中,我们将深入探讨如何利用...

    从零开始学Storm.pdf

    Storm是一个开源的分布式实时计算系统,由Twitter开发并开源,旨在实现高可靠性、可伸缩性、快速处理无界数据流。Storm可以与Hadoop进行类比,但相较于Hadoop处理批量数据的批处理方式,Storm更专注于处理实时数据流...

    Storm.Applied.Strategies.for.real-time.event.processing

    Storm Applied is a practical guide to using Apache Storm for the real-world tasks associated with processing and analyzing real-time data streams. This immediately useful book starts by building a ...

    Storm笔记-PPT

    2. **Supervisor**:在工作节点上运行,管理worker进程,接收Nimbus的指令启动或停止任务。 3. **Worker**:实际执行计算任务的进程,每个worker包含多个task。 4. **Spout**:数据源,负责从外部数据源拉取数据并...

    storm部署(包括所有依赖rpm包、集群搭建详解)

    9. **监控和管理**:通过Storm UI监控拓扑运行情况,如有异常,可使用`storm kill`命令停止拓扑,或`storm list`查看当前运行的拓扑。 集群搭建完成后,需要注意监控集群的健康状况,包括资源利用率、网络延迟、...

    storm的jar包

    Storm是一个开源的分布式实时计算系统,由Twitter开发并开源,其设计目标是让实时处理变得简单、强大且可靠。在Storm中,数据流被抽象为持续不断的Tuple(元组)序列,这些Tuple在网络中的worker节点间进行分布式...

    Storm 源码分析

    ### Storm源码分析 #### 一、Storm简介与应用场景 Apache Storm是一款开源的分布式实时计算系统,它提供了简单而强大的API来定义数据流处理逻辑,同时保证了消息处理的容错性和高性能。Storm的设计目标是成为实时...

Global site tag (gtag.js) - Google Analytics