storm集群搭建

本文介绍了实时计算与离线计算的区别,并重点讲解了Apache Storm的原理与应用。Storm是一个用于实时数据处理的开源框架,能处理无界数据流。文章详细阐述了Storm的拓扑结构(Topology)、Spout和Bolt的概念,以及如何搭建和配置Storm集群。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实时计算
    -----有别于传统的离线批处理操作(对很多数据的集合进行的操作),实时处理,说白就是针对一条一条的数据/记录进行操作,
所有的这些操作进行一个汇总(截止到目前为止的所有的统计总和)
实时计算和离线计算面临的数据的特征:
    Bounded:有界
        离线计算面临的操作数据都是有界限的,无论是1G、1T、1P、1EB、1NB
        数据的有界必然会导致计算的有界
    UnBounded:无界
        实时计算面临的操作数据是源源不断的向水流一样,是没有界限的,
        数据的无界必然导致计算的无界
6大问题:
    3大计算中心
        离线批处理
        准实时流计算中心
        实时流计算
    3大计算引擎
        用户交互式计算引擎:SQL/ES
        图计算引擎
        机器学习计算引擎
=============================================================================================
Storm(Apache的开源顶级项目 Tiwtter开源的(cloujre),阿里山寨的Storm(ODPS ECS OSS KVStore--Hadoop)——JStorm)
Flink
SparkStreaming
IBM的。。。
MircoSoftware
    Apache Storm是Twitter开源的一个类似于Hadoop的实时数据处理框架,它原来是由BackType开发,后BackType被Twitter收购,将Storm作为Twitter的实时数据分析系统。
    Storm能实现高频数据和大规模数据的实时处理。
    官网资料显示storm的一个节点1秒钟能够处理100万个100字节的消息(IntelE5645@2.4Ghz的CPU,24GB的内存)。
Storm和Hadoop的计算:
    数据来源
       HADOOP处理的是HDFS上TB级别的数据(历史数据),STORM是处理的是实时新增的某一笔数据(实时数据);
    处理过程
       HADOOP是分MAP阶段到REDUCE阶段,STORM是由用户定义处理流程,流程中可以包含多个步骤,每个步骤可以是数据源(SPOUT)或处理逻辑(BOLT);
    是否结束
       HADOOP最后是要结束的,STORM是没有结束状态,到最后一步时,就停在那,直到有新数据进入时再从头开始;
    处理速度
      HADOOP是以处理HDFS上TB级别数据为目的,处理速度慢,STORM是只要处理新增的某一笔数据即可,可以做到很快;
    适用场景
      HADOOP是在要处理批量数据时用的,不讲究时效性,STORM是要处理某一新增数据时用的,要讲时效性。
=============================================================================================
Storm设计的顶级的抽象概念:Topology
    Storm是对流Stream的抽象,流是一个不间断的无界的连续tuple,注意Storm在建模事件流时,把流中的事件抽象为tuple即元组。
    Storm将流中元素抽象为Tuple,一个tuple就是一个值列表——value list,list中的每个value都有一个name,并且该value可以是基本类型,字符类型,字节数组等,当然也可以是其他可序列化的类型。
    Storm认为每个stream都有一个stream源,也就是原始元组的源头,所以它将这个源头称为Spout。
    
    有了源头即spout也就是有了stream,那么该如何处理stream内的tuple呢。将流的状态转换称为Bolt,bolt可以消费任意数量的输入流,只要将流方向导向该bolt,同时它也可以发送新的流给其他bolt使用,这样一来,只要打开特定的spout(管口)再将spout中流出的tuple导向特定的bolt,又bolt对导入的流做处理后再导向其他bolt或者目的地。
    以上处理过程统称为Topology即拓扑。拓扑是storm中最高层次的一个抽象概念,它可以被提交到storm集群执行,一个拓扑就是一个流转换图,图中每个节点是一个spout或者bolt,图中的边表示bolt订阅了哪些流,当spout或者bolt发送元组到流时,它就发送元组到每个订阅了该流的bolt(这就意味着不需要我们手工拉管道,只要预先订阅,spout就会将流发到适当bolt上)。
    拓扑的每个节点都要说明它所发射出的元组的字段的name,其他节点只需要订阅该name就可以接收处理。
    
