• 20 Storm的理解


    一、Storm概念

    1、Storm流式处理:

                                Storm vs. mapreduce

                                Storm:面向实时

                                                   缺点:吞吐能力差

                                                   优点:时效性好,毫秒级别,增量式处理

                                Mapreduce:面向批量

                                                   缺点:时效性差

                                                   优点:吞吐能力强,适合批处理

     

    2、Storm:没有持久化功能——》快

                                可靠性:保证消息处理

                                本地模式

                                原语:spout和bolt

                               

    3、Storm基本概念:

           

     

     

                                1)Stream:数据流

                                2)Tuple:最基本的数据单元

                                3)Topology:网络拓扑

                                                            Grouping:Shuffle/Fields

                                4)Spout:消息生产者

                                                            可以对接很多类型的数据流

                                                            收集消息处理的ack、fail

                                5)Bolt:消息处理逻辑

                                                            过滤、访问外部服务、数据格式化、聚合、汇总。。。

                                                            可以发送多条流

            

     

    4、常见模式:

                       (1)流式

                       (2)持续计算——机器学习迭代

                       (3)分布式RPC——独立服务

             

     

    5、架构:

            

     

                                主:Nimbus:分配工作

                                                            如果挂掉:重启之后,像什么事情没有发生一样——无状态(快速失败fail-fast)

                                                                    意味着你可以用kill -9来杀死Nimbus和Supervisor进程, 然后再重启它们,就好像什么都没有发生过。这个设计使得Storm异常的稳定。

     

                                从:Supervisor:监控工作

                                                                     快速失败fail-fast,监控Worker工作

                                                                     Worker:工作进程

                                                                     Task:线程

                                                                                          spout和bolt的线程都是task

                                                                                          executor进程,里面维护很多task,每次只会执行一个task

                                Zookeeper协调管理

           

     

        

     

        

        

                

     

        

     

     

    6、容错:

                       架构容错

                          

                       数据容错:

                                                   (1)timeout

                                                   (2)ack机制:本质是一个特殊的task

     

    二、Storm环境安装

    1. Storm源码包下载

    http://mirror.bit.edu.cn/apache/storm/

    2. 下载安装包

    #Master
    wget http://mirror.bit.edu.cn/apache/storm/apache-storm-0.9.3/apache-storm-0.9.3.tar.gz
    tar zxvf apache-storm-0.9.3.tar.gz

    3. 修改Storm配置文件

    #Master
    cd apache-storm-0.9.3/conf
    vim storm.yaml

    内容:

    storm.zookeeper.servers:
        - "master"
        - "slave1"
        - "slave2"
    
    nimbus.host: "master"
    supervisor.slots.ports:
        - 6700
        - 6701
        - 6702
        - 6703
        - 6704
        - 6705

    4. 配置环境变量

    #Master、Slave1、Slave2
    vim ~/.bashrc

    STORM_HOME=/usr/local/src/apache-storm-0.9.3
    export PATH=$PATH:$STORM_HOME/bin
    刷新环境变量source ~/.bashrc

    5. 拷贝安装包

    scp -r /usr/local/src/apache-storm-0.9.3 root@slave1:/usr/local/src/apache-storm-0.9.3
    scp -r /usr/local/src/apache-storm-0.9.3 root@slave2:/usr/local/src/apache-storm-0.9.3

    6. 启动集群

    #master
    vim /usr/local/src/apache-storm-0.9.3/bin/start-storm-master.sh

    python /usr/local/src/apache-storm-0.9.3/bin/storm nimbus &
    python /usr/local/src/apache-storm-0.9.3/bin/storm ui &
    python /usr/local/src/apache-storm-0.9.3/bin/storm logviewer &

    chmod +x /usr/local/src/apache-storm-0.9.3/bin/start-storm-master.sh
    start-storm-master.sh

    #Slave1、Slave2
    vim /usr/local/src/apache-storm-0.9.3/bin/start-storm-slave.sh

    python /usr/local/src/apache-storm-0.9.3/bin/storm supervisor &
    python /usr/local/src/apache-storm-0.9.3/bin/storm logviewer &

    chmod +x /usr/local/src/apache-storm-0.9.3/bin/start-storm-slave.sh
    start-storm-slave.sh

    7. 集群状态

    • Master

    • Slave1

    • Slave2

    8. 监控页面

    9. 关闭集群

    #master、Slave1、Slave2
    vim /usr/local/src/apache-storm-0.9.3/bin/stop-storm.sh

    kill `ps aux| grep storm | grep -v 'grep' | awk '{print $2}'`

    chmod +x /usr/local/src/apache-storm-0.9.3/bin/stop-storm.sh
    stop-storm.sh
  • 相关阅读:
    SpinLock 实现
    支持正则或通配符的hashmap
    HTTP报文
    Protostuff序列化
    【转】轻量级分布式 RPC 框架
    Servlet 3特性:异步Servlet
    Web服务器的工作原理
    《恰如其分的软件架构:风险驱动的设计方法》——读书笔记
    Java socket中关闭IO流后,发生什么事?(以关闭输出流为例)
    Java Socket常见异常处理 和 网络编程需要注意的问题
  • 原文地址:https://www.cnblogs.com/chen8023miss/p/11205211.html
Copyright © 2020-2023  润新知