Storm入门指南第一章 基础知识

Storm是一个分布式、可靠、容错的流式数据处理系统。处理工作被分派给不同类型的组件(components),每个组件分别负责一个简单、特定的处理任务。处理Storm集群输入流的组件叫喷口(spout),喷口再将数据传给一个叫螺栓(bolt)的组件,并在螺栓中处理数据,处理完成之后,螺栓要么将这些数据存储起来(存储在数据库、磁盘甚至是对象中),要么将它传给其他螺栓。因此,可以将Storm集群想象成一个螺栓链,每个螺栓都会对喷口发送的数据作出一些处理。

译者的话:后面对spout、bolt都采用英文叫法,不再使用喷口、螺栓~~

这里使用一个简单的例子去解释这个概念:昨晚我在看新闻时,几个播音员开始谈论政客和他们的地位,他们不停地重复不同的名字,我很好奇每个名字被提及的次数是否相同,还是有些偏差。

这里,将播音员们说的字幕想象成你的输入数据流,让spout来从一个文件(或者套接字[socket])读取这个输入。当成行的文本到达时,spout将它们交给一个bolt,该bolt将文本分离成一个个的单词。接着,这个单词流被传递到另一个bolt,这个bolt会将每个单词与一个预先定义好的政客名字列表作比较。对于每一次匹配成功(单词与政客名字相同),第二个bolt会在数据库中增加一次那个名字的计数。当你想看结果的时候,只需要查询数据库,该数据库在数据到达的时候会被实时更新。所有组件(spouts和bolts)的排列、连接被称为一个拓扑(topology),如图1-1.

topology图1-1 一个简单的拓扑

 设想简单地定义整个集群中每个bolt和spout的并行度,这样你就可以无限地扩展你的拓扑。很神奇,对吧?尽管这只是一个简单的例子,但是你可以看到Storm有多强大。

Storm的典型用例有哪些呢?

流处理:正如前面的例子中所展示的,和其他流处理系统不同的是,使用Storm不需要中间队列。

连续计算:向客户端持续发送数据,以便它们能实时更新、显示结果,例如网站统计。

分布式远程过程调用:可简单地并行运行CPU密集型操作。

Storm集群组成部分

在Storm集群中,所有节点被一个连续运行的主节点管理。

在Storm集群中有两种节点:主节点(master node)和工作节点(worker nodes)。主节点上运行了一个叫Nimbus的后台进程,它负责在集群内分发代码、为每个工作节点指派任务、监控失败的任务。工作节点上运行了一个叫Supervisor的后台进程,它执行topology的一部分。Storm中的一个topology运行在很多工作节点上,这些工作节点分布在不同的机器。

由于Storm将所有集群状态保存在Zookeeper或者本地磁盘上,因此这些后台进程是无状态的,并且可以在不影响系统健康的情况下失效或者重启(见图1-2)。

Storm集群组成部分图1-2.Storm集群的组成部分

Storm在底层使用zeromq(0mq,zeromq),它是一个高级、可嵌入、提供极好特性的网络库,这使得Storm成为可能。下面列举了一些zeromq的特点:

  • 充当并发框架的套接字库(socket lib)
  • 对于集群产品和超级计算,比TCP更快速
  • 在进程内、IPC、TCP和多播之间传递数据
  • 异步IO支持可扩展的多核消息传递应用
  • 通过展开、发布订阅、管道、请求应答连接N-to-N

提示:Storm只使用push/pull套接字。

译者的话:不必纠结于此处关于zeromq的解释,容易犯晕,需要的时候再看。

Storm特性

编程简单:如果你尝试过从头开始构建实时处理系统,你就会明白它有多痛苦。使用storm,复杂性被大大减少。

支持多种编程语言:使用基于JVM的语言开发变得更简单了,然而storm支持任何语言,只要你使用或者实现一个小的中间库。

容错:Storm关注workers节点的宕机,并在必要时刻对任务进行重分配。

可扩展:为了扩展集群,你所需做的只是向集群中增加更多的机器,当它们可用的时候Storm会为新机器分配任务。

可靠:所有的消息都确保至少处理一次。如果有错误,消息可能会被处理不止一次,但是你永远不会丢失数据。

快速:速度曾是驱动Storm设计的关键因素。

事务性:对于几乎任何计算,你可以确切地获取一次消息语义。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值