Storm需要掌握的几个名词:
    Topology用于封装一个实时计算应用程序的逻辑,类似于Hadoop的MapReduce Job
    Stream 消息流,是一个没有边界的tuple序列,这些tuples会被以一种分布式的方式并行地创建和处理
    Spouts 消息源,是消息生产者,他会从一个外部源读取数据并向topology里面面发出消息:tuple
    Bolts 消息处理者,所有的消息处理逻辑被封装在bolts里面,处理输入的数据流并产生新的输出数据流,可执行过滤,聚合,查询数据库等操作
    Task 每一个Spout和Bolt会被当作很多task在整个集群里面执行,每一个task对应到一个线程.
    Stream groupings 消息分发策略,定义一个Topology的其中一步是定义每个tuple接受什么样的流作为输入,stream grouping就是用来定义一个stream应该如何分配给Bolts们.
=============================================================================================
Storm的安装
    下载地址:https://storm.apache.org/downloads.html
    安装并zookeeper集群(要保证集群各个节点的时间保持一致)
      uplooking01
      uplooking02
      uplooking03
    解压重命名apache-storm-1.0.2.tar.gz
      [uplooking@uplooking01 ~]$ tar -zxvf soft/apache-storm-1.0.2.tar.gz -C app/
      [uplooking@uplooking01 ~]$ mv app/apache-storm-1.0.2/ app/storm
    修改文件conf/storm-env.sh
      export JAVA_HOME=/opt/jdk
      export STORM_CONF_DIR="/home/uplooking/app/storm/conf"
    修改文件conf/storm.yaml
        storm.zookeeper.servers:
            - "uplooking01"
            - "uplooking02"
            - "uplooking03"
        ##配置集群中的nimbus的候选主机的主机名,主要避免单点问题
        nimbus.seeds: ["uplooking01", "uplooking02"]
        
        ##配置storm在运行过程中supervisor从nimbus下载的各个topology对应的jar,配置型等等,做临时存储
        storm.local.dir: "/home/uplooking/app/storm/tmp"
        
        ##一台supervisor机器上面能够最多运行几个worker进程
        supervisor.slots.ports: 
            - 6700
            - 6701
            - 6702
            - 6703
    配置完成之后向其他机器分发
        [uplooking@uplooking01 storm]$ scp -r ../storm uplooking@uplooking02:/home/uplooking/app/
        [uplooking@uplooking01 storm]$ scp -r ../storm uplooking@uplooking03:/home/uplooking/app/
    启动:
        uplooking01:
            [uplooking@uplooking01 storm]$ nohup bin/storm nimbus >/dev/null 2>&1 &
            [uplooking@uplooking01 storm]$ nohup bin/storm ui >/dev/null 2>&1 &
        uplooking02:
            [uplooking@uplooking01 storm]$ nohup bin/storm nimbus >/dev/null 2>&1 &
            [uplooking@uplooking03 storm]$ nohup bin/storm supervisor >/dev/null 2>&1 &
            [uplooking@uplooking03 storm]$ nohup bin/storm logviewer >/dev/null 2>&1 &
        uplooking03:
            [uplooking@uplooking03 storm]$ nohup bin/storm supervisor >/dev/null 2>&1 &
            [uplooking@uplooking03 storm]$ nohup bin/storm logviewer >/dev/null 2>&1 &
    验证:
        在浏览器中数据:
            访问启动ui--->nohup /home/uplooking/app/storm/bin/storm ui > /dev/null 2>&1 &这台机器
            http://uplooking01:8080

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值