【大数据实时计算框架】Storm框架

一、大数据实时计算框架

1、什么是实时计算?流式计算?

(一)什么是Storm?
Storm为分布式实时计算提供了一组通用原语,可被用于“流处理”之中,实时处理消息并更新数据库。这是管理队列及工作者集群的另一种方式。 Storm也可被用于“连续计算”(continuous computation),对数据流做连续查询,在计算时就将结果以流的形式输出给用户。它还可被用于“分布式RPC”,以并行的方式运行昂贵的运算。 Storm可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm用于实时处理,就好比 Hadoop 用于批处理。Storm保证每个消息都会得到处理,而且它很快——在一个小集群中,每秒可以处理数以百万计的消息。更棒的是你可以使用任意编程语言来做开发。

举例:自来水厂处理自来水

2、对比:离线计算和流式计算

① 离线计算

  离线计算:批量获取数据、批量传输数据、周期性批量计算数据、数据展示

  代表技术:Sqoop批量导入数据、HDFS批量存储数据、MapReduce批量计算、Hive

② 流式计算

  流式计算:数据实时产生、数据实时传输、数据实时计算、实时展示

  代表技术:Flume实时获取数据、Kafka/metaq实时数据存储、Storm/JStorm实时数据计算、Redis实时结果缓存、持久化存储(mysql)。

 一句话总结:将源源不断产生的数据实时收集并实时计算,尽可能快的得到计算结果

① StormHadoop的区别

Storm用于实时计算

Hadoop用于离线计算

Storm处理的数据保存在内存中,源源不断

Hadoop处理的数据保存在文件系统中,一批一批

Storm的数据通过网络传输进来

Hadoop的数据保存在磁盘中

Storm与Hadoop的编程模型相似

 

 

 

 

 

 

 

(*)离线计算:MapReduce和Spark Core, 数据的批量处理(Sqoop-->HDFS-->MR(SparkCore)--->HDFS)
(*)流式计算:Storm和Spark Streaming, 数据的实时性 (Flume-->Kafka-->Storm(SparkStreaming)-->Redis )

3、常见的实时计算系统

Apache Storm http://storm.apache.org/  
Spark Streaming http://spark.apache.org/streaming/  
阿里巴巴JStorm http://www.jstorm.io/ Alibaba JStorm is an enterprise fast and stable streaming process engine.
Apache Flink http://flink.apache.org/ 第三代大数据处理引擎,既可以进行离线计算,也可以进行流式计算

 

 

 

 

二、Apache Storm体系结构

 

 

  • Nimbus:负责资源分配和任务调度。
  • Supervisor:负责接受nimbus分配的任务,启动和停止属于自己管理的worker进程。通过配置文件设置当前supervisor上启动多少个worker。
  • Worker:运行具体处理组件逻辑的进程。Worker运行的任务类型只有两种,一种是Spout任务,一种是Bolt任务。
  • Executor:Storm 0.8之后,Executor为Worker进程中的具体的物理线程,同一个Spout/Bolt的Task可能会共享一个物理线程,一个Executor中只能运行隶属于同一个Spout/Bolt的Task。
  • Task:worker中每一个spout/bolt的线程称为一个task. 在storm0.8之后,task不再与物理线程对应,不同spout/bolt的task可能会共享一个物理线程,该线程称为executor。

 

 

Storm也是主从结构,存在单点故障问题  ----> 实现HA(借助ZooKeeper)

Storm的运行机制

  • 整个处理流程的组织协调不用用户去关心,用户只需要去定义每一个步骤中的具体业务处理逻辑
  • 具体执行任务的角色是Worker,Worker执行任务时具体的行为则有我们定义的业务逻辑决定

 

