美文网首页
Storm 概念简介

Storm 概念简介

作者: 浪尖的游鱼 | 来源:发表于2019-09-29 09:46 被阅读0次

    刚刚甩了自己几个大嘴巴子,让自己好好静一静。不多说了,重新整理下Storm的简介。按下自己看啥都难受的心。

    一、Apache Storm

    为何要学Storm

    1. Storm虽然不是流处理里面最好的(Flink已经青出于蓝而胜于蓝了,还有阿里更胜一筹的Blink),但是绝对是入门的关键。
    2. 明晰自己的目的:低延时、无穷数据、持续计算,这是我们应用流处理的原由。列举一个最最简单的例子:屏蔽词。

    支持平台

    原先只支持Unix兼容的操作系统上,0.9.1版本后同时兼容Windows

    技术栈介绍

    Java和Clojure + Python

    而因为JNI的原因,其实Storm的组件(spout和bolt)都可以使用其他任意语言进行开发。

    环境

    Storm开发环境装配详见《原生腾讯云centos7.5 Apache Storm搭建指南
    》(备注:为了降低配置环境时,因为权限、目录等影响,游鱼默认用的是root用户,并且关闭了防火墙。但是有关问题还是会提到的,只要注意一下就好了。另外./指的是zookeeper的根目录)

    二、理念

    基础架构
    • Input data source:数据源
    • Spout:流的源,通过编写Spout以从数据源读取数据
    • Bolt:逻辑处理单元,Spout将数据传到Bolt和Bolt的过程,并产生新的数据流,Bolt可以进行过滤、聚合,并与数据源和数据库进行交互。
    • Tuple:有序元素列表
    • Stream:元组的无序序列

    关键词:拓扑和路由

    三、集群架构

    集群
    • Apache Storm的集群架构采用了主从设备模式。
    • Zookeeper framework:协助Supervisor和nimbus交互
    • Nimbus:Storm集群的主节点,又称Master。而工作节点分发数据并监控故障
    • Supervisor:工作节点又称Workers,负责管理工作进程以完成分配的任务
    • Woker process:工作进程,其执行与特定拓扑相关的任务,其创建执行器,并要求他们完成任务
    • Execute:执行器,由工作进程产生的单个进程,用于特定的spout与bolt
    • Task:任务,实际执行数据处理。他是个spout或bolt

    四、工作流程

    集群工作流程

    五、初步示例

    由此鱼这边启动半年前入门的小Topology回味下简介,内容其实就是常见的词频统计。

    测试——Storm下一个简单的JAVA实现

    #开启Zookeeper 
    > ./bin/zkServer.sh start
    #在主设备上开启nimbus、ui
    > ./bin/storm nimbus &
    > ./bin/storm ui &
    #在其他设备上开启supervisor
    > ./bin/storm supervisor &
    #主设备状态
    > jps
    16290 Jps
    1844 nimbus
    2020 core
    789 QuorumPeerMain
    #其他设备状态
    > jps
    12931 Jps
    3349 Supervisor
    2079 QuorumPeerMain
    #提交Topology
    #不知道为什么,这次鱼在主节点上无法启动Supervisor,以后再细看,推测是因为这次只启用了两个节点,配置上起了冲突
    

    此时工作就开始了!最好的办法是进入Storm UI一探究竟。

    节点架构

    由上至下分别是:

    • Apache Storm总概览
    • 任务分配节点状态
    • 任务状态
    • 任务执行节点状态

    然后再进入任务内部,一探究竟

    任务简介

    由上至下分别是:

    • 任务总概
    • 向任务发出指令
    • 任务一段时间内的状态
    • 流的源
    • 逻辑处理单元

    环境搭建

    安全生产

    对于内部环境来说,做物理隔绝就好,只要将zookeeeper的数据源对外开放就好。当然大致还是说明下安全生产的基本要求:

    1. 为storm创建独有的用户,并且开放用户对配置文件中data文件夹的全权。
    2. 对外开放一下端口(配置文件可以修改,不要照搬):
      • zookeeper:2181,2888,3888
      • storm.supervisor:6700,6701,6702,6703
      • storm.UI:9090
      • storm.nimbus:6627
      • 一些其他常用的网络通讯端口
    3. 因为storm的个个模块是设计成快速启动和结束的,也就是说他不会自我恢复。所以守护进程也是个很重要的手段。

    准备工作

    Zookeeper集群设置(单例)
    Zookeeper集群设置(集群)

    相关文章

      网友评论

          本文标题:Storm 概念简介

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