storm浅谈

storm本地模式,处理模拟集群环境,快速进行开发。

1:storm体系结构

(1):Nimbus主节点:

① 主节点通常运行一个后台程序-Nimbus,用于响应分布在集群中的节点,分配任务和监控故障

(2):Supervisor工作节点:

① 工作节点同样会运行一个后台程序--Supervisor,用于收听工作指派基于要求运行工作进程,每一个工作节点是topology中一个子集的实现,主节点和从节点的协调通过zk来进行

(3):zk

① zk是完成主节点和从节点之间协调的服务,而应用程序实时的逻辑被封装到storm中的topology,topology是一组由Spouts和spot通过stream grouping进行连接的图

(4):Topology拓扑(就是程序,流程)

① storm中运行的一个实时应用程序,因为各组件之间的消息流动形成逻辑上的一个拓扑结构,一个topology是spouts(数据源)和bolts(处理数据的)组成的图,通过stream groupings将图中的spouts和bolts连接起来

 

2:topology

topology是一个有向的流程图,

3:stream grouping:为每一个bolt指定哪一个流作为输入,流分组定义了如何在bolt的任务直接进行分发。

流分组的方式:

(1):Shuffle Grouping,随机分组;保证每一个bolt接收到的tuple数目相同

(2):Fields Grouping,按字段分组;比如按照userId进行分组,具有同样userId的tuple会被分到相同的Bolts中,具有不同样userId的tuple会分到不同的Bolts中

(3):ALL Grouping,广播分组,对于每一个tuple,会分到每一个Bolts中

(4):Global Grouping 全局分组:这个tuple会被分发到storm的一个bolt中的task。再具体点就是分配到id值最低的那个task上。

4:cleanUp方法会在服务器停止之前调用(属于bolt的一个方法)

5:消息可靠性【节点描记工作】,如果消息不能被处理而丢失是很严重的情况。storm也是支持消息可靠性支持的。只有bolt节点进行描记成功或者失败才会调用spot节点的成功或者失败方法。ack或者fail方法。没法做到细致的事物操作,可以使用幂等性去判断。storm保证性的话使用ack保证机制。storm消息可靠性通过树来完成的【一个消息被拆分成为两个,这两个又被拆分成4个。。。。】

6:storm的RPC【distributed RPC】分布式RPC【贼牛逼功能】

storm里面引入DRPC主要利用storm的实时计算能力来并行化CPU密集型的计算任务。DRPC的storm topology以函数的参数流作为输入,而把这些函数调用的返回值作为topology的输出流。DRPC其实并不能算为storm本身的一个特性。

DRPC通俗讲就是利用Java形成一个client端,然后程序调用这个client,通过这个client执行storm中的某一个topology,然后快速返回结果。开启DRPC之后就不用使用spout数据源输入数据

DRPC的整体工作流程:

(1):接受一个RPC请求

(2):请求发送到storm topology

(3):从storm topology接受结果

(4):把结果发送给等待的客户端。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值