美文网首页程序员
strom学习第一天(nimbus启动失败)

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

作者: 小王同学加油 | 来源:发表于2017-06-21 13:43 被阅读454次

    阅读 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 . . .]

    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

    图片.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中@表示注解,解释一个方法,类,属性的作用

    第二章:日志流处理

    图片.png

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

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

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

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

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

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

    图片.png

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

    $ ps -ef |grep 132027
    507      132027 132026  0 10:58 pts/0    00:00:00 [java] <defunct>
    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启动失败)

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