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
原文地址:https://www.cnblogs.com/chen8023miss/p/11205211.html