[Storm] No data flows into bolt
最近在HDP2.1的HBase环境中安装了一个Storm测试机器(单节点,JDK8),遇到了几个问题,记录下来。
尝试步骤
1. 使用和HBase一样HDP版本,直接安装Storm
yum install storm
顺利安装完了。nimbus, supervisor and ui都能顺利起来。一个小插曲是,中途需要修改UI使用的端口,默认的8080被占用。所幸只需要添加配置 ui.port 就解决了。
然后提交topology后,怎么都跑不起来。查看version,蒙逼了,Storm的版本是0.9.1。而我需要的至少0.9.3
教训一:做之前,需要弄清楚做完后是否满足自己的需求。绕了一大圈,才发现安装的版本不对。
2. 重新安装Storm 0.9.3
由于目前机器上只有HDP2.1的配置,可查看 /etc/yum.repo.d/,后来找了一个HDP2.2的repo配置,放在了 /etc/yum.repo.d/下面,所幸什么都不需要重启,yum install直接就发现这个repo 了。就这样storm安装完成了。不可漏掉的是,使用HDP安装Storm前,需要手动先 adduser storm。因为Storm安装不会帮我们安装(坑,明明其他的都不需要特意创建用户)
3. 配置Storm运行参数
1)首先需要配置Storm JDK8环境。配置 conf/storm-env.sh + storm用户下的 ~/.bash_profile
2) 配置 conf/storm.yaml。这个就不用多说了
4. Storm跑起来
nohup storm nimbus/supervisor/ui &
一切似乎很顺利。然后接下来发生了事情,坑了我整整一天的时间。
提交完Topology,check log 发现Spout emitting数据似乎没有进到下一个Bolt。NO DATA flows into Bolt,而且UI上bolt的input stats是empty,即Bolt连input stream都没有detect到!从代码上看这是不可能发生的事。
5. 接下来开始了漫漫的DEBUG之路...
TRY1: 想到之前自己改过 ui.port。当时发现有个配置storm.exhibitor.port和ui.port都使用8080,开始怀疑是不是修改ui.port,是不是应该修改一下也storm.exhibitor.port。修改并重启storm所有服务。然并卵。
storm.exhibitor.port:the port Storm will use to connect to each of the exhibitor servers. Apache Exhibitor is a supervisor system for ZooKeeper.
ui.port与storm.exhibitor.port是否有直接关系,不得而知了。但是至少它不是问题的根本原因
TRY2: 修改topology的并发度,即修改bolt的tasks个数。然并卵。
TRY3: Enable Storm debug模式。因为checkout log,看到很多异常log,比如 Spout Failing,Timeout之类的。但是就是基本看不到任何Exception,ERROR。
所以想到大概是我没有把DEBUG模式打开吧。回去看代码发现
stormConf.put(stormConf.TOPOLOGY_DEBUG, true);
赫然在目。恩,肯定是开的还不够,check网上的说明,看见了
// When set to true, Storm will log every message that's emitted.
stormConf.put(stormConf.TOPOLOGY_DEBUG, true);
// same to above
stormConf.setDebug(true);
人家还加了 stormConf.setDebug(true)。病急乱投医,修改后还是没什么用。现在想来那是当然的,我也是脑子被驴踢了,set storm debug直接的效果导致log泛滥, every message级别的;而且 setDebug(true)也不是啥特别的,只不过是上面set debug的另一种写法。
TRY4: Disable spout/bolt 吐message这种log,太烦了。Disable Topology Debug功能。Topology LOG顿时清楚了,Exception无比清晰、醒目的出现在log中。
asm.4.0啥的没有加载到。想到听人说过Storm0.9.3不支持JDK8,问题就处在asm的版本上。最后把 asm 4.0换成 asm-all 5.0,重启storm集群(不重启,虽然storm classpath里面就能检测到变化,然后那只是假象)。OVER。
总结
Storm topology debug害人不浅。
数据不能从Spout流向Bolt,原来是asm出问题了。
[Storm] No data flows into bolt的更多相关文章
- Storm的数据处理编程单元:Bolt 学习整理
Bolt是Topology中的数据处理的单元,也是Storm针对处理过程的编程单元.Topology中所有的处理都是在这些Bolt中完成的,编程人员可以实现自定义的处理过程,例如,过滤.函数.聚集.连 ...
- 关于storm的Spout、Bolt、及其可靠性
本文导读: Component全家谱结构图 Spout分析 ——类图 ——分析(接口实现).结论 ——可靠的与不可靠的消息(推荐) Bolt分析 ——类图 ——分析(接口实现).结论 ——可靠的与不 ...
- Storm bolt重复消费问题解决
最近碰到一个storm的坑, 两个bolt都需要从kafkaSpout中获取数据进行各自的业务处理, bolt1的处理是幂等的, bolt2的处理是非幂等的, 上线后发现非幂等的bolt处理总是会处理 ...
- Big Data Ingestion and streaming product introduction
Flume Flume isdistributed system for collecting log data from many sources, aggregating it,and writi ...
- Storm源码分析--Nimbus-data
nimbus-datastorm-core/backtype/storm/nimbus.clj (defn nimbus-data [conf inimbus] (let [forced-schedu ...
- Storm基础
Storm基本概念 Storm是一个开源的实时计算系统,它提供了一系列的基本元素用于进行计算:Topology.Stream.Spout.Bolt等等. 在Storm中,一个实时应用的计算任务被打包作 ...
- Storm(2) - Log Stream Processing
Introduction This chapter will present an implementation recipe for an enterprise log storage and a ...
- Storm入门(十)Twitter Storm: Transactional Topolgoy简介
作者: xumingming | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://xumingming.sinaapp.com/736/twitter-stor ...
- Mysql增量写入Hdfs(二) --Storm+hdfs的流式处理
一. 概述 上一篇我们介绍了如何将数据从mysql抛到kafka,这次我们就专注于利用storm将数据写入到hdfs的过程,由于storm写入hdfs的可定制东西有些多,我们先不从kafka读取,而先 ...
随机推荐
- Keepalived+LVS+nginx双机热备
Keepalived简介 什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了, 也就是所谓的高可用或热备,用来防止单点故障的发生. Keepalived采 ...
- mongodb高级应用
一. 高级查询 查询操作符 条件操作符:db.collection.find({"field":{$gt/$lt/$gte/$lte/$eq/$ne:value}}); 匹配所有 ...
- SVN“验证位置时发生错误”的解决办法
验证位置时发生错误:“org.tigris.subversion.javahl.ClientException...... 验证位置时发生错误:“org.tigris.subversion.javah ...
- RabbitMQ调试与测试工具-v1.0.1 -提供下载测试与使用
最近几天在看RabbitMQ,所以发了两天时间写了一个调试和测试工具.方便使用. 下载地址:RabbitMQTool-V1.0.1.zip
- 不透明度opacity进阶
一.opacity属性 1.opacity 习惯上说“透明度”,其实应该叫“不透明度”.opacity 意思:不透明,而背景色的默认值:transparent意思才是“透明的”.所以opacity用来 ...
- 项目游戏开发日记 No.0x000006(Finish)
项目开发的最后一周! 突然一下就把游戏收尾了, 就像一个嘎然而止的乐章, 留下的, 是无尽的回味. 余音绕梁的夜晚, 也还想着, 拼命码代码的日子, 和还留在嘴里回味的烈酒的浓香. ————————— ...
- CentOS 7搭建SVN服务器
安装步骤如下: 1.yum install subversion 2.查看安装版本 svnserve --version 3.创建SVN版本库目录 mkdir -p /var/svn/svnrepos ...
- [LeetCode] K-th Smallest in Lexicographical Order 字典顺序的第K小数字
Given integers n and k, find the lexicographically k-th smallest integer in the range from 1 to n. N ...
- [LeetCode] Wildcard Matching 外卡匹配
Implement wildcard pattern matching with support for '?' and '*'. '?' Matches any single character. ...
- bootstrap-监听滚动实现头部跟随滚动
实现案例 <body data-spy="scroll" data-target="#bs-example-navbar-collapse-1"> ...