流处理旅程——认识storm

核心
1、什么是实时流计算
2、实时计算处理流程
3、strom的特点
4、storm的设计思想
5、storm与hadoop的角色和组件比较
6、storm的核心组件

1、什么是实时流计算
所谓的实时流计算,就是近几年由于数据得到广泛应用之后,在数据持久化性建模不满足现状的情况下,急需数据流的瞬间建模或者计算处理。这种实时计算的应用实例有金融服务、网络监控、电信数据管理、web应用、生成制造、传感检测,等等。在这种数据流模型中,单独的数据单元可能是相关的元祖(tuple),如网络测量、呼叫记录、网页访问等产生的数据,但是,这些数据以大量、快速、时变(可能是不预知)的数据流持续到达,由此产生了一些基础性的新的研究问题——实时计算,实时计算的一个重要方向就是实时流计算。

2、实时计算处理流程
这里写图片描述
2、1 : 数据实时采集
在功能上需要保证可以完整地收集所有日志数据,为实时应用提供实时数据;相应时间上要保证实时性、低延迟(在1s左右);配置简单,部署容易;系统稳定可靠等
目前互联网企业的海量数据采集工具有facebook开源的scribe、linkedln开源的kafka、cloudera开源的flume,淘宝开源的timetunnel、hadoop开源的chukwa等,它们均可以满足每秒数百MB的日志数据采集和传输需求
2、2 : 数据实时计算
适应流式数据、不间断查询;系统稳定可靠、可扩展性好、可维护性好等
有关计算的一些注意点:分布式计算、并行计算(节点间的并行、节点内的并行)、热点数据的缓存策略、服务端计算
2、3 : 实时查询服务
全内存:直接提供数据读取服务,定期转存到磁盘或数据库进行持久化
半内存:使用redis、memcache、mongodb、berkeleydb等内存数据库提供数据实时查询服务,由这些系统进行持久化操作
全磁盘:使用hbase等以分布式文件系统(HDFS)为基础的nosql数据库,对于keyvalue内存引擎,关键是设计好key的分布

3、storm的主要特点
1、简单的编程模型:类似于mapreduce降低了并行批处理复杂性,storm降低了进行实时处理的复杂性
2、可以使用各种编程语言:可以在storm上使用各种编程语言,默认支持clojure、java、ruby和python,要增加对其他语言的支持,只需实现一个简单的storm通信协议即可
3、容错性:storm会管理工作进程和节点的故障
4、水平扩展:计算是在多个线程、进程和服务器之间并行进行的
5、可靠的消息处理:storm保证每个消息至少能得到一次完整处理,当任务失败时,它会负责从消息源重试消息
6、快速:系统的设计保证了消息能得到快速的处理,使用zeroMQ作为其底层消息队列
7、本地模式:storm有一个”本地模式”,可以在处理过程中完全模式storm集群,这可以使用用户快速进行开发和单元测试

4、storm的设计思想
在storm中也有对流的抽象,流是一个不间断的、无界的连续tuple(storm在建模事件流时,把流中的事件抽象为一个tuple即元组)。storm认为每个流都有一个stream源,也就是原始元组的源头,所以它将这个源头抽象为spout,spout可能连接twitter API并不断发出推文(tweet),也可能从某个队列中不断读取队列元素并装配为tuple发射
有了源头即spout也就是有了流,同样的思想,twitter将流的中间状态转换抽象为Bolt,Bolt可以消费任意数量的输入流,只要将流方向导该Bolt,同时它也可以发送新的流给其他Bolt使用,这样一来,只要打开特定的spout(管口)在将spout中流出的tuple导向特定的Bolt,由Bolt处理导入的流后在导向其他Bolt或者目的地
假设spout就是一个一个的水龙头,并且每个水龙头里流出的水是不同的,想获取哪种水就拧开哪个水龙头,然后使用管道将水龙头的水导向到一个水处理器(Bolt),水处理器处理后使用管道导向另一个处理器或者存入容器中
这里写图片描述
这里写图片描述
这里写图片描述

5、storm与hadoop的角色和组件比较
这里写图片描述

6、storm核心组件
storm集群由一个主节点和多个工作节点组成,主节点运行一个名为nimbus的守护进程,工作节点都运行一个名为supervisor的守护进程,两者的协调工作由zookeeper来完成,zookeeper用于管理集群中的不同组件
每一个工作节点上运行的supervisor监听分配给它那台机器的工作,根据需要启动/关闭工作进程,每一个工作进程执行一个topology的一个子集;一个运行的topology由运行在很多机器上的很多工作进程worker组成,那么storm的核心就是主节点(nimbus)、工作节点(supervisor)、协调器(zookeeper)、工作进程(worker)、任务线程(task)

主节点nimbus
主节点通常运行一个后台程序——nimbus,用于响应分布在集群中的节点,分配任务和监测故障,这类似于hadoop中的jobtracker。
nimbus进程是快速失败(fail-fast)和无状态的,所有的状态要么在zookeeper中,要么在本地磁盘上,可以使用kill -9来杀死nimbus进程,然后重启即可继续工作

工作节点supervisor
工作节点同样会运行一个后台程序——supervisor,用于收听工作指派并基于要求运行工作进程,每个工作节点都是topology中一个子集的实现,而nimbus和supervisor之间的协调则通过zookeeper系统。
同样 supervisor进程也是快速失败(fail-fast)和无状态的,所有的状态要么在zookeeper中,要么在本地磁盘上,可以使用kill -9来杀死nimbus进程,然后重启即可继续工作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值