Storm-知识点汇总

来源:互联网 发布:python reversed函数 编辑:程序博客网 时间:2024/06/05 02:42
Storm是一个免费开源、分布式、高容错的实时计算系统。Storm令持续不断的流计算变得容易,弥补了Hadoop批处理所不能满足的实时要求。Storm经常用于在实时分析、在线机器学习、持续计算、分布式远程调用和ETL等领域。Storm的部署管理非常简单,而且,在同类的流式计算工具,Storm的性能也是非常出众的。


    Storm主要分为两种组件Nimbus和Supervisor。这两种组件都是快速失败的,没有状态。任务状态和心跳信息等都保存在Zookeeper上的,提交的代码资源都在本地机器的硬盘上。


Nimbus负责在集群里面发送代码,分配工作给机器,并且监控状态。全局只有一个。
Supervisor会监听分配给它那台机器的工作,根据需要启动/关闭工作进程Worker。每一个要运行Storm的机器上都要部署一个,并且,按照机器的配置设定上面分配的槽位数。
Zookeeper是Storm重点依赖的外部资源。Nimbus和Supervisor甚至实际运行的Worker都是把心跳保存在Zookeeper上的。Nimbus也是根据Zookeerper上的心跳和任务运行状况,进行调度和任务分配的。
Storm提交运行的程序称为Topology。
Topology处理的最小的消息单位是一个Tuple,也就是一个任意对象的数组。
Topology由Spout和Bolt构成。Spout是发出Tuple的结点。Bolt可以随意订阅某个Spout或者Bolt发出的Tuple。Spout和Bolt都统称为component。
下图是一个Topology设计的逻辑图的例子。




storm的每一个supervisor节点内部运行多个work进程,每个work进程内部有多个executor线程,每个线程内部还可以跑一个类的多个task实例


Storma集群的安装及配置
1、安装一个zookeeper集群
2、上传storm的安装包,解压(storm是clojur语言编写的 --->基于JVM的语言   scala也是基于JVM的语言)
3、修改配置文件/home/hadoop-node-01/apache-storm-0.9.2-incubating/conf/storm.yaml


#所使用的zookeeper集群主机
storm.zookeeper.servers:
    - "hadoop-01-server"
    - "hadoop-02-server"
    - "hadoop-03-server"


#nimbus所在的主机名
nimbus.host: "hadoop-01-server"


#此处配置的是supervisor节点上work进程的端口号,可配可不配,若不配则默认就是前4个端口
supervisor.slots.ports    
-6701
-6702
-6703
-6704
-6705
-6706


4、将配置好的storm复制到其他两台机器上
scp /home/hadoop-node-01/apache-storm-0.9.2-incubating hadoop-02-server:/home/hadoop-node-01/
scp /home/hadoop-node-01/apache-storm-0.9.2-incubating hadoop-03-server:/home/hadoop-node-01/

storm的集群的启动(storm可以运行在yarn集群上,也可以单独运行。)
1.启动zookeeper
storm是依赖于zookeeper,所以需要选启动zookeeper。
2.启动storm
在nimbus主机上
bin/storm nimbus 1>/dev/null 2>&1 &
bin/storm ui 1>/dev/null 2>&1 &
在supervisor主机上
bin/storm supervisor 1>/dev/null 2>&1 &
(1>/dev/null 2>&1 & 的意思是把该服务启动为后台进程)





storm的深入学习:
storm on  YARN 
分布式共享锁的实现----zookeeper
事务topology的实现机制及开发模式(难度较大的一块)
在具体场景中的跟其他框架的整合(flume<数据收集>/activeMQ/kafka(分布式的消息队列系统)       /redis/hbase/mysql cluster)
0 0
原创粉丝点击