`

Storm 重启排查(续)

阅读更多

此文主要接 storm worker异常重启原因排查汇总 这篇文章继续描述。上文中的第三点大概描述了一下造成重启的原因,这次又有一次详细的排查过程和思路供参考。

 

 

一、背景

今天,另一个同事反应,我们的一个任务在早上4点到10点之间会有严重的数据丢失,而这个时间点与一个数据导入任务的时间点是吻合的,经查看此任务的的数据量有将近5亿。因此,在这段时间内造成的影响还是挺大的,毕竟都是线上数据。

因此,又重新启动此任务,可以观察到,数据丢失率确实增高,因此,就查看各个woker的状态如何,发现了有一台机器woker重启,开始了这个问题的排查过程。

(注:此结果还无法反馈数据丢失的具体原因,仅仅是针对woker重启的现象排查过程进行记录)

 

二、排查过程

1、是否有明显异常

这个问题的排查请参考storm worker异常重启原因排查汇总 中的1和2两点。经查看,可以知道不是这两种原因导致的。

 

2、开启打怪模式

(1) 首先查看supervisor的日志文件,发现重启的原因是由于心跳timeout。

heartbeat

但是supervisor检测worker的心跳,是在本机的一个心跳文件检测的,不涉及到网络的问题,因此,就开始怀疑是本物理机有问题。

 

(2) 查看机器的各个指标

首先查看机器的整体监控,可以看到该机器的CPU整理利用率 80%, 内存整体利用率88%,CPU的负载持续很高,并且不稳定,见下图:

CPU负载

 

然后通过top命令,查看各个进程的内存和CPU情况,如下:



 
(3)根据2中观察到的结果,具体查看占用CPU高的线程在做什么事情,看到是GC线程把CPU打满了。

注:

1) supervisor检测worker心跳,是通过检测本地的心跳文件来完成的,心跳文件的路径为:{storm.local.dir}/supervisor/localstate

2) 查看各个线程在做什么的相关命令为:

jstack :查看各个线程的堆栈

ps -mp pid -o THREAD,tid,time  :查看各线程的CPU使用

printf "%x\n" pid   :把十进制线程id转成16进制,去jstack结果中,查看线程堆栈

 

刚开始怀疑GC是诱因,但是其实最后判定,GC是结果,因为改机整体利用率太高,导致频繁的进行GC,最终导致了恶性循环。

因此,到这里基本上可以判定,本机负载太高导致worker无法及时更新心跳文件,导致supervisor判定其timeout,开始重启worker。

 

(4)为什么此机器负载较高?

经过查看,因为本机内存为128G,storm配置中设置了 supervisor.slots.ports的数量为40个,并且真正的运行的worker也为40个。而且,虽然worker启动限制最大内存为2G,但是实际worker占用内存却很多超过了2G。 这是一个疑点,我还没有搞清楚。

另外一点,发现有些机器也设置了最大40个worker,但是其实只启动了20个,因此,这就涉及到了storm分配资源的问题了。对于单个topology来说,storm会尽可能的把其worker分配到单台机器上面,但是并没有考虑到机器的负载。

 

 

总结:对于不容易看出错误的worker重启,基本上是由于机器问题导致的,可以查看机器负载如何。

 

 

 

 

 

 

  • 大小: 26.2 KB
  • 大小: 28.7 KB
  • 大小: 64.9 KB
分享到:
评论

相关推荐

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

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

    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 上手 demo 例子 演示

    7. **监控与管理**:Storm提供了Web UI,用于监控拓扑的运行状态,查看每组件的处理速度,以及故障排查。 在提供的文件名“storm-book-examples-ch02-getting_started-8e42636”中,我们可以推断这是某个关于Storm...

    apache-storm-2.4.0.tar.gz

    Apache Storm 是一个分布式实时计算系统,它被设计用于处理大规模数据流,提供高吞吐量、低延迟的数据处理能力。在大数据领域,Storm 被广泛应用于实时分析、在线机器学习、持续计算、数据集成以及任何需要实时处理...

    Kerberos之后 storm UI

    这意味着,即使在启用Kerberos安全机制的情况下,管理员仍然可以通过JMX接口获取实时的集群性能信息,这对于优化和故障排查至关重要。 在实际应用中,配置storm-jmxetric会涉及到以下步骤: 1. 配置Kerberos环境:...

    storm大数据相关代码

    - **监控和管理**:可能包含用于监控拓扑性能、故障排查的代码或工具。 标签“storm”进一步确认了讨论的重点是Apache Storm框架。在压缩包的文件名列表中,虽然只有一个“storm”没有具体的文件名,但我们可以推测...

    StormDemo.tar.gz

    8. **监控与日志**:掌握如何监控拓扑性能,查看错误日志,以进行问题排查。 通过这个"StormDemo.tar.gz"压缩包,初学者可以一步步地了解并掌握Apache Storm的基本操作和实时处理的核心原理,为后续的进阶学习和...

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

    标题中的"storm开发jar包以及storm例子源码"表明了我们即将探讨的是关于Apache Storm的开发环境设置和示例代码。Apache Storm是一个开源的分布式实时计算系统,它允许开发者处理无限的数据流,常用于大数据实时处理...

    Storm API实现词频统计

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

    storm的jar包

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

    storm安装配置快速上手

    Storm 安装配置快速上手 Storm 是一个分布式实时计算系统,用于处理大量数据流。下面是 Storm 安装配置的快速上手指南。 安装准备 在安装 Storm 之前,需要准备好 Linux 机器和相关环境。这里选择使用 VMware ...

    传智播客Storm项目实战课程 Storm的集群搭建实战 Storm项目学习视频教程

    01-storm简介 02-storm部署-1 03-storm部署-2 04-storm部署概念 05-streamgrouping 06-storm组件生命周期 07-storm可靠性1 08-storm可靠性2

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

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

    apache-storm-1.2.1.tar.gz

    7. **logs**:运行时日志文件的默认位置,用于排查问题和监控系统状态。 在部署和运行Storm时,用户需要配置集群环境,如Zookeeper和Nimbus(主节点),Supervisors(工作节点)以及配置数据源和数据目标。此外,...

    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 ...

    webservice测试工具storm

    Storm提供了详细的测试日志,便于问题排查。同时,测试结果可以导出为报告,供团队成员共享和分析。 8. 集成其他工具: 作为一款强大的测试工具,Storm可能与其他开发工具(如IDEs、版本控制系统)或持续集成...

Global site tag (gtag.js) - Google Analytics