美文网首页
storm实验问题

storm实验问题

作者: 大大大大大大大熊 | 来源:发表于2018-09-12 09:13 被阅读0次

at least once

checkpoint,只能保证恢复到最近一次的状态,但是fail的tuple不能重发,如果不编写spout的ack和fail方法的话。
第一种:redis缓存map,ack删除,fail重发。重发的时候,出现乱序发送。
第二种:封装好的kafkaspout,知道at least once机制,但是速率不知道如何控制

kafkaspout

kafka poll的速率控制,就看到一个maxpoll,设置无用,得研究kafkaspout源码,
每次都是poll一大批,导致状态运算不正确

org.apache.storm.generated.InvalidTopologyException

错误原因:上游的声明和下游的处理不匹配
解决:查看上下游的shuffleGrouping("XXX"),
public void declareOutputFields(OutputFieldsDeclarer declarer) {
declarer.declare(new Fields("sentence"));
}

还有上游如果是按STREAM id输出,那么下游直接shuffleGrouping("XXX"),也会出错,因为不知道是分配哪个ID的流。

多线程的问题

共享的全局变量使用static来保护?
但是这个问题里好像不对:https://stackoverflow.com/questions/40861308/is-it-possible-to-use-global-static-variables-in-storm-bolts-spout-in-actual-clu

测试全局变量和并行度,集群模式的关系

  1. bolt内不加static,3并行度,单机模式
    测试bolt中全局变量i,在execute中执行打印i,然后i++

    结果: image.png
    分析:每个bolt实例维护自己的全局变量i。
  2. bolt内加static,3并行度,单机模式
    测试bolt中全局变量i,在execute中执行打印i,然后i++

    结果: image.png
    分析:每个bolt实例共同维护享受static全局变量i。
    原因:同一个机器在同一个jvm中,只有一个static。
  3. bolt内加static,3并行度,集群模式
    测试bolt中全局变量i,在execute中执行打印i,然后i++

    结果: image.png

分析:每个bolt实例维护自己的全局变量i。
原因:不同一个机器在不同一个jvm中,各自都有static。

  1. WordCountTestTopology加static的public变量,3并行度,本地模式
    测试bolt中使用该WordCountTestTopology.i,在execute中执行打印i,然后i++

    结果: image.png
    分析:每个bolt实例共同维护享受static全局变量i。
    原因:同一个机器在同一个jvm中,只有一个static。
  2. WordCountTestTopology加static的public变量,3并行度,集群模式
    测试bolt中使用该WordCountTestTopology.i,在execute中执行打印i,然后i++

    结果: image.png
    分析:每个bolt实例维护自己的全局变量i。
    原因:不同一个机器在不同一个jvm中,各自都有static。

stackoverflow的解决建议:

Is it possible to use Global Static variables in Storm Bolts/Spout in actual cluster environment

image.png

想法:可以用allgrouping来给每个task传播tuple来更新维护共同的变量,allgrouping, 一般用于全局的数据同步和共享才需要, 比如全局的配置更新等,

知乎:

storm处理流数据如何不断的更新与查询?

报错

2018-11-21 14:13:20.580 o.a.s.m.n.StormClientHandler client-boss-1 [INFO] Connection to centos7-dase-75/10.11.6.75:6700 failed:
java.net.NoRouteToHostException: No route to host

解决:查看对应节点的防火墙状态,sudo firewall-cmd --state,发现正在运行,则关闭直接关闭防火墙 1.systemctl stop firewalld.service #停止firewall 2.systemctl disable firewalld.service #禁止firewall开机启动

Log日记里记录了每条tuple的信息,导致log日记过大

原因:配置了config的debug为true,默认是false,修改为false则不会记录每条tuple消息了。myconf.setDebug(false);

Config.class

spout大量超时failed信息

得考虑输入速率,bolt的并行度,窗口大小导致缓冲很多积累很多tuple,bolt的capacity处理能力,spout pending,ack数量

相关文章

  • storm实验问题

    at least once checkpoint,只能保证恢复到最近一次的状态,但是fail的tuple不能重发,...

  • storm实验想法

    经验 WC:input 2K/S , max 设置3000 Metrics获取 storm 方法一:metrics...

  • storm实验结论

    Spamfilter 节点:anaspout,traspout,tokenizerbolt,wordprobabi...

  • storm问题总结

    在Storm UI上,有大量Failed数据,且往往是一旦开始有Fail数据,则Fail数据越积越多 整体事件端到...

  • storm 问题总结

    问题1: host没同步,机器之间通信有问题 解决办法:同步hosts即可 问题2: zk连接数限制 任务跑了一段...

  • Kafka连接Storm遇到的问题

    问题一 原因: Storm的Server端的lib包中缺少jar包把maven本地库中的 storm-kafka-...

  • 如何在Storm编程实现与Kafka的集成

    问题导读 1.如何编程实现Storm与Kafka集成? 2.Storm中Topology如何实现的? 3.如何验证...

  • Storm入门

    Storm 基本介绍 什么是 Storm 首先Storm是Apache顶级项目之一Storm 官网 Storm 是...

  • java大数据之storm

    一、Storm简介 1.1 Storm是什么 Apache Storm(http://storm.apache.o...

  • storm 学习(二)与 hadoop比较

    一、问题 1.hadoop、Storm各是什么运算?2.Storm为什么被称之为流式计算系统?3.hadoop适合...

网友评论

      本文标题:storm实验问题

      本文链接:https://www.haomeiwen.com/subject/vvjmgftx.html