strom学习第一天(nimbus启动失败)

阅读 book :Storm 实时数据处理

商品名称: Storm 实时数据处理 计算机与互联网 书籍
作者: Quinton Anderson
例子1 https://bitbucket.org/qanderson/click-topology.git

1概念worker,executor 和task

worker -> 进程。
executor -> 线程。
task -> storm进行任务分配的基本单位。
一个worker只能执行同一个spout/bolt的task,
一个worker里面可以有多executor。
一个executor执行可以执行多个task。

![Uploading 图片_821841.png . . .]

strom学习第一天(nimbus启动失败)_第1张图片
relationships-worker-processes-executors-tasks.png

2 Fields values Tuple关系

outputFieldsDeclarer.declare(new Fields(storm.cookbook.Fields.IP,
                storm.cookbook.Fields.URL,
                storm.cookbook.Fields.CLIENT_KEY));

values 类型是list

strom学习第一天(nimbus启动失败)_第2张图片
图片.png

Tuple

一个Tuple代表数据流中的一个基本的处理单元,例如一条cookie日志,它可以包含多个Field,每个Field表示一个属性。



Tuple本来应该是一个Key-Value的Map,由于各个组件间传递的tuple的字段名称已经事先定义好了,所以Tuple只需要按序填入各个Value,所以就是一个Value List。
一个没有边界的、源源不断的、连续的Tuple序列就组成了Stream。

Fields +values =Tuple

对bolt进行单元测试

【Mock】

mock测试就是在测试过程中,
对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。
http://www.jmock.org/cookbook.html
一般java中@表示注解,解释一个方法,类,属性的作用

第二章:日志流处理

strom学习第一天(nimbus启动失败)_第3张图片
图片.png

Drools是一个业务逻辑集成平台(BLip)。它是用Java编写。它是由JBoss和红帽公司扩展支持,并实现Rete模式匹配算法的一个开源项目。

通俗地说,Drools是一种工具,使我们能够分离内部业务流程,找到逻辑和数据的集合。我们需要注意的两个重要关键词是逻辑和数据。

Drools的被分成两个主要部分:编写和运行系统。

制作: 制作过程涉及创建规则文件(.DRL文件)。
运行时: 它涉及到创建工作存储器和处理活化。

Drools规则引擎
http://blog.csdn.net/lfsf802/article/details/42297553

strom学习第一天(nimbus启动失败)_第4张图片
图片.png

QA1 storm supervisor 启动后马上退出

2017-08-17 18:12:20.627 o.a.s.l.Localizer main [INFO] Reconstruct localized resource: /usr/local/storm1.1/workplace/supervisor/usercache
2017-08-17 18:12:20.629 o.a.s.l.Localizer main [WARN] No left over resources found for any user during reconstructing of local resources at: /usr/local/storm1.1/workplace/supervisor/usercache

2017-06-19 15:14:00.339 o.a.s.l.Localizer main [INFO] Reconstruct localized resource: /usr/local/storm/workplace/supervisor/usercache
2017-06-19 15:14:00.341 o.a.s.l.Localizer main [WARN] No left over resources found for any user during reconstructing of local resources at: /usr/local/storm/workplace/supervisor/usercache
排除 不是空间不足
原因是

dns映射 hostname 被修改xxx了 不识别 造成storm supervisor 启动后马上退出
[root@docker_xxxx logs]#hostname
docker_wcy
cat /etc/hosts
10.10.112.71 docker_wcy

Q2 strom nimbus自动退出
storm ui 运行一天之后自动退出

现象描述:nimbus ui 运行一天之后自动退出了

日志:
2017-06-19 11:09:08.466 o.a.s.d.nimbus main [INFO] Starting nimbus server for storm version '1.1.0'
2017-06-19 11:59:09.243 o.a.s.d.nimbus timer [INFO] Cleaning inbox ... deleted: stormjar-5eb90b38-4841-46a5-91c4-4e7d83344d67.jar 没问题

lsof -i:8081 --确实退出了

Q3:
工作进程 supervisor 主机在远程上
一发布jar 远程主机进程马上挂掉
但是ui显示正常运行
在ui界面kill 结果重启的supervisor 自动退出了
A3:
host 局域网内域名和IP都进行映射配置
10.69.112.xxx docker_69.112.89_111
10.69.112.xxx docker_69.112.107_222

strom学习第一天(nimbus启动失败)_第5张图片
图片.png

Q4
问题描述:kill flume_test 不起作用

$ ps -ef |grep 132027
507      132027 132026  0 10:58 pts/0    00:00:00 [java] 
kill -9 132027 

分析:

  • 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。

  • 僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。

危害 僵尸进程

如果进程不调用wait / waitpid的话, 那么保留的那段信息就不会释放,其进程号就会一直被占用,但是系统所能使用的进程号是有限的,如果大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程. 此即为僵尸进程的危害,应当避免。

孤儿进程并不会有什么危害

解决办法
kill 进程的父进程

Q5 running-multi-node-storm-cluster

类似问题:
http://blog.csdn.net/dianyueneo/article/details/31388797
【supervisord】
http://www.cnblogs.com/jasonkoo/articles/3750638.html
A5:
http://www.michael-noll.com/tutorials/running-multi-node-storm-cluster/

1 添加监控
vi /etc/supervisord.conf
[program:storm-supervisor]
command=storm supervisor
user=root
autostart=true
autorestart=true
startsecs=10
startretries=999
log_stdout=true
log_stderr=true
logfile=/storm/logs/supervisor.out
logfile_maxbytes=20MB
logfile_backups=10

2 启动
supervisorctl
supervisor> restart storm-supervisor

最后还是没启动起来 显示starting

Storm集群提交任务

storm jar ./strom-test.jar gome.storm.topology.SrsLogTopology test&

依赖动态库路径:

/usr/local/storm1.1/lib

你可能感兴趣的:(strom学习第一天(nimbus启动失败))