storm记录--2--Storm是什么

  1. Storm是什么:

    成都创新互联公司长期为上千多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为深泽企业提供专业的网站设计制作、做网站深泽网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。

    如果只用一句话来描述storm的话,可能会是这样:分布式实时计算系统。按照storm作者的说法,storm对于实时计算的意义类似于hadoop对于批处理的意义。我们都知道,根据google mapreduce来实现的hadoop为我们提供了map, reduce原语,使我们的批处理程序变得非常地简单和优美。对比Hadoop的批处理,Storm是个实时的、分布式以及具备高容错的计算系统。同Hadoop一样Storm也可以处理大批量的数据,然而Storm在保证高可靠性的前提下还可以让处理进行的更加实时;也就是说,所有的信息都会被处理。Storm可以扩展到不同的机器上进行大批量的数据处理,他同样还有其他一些特性。

  2. Storm的架构:

    Storm的集群由一个主节点和多个工作节点组成。主节点运行了一个名为“nimbus”的守护进程,用于分配代码、布置任务及故障检测。每个工作节点都运行了一个名为“supervisor”的守护进程,用于监听工作,开始并终止工作进程。Nimbus和Supervisor都能快速失败,而且是无状态的,这样一来他们都变得十分健壮,两者的协调工作是由Zookeeper来完成的。Zookeeper用于管理集群中的不同组件。ZeroMQ是内部消息系统,JZMQ是ZeroMQ的Java Binding。有个名为storm-deploy的子项目,可以在AWS上一键部署Storm集群。

  3. Storm优势:

    a.简单的编程模型。类似于MapReduce降低了并行批处理复杂性,Storm降低了进行实时处理的复杂性。

    b.服务化,一个服务框架,支持热部署,即时上线或下线App。

    c.可以使用各种编程语言。你可以在Storm之上使用各种编程语言。默认支持Clojure、Java、Ruby和Python。要增加对其他语言的支持,只需要实现一个简单的Storm通信协议即可。

    d.容错性。Storm会管理工作进程和节点故障。

    e.水平扩展。计算是在多个线程、进程和服务器之间并行进行的。

    f.可靠的消息处理。Storm保证每个消息至少能得到一次完整处理。任务失败时,它会从消息源重试消息。

    g.快速。系统的设计保证了消息能得到快速的处理,使用ZeroMQ作为其底层的消息队列。

    h.本地模式。Storm有一个“本地模式”,可以在处理过程中完全模拟Storm集群。这让你可以快速进行开发和单元测试。

  4. Storm存在的问题:

    a、目前的开源版本中只是单节点nimbus,挂掉只能自动重启,可以考虑实现一个双nimbus的布局。

    b、Clojure是一个在JVM平台运行的动态函数式编程语言,优势在于流程计算,Storm的部分核心内容由Clojure编写,虽然性能上提高不少但同时也提升了维护成本。

  5. storm的适用场景:

    流数据处理。Storm可以用来处理源源不断流进来的消息,处理之后将结果写入到某个存储中去。

    分布式rpc。由于storm的处理组件是分布式的,而且处理延迟极低,所以可以作为一个通用的分布式rpc框架来使用。当然,其实我们的搜索引擎本身也是一个分布式rpc系统。


本文标题:storm记录--2--Storm是什么
路径分享:http://scyanting.com/article/ggehcc.html