JSRUN 用代码说话

Storm 简介

编辑教程

Storm 简介

Storm 是一个分布式的,可靠的,容错的数据流处理系统。
它把工作任务委托给不同类型的组件,每个组件负责处理一项简单特定的任务。
Storm 集群的输入流由一个被称作 spout 的组件管理,spout 把数据传递给 bolt, bolt 要么把数据保存到某种存储器,要么把数据传递给其它的 bolt。一个 Storm 集群就是在一连串的 bolt 之间转换 spout 传过来的数据。

应用案例

数据处理流 不像其它的流处理系统,Storm 不需要中间队列。
连续计算 连续发送数据到客户端,使它们能够实时更新并显示结果,如网站指标。
分布式远程过程调用 频繁的 CPU 密集型操作并行化。
Storm 组件 对于一个Storm集群,一个连续运行的主节点组织若干节点工作。

在 Storm 集群中,有两类节点:主节点 master node 和工作节点 worker nodes。

主节点运行着一个叫做 Nimbus 的守护进程。这个守护进程负责在集群中分发代码,为工作节点分配任务,并监控故障。

Supervisor守护进程作为拓扑的一部分运行在工作节点上。一个 Storm 拓扑结构在不同的机器上运行着众多的工作节点。

因为 Storm 在 Zookeeper 或本地磁盘上维持所有的集群状态,守护进程可以是无状态的而且失效或重启时不会影响整个系统的健康(见图1-2)

在系统底层,Storm 使用了 zeromq(0mq, zeromq(http://www.zeromq.org ))。这是一种先进的,可嵌入的网络通讯库,它提供的绝妙功能使 Storm 成为可能。下面列出一些 zeromq 的特性。

  • 一个并发架构的 Socket 库
  • 对于集群产品和超级计算,比 TCP 要快
  • 可通过 inproc(进程内), IPC(进程间), TCP 和 multicast(多播协议)通信
  • 异步 I / O 的可扩展的多核消息传递应用程序
  • 利用扇出(fanout), 发布订阅(PUB-SUB),管道(pipeline), 请求应答(REQ-REP),等方式实现 N-N 连接

注意: Storm 只用了 push/pull sockets

Storm 的特性

在所有这些设计思想与决策中,有一些非常棒的特性成就了独一无二的 Storm。

简化编程 使用 Storm,复杂性被大大降低。
容错 Storm 集群会关注工作节点状态,如果宕机了必要的时候会重新分配任务。
可扩展 所有你需要为扩展集群所做的工作就是增加机器。Storm 会在新机器就绪时向它们分配任务。
可靠的 所有消息都可保证至少处理一次。如果出错了,消息可能处理不只一次,不过永远不会丢失消息。
快速 速度是驱动 Storm 设计的一个关键因素
事务性 可以为几乎任何计算得到恰好一次消息语义。
使用一门基于 JVM 的语言开发会更容易, 可以借助一个小的中间件,在 Storm 上使用任何语言开发。
JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
如遇到支付问题请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟
谢谢支持,我一定会更加努力的