三、安装和配置Apache Storm_伪分布模式

  • 1-bigdata111安装Strom并设置环境变量

  [前提]:安装ZooKeeper并且启动zkServer.sh start

  1. 下载storm包并传到~/tools目录:

    apache-storm-1.0.3.tar.gz

  2. 进入~/tools目录,解压安装: #tar -zxvf apache-storm-1.0.3.tar.gz -C ~/training/
  3. 设置storm环境变量:#vi ~/.bash_profile

添加如下信息:

## ZK 3.4.10 ##确保ZK已经安装
ZOOKEEPER_HOME=/root/training/zookeeper-3.4.10
export ZOOKEEPER_HOME

PATH=$ZOOKEEPER_HOME/bin:$PATH
export PATH

## Storm ###
STORM_HOME=/root/training/apache-storm-1.0.3
export STORM_HOME

PATH=$STORM_HOME/bin:$PATH
export PATH

    4.环境变量生效:#source ~/.bash_profile

  • 2-配置Storm的伪分布模式_1台机器

  bigdata111编辑配置文件:vim /root/training/apache-storm-1.0.3/conf/storm.yaml  [注意:_ 和:配置信息和后面的信息中间有一个空格,如果没有配置会出错,切记]

  storm.zookeeper.servers:
    -  "bigdata111"

  nimbus.seeds:  ["bigdata111"]

  storm.local.dir: "/root/training/apache-storm-1.0.3/tmp"

  supervisor.slots.ports:
    -  6700
    -  6701
    -  6702
    -  6703

  

  • 3.启动主从节点和UI

  在bigdata111上启动命令:

启动主节点#storm nimbus &
启动从节点#storm supervisor &
启动UI#storm ui &
WED访问地址http://ip:8080

 

 

 

 

WEB信息如下:可以看到只有1个主节点(nimbus),1个从节点(supervisor),4个worker(slots)

 

四、安装和配置Apache Storm_全分布模式(3台机器)

简单的全分布模式至少需要3台机器,1主2从。这里使用bigdata112,bigdata113,bigdata114作为【主从从】环境。

  1.前提:3台机器zookeeper集群环境配置完毕并启动【参考文章:zookeeper配置部分】

下面是实际环境:leader:bigdata114,follower:bigdata112,bigdata113.

  2.在bigdata112,bigdata113,bigdata114全部机器上面安装storm并配置环境变量。

  • 下载storm包并传到~/tools目录:

    apache-storm-1.0.3.tar.gz

  • 进入~/tools目录,解压安装: #tar -zxvf apache-storm-1.0.3.tar.gz -C ~/training/
  • 设置storm环境变量:#vi ~/.bash_profile

添加如下信息:

## Storm ###
STORM_HOME=/root/training/apache-storm-1.0.3
export STORM_HOME

PATH=$STORM_HOME/bin:$PATH
export PATH

  • 环境变量生效:#source ~/.bash_profile

  3.bigdata112主节点配置并复制到从节点bigdata113,bigdata114

  • 编辑bigdata112的storm配置文件:vim /root/training/apache-storm-1.0.3/conf/storm.yaml  [注意:_ 和:配置信息和后面的信息中间有一个空格,如果没有配置会出错,切记]

storm.zookeeper.servers:
  - "bigdata112"
  - "bigdata113"
  - "bigdata114"

nimbus.seeds: ["bigdata112"]
storm.local.dir: "/root/training/apache-storm-1.0.3/tmp"
supervisor.slots.ports:
  - 6700
  - 6701
  - 6702
  - 6703

  • 将配置好的storm复制到其他节点

#scp -r apache-storm-1.0.3/ root@bigdata113:/root/training/
#scp -r apache-storm-1.0.3/ root@bigdata114:/root/training/

  • 启动主从节点
bigdata112主节点开启

#storm nimbus &

#storm ui & 

bigdata113从节点开启#storm supervisor &
bigdata114从节点开启#storm supervisor &

 

 

 

 

 

五、安装和配置Apache Storm_HA

HA的环境基于上面的集群配置,将bigdata113作为bigdata112的备份主节点。因此HA的实际环境信息:

主节点bigdata112
主节点_备份bigdata113
从节点1bigdata113
从节点2bigdata114

 

 

 

 

  0.关闭集群环境进程

   HA环境是基于集群环境的配置,在配置HA之前,将集群环境的进程全部关闭。查看主从节点的进程,关闭如下进程:

    主节点关闭:nimbus

    从节点关闭:supervisor

  1.编辑bigdata112主节点的配置文件:vim /root/training/apache-storm-1.0.3/conf/storm.yaml 

增加一个主节点:nimbus.seeds: ["bigdata112", "bigdata113"]

启用Event Logger 可以查看处理的数据:"topology.eventlogger.executors": 1

  2.复制主节点配置到从节点bigdata113,bigdata114

  将配置好的storm复制到其他节点

  #scp -r apache-storm-1.0.3/ root@bigdata113:/root/training/
  #scp -r apache-storm-1.0.3/ root@bigdata114:/root/training/

  启动主从节点

bigdata112主节点开启

#storm nimbus &

#storm ui & 

#storm logviewer &

bigdata113主节点开启

#storm nimbus &

#storm ui & 

#storm logviewer &

bigdata113从节点开启

#storm supervisor &

bigdata114从节点开启

#storm supervisor &

#storm logviewer &

 

 

 

 

 

 

 

 

 

 

 

启动后主从节点的进程信息如下:

bigdata112_4进程:nimbus,core,QuorumPeerMain(zookeeper进程),logviewer

bigdata113_5进程:nimbus,supervisor,core,QuorumPeerMain(zookeeper进程),logviewer

bigdata114_3进程:supervisor,QuorumPeerMain(zookeeper进程),logviewer

  3.查看主节点的WEB

主节点bigdata112 WEB: http://bigdata112:8080

主节点bigdata113 WEB: http://bigdata113:8080

 

 

   4.演示HA功能:关闭bigdata112主节点的nimbus进程,查看bigdata113是否成为主节点:

》查看bigdata112 WEB此时显示2个主节点,一个是leader,一个是not a leader。

 

》查看bigdata112的进程并关闭nimbus进程:

 

》再次查看WEB页面:此时bigdata切换成主节点

》再次启动bigdata112的nimbus进程,查看WEB:bigdata113任然为leader,bigdata112此时not a leader。

 

六、Apache Storm_HA Demo演示Wordcount计数器

  1.bigdata112主节点storm自带例子查看

Storm自带了很多的例子可供我们进行实时计算演示,Example位置:/root/training/apache-storm-1.0.3/examples/storm-starter/storm-starter-topologies-1.0.3.jar。

bigdata112:

查看例子中的readme介绍用法:cat README.markdown

  2.运行jar

运行:storm jar ***.jar 任务Topology的类 别名
#storm jar storm-starter-topologies-1.0.3.jar org.apache.storm.starter.WordCountTopology MyWCTopology

 

  3.WEB查看topology任务

任务在没有人为打断的情况下会一直运行,此时查看主节点的WEB,显示的任务信息:参考storm的体系架构:worker=slots,一个worker可以包含多个executors,executors是单线程的,所以executors=tasks.

  4.查看topology任务的组成

》点击主节点页面的topology任务名称,进入任务的详细页面:

 

》topology任务详细页面:

  

  5.查看spout和bolts任务的内容

》在topology任务详情页,开启Debug功能,然后查看spout和bolts任务的详情

 

》开启debug模式并设置采样率之后,查看具体的spout和bolts任务采样详情页:

 

点击采样的任务为spout,页面跳转到新页面,点击events按钮:

 

 

》关闭topology任务

 

七、查看zookeeper中保存的HA任务信息

使用zookeeper查看器,连接bigdata112,查看保存的storm的HA任务信息(HA任务信息比较多):

 

八、Storm内部通信的机制:有Work中的Executor来执行

 

转载于:https://www.cnblogs.com/forfreewill/articles/9088503.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值