Storm使用入门之引言

从本篇开始,我们依次介绍Storm官方文档中的第一部分和第二部分,首先咱们开始使用入门的引言部分。

过去十年,数据处理领域发生了很大的变化,可以认为是发生了一次革命。MapReduce、Hadoop以及其他相关技术使得在存储和处理我们以前无法想象的大规模数据方面成为可能。然后不幸的是,这些数据处理技术并不是实时系统,而且他们命中注定也不是。无法将Hadoop转换成实时系统,因为实时数据处理和批处理在要求上有本质的不同。

然后,大规模地实时数据处理需求在商业应用上已经越来越迫切。数据处理生态中缺少”实时Hadoop“(即类似于Hadoop在批处理领域的通用解决方案)已经成为一个最大的遗憾。Storm弥补了这个遗憾。

在Storm出现之前,我们通常需要手工构建一个由队列和数据处理节点(我们将其称之为”worker“)构成的网络来实时处理数据。Worker从队列中接收消息并加以处理、或者更新数据库、亦或向其他队列发送新的消息以供下游进一步处理。然而这种方式存在一系列的局限性:

1、Tedious:咱们花费了大量的开发时间来配置如何发送消息、部署处理节点和用于在各节点之间其媒介作用的队列。恰恰需要我们花心思重点关注的实时处理逻辑却只占据了很少的比例。

2、Brittle:我们有责任确保每个处理节点和队列可靠持续运行,然后在这方面我们的容错处理很少,系统非常脆弱。

3、Painful to scale:当单个的处理节点或者队列吞吐量过高时,我们需要对其进行重新分配以使消息得以快速处理。我们需要重新配置其他的处理节点以使其知道新的消息发送地址,这就引入了迁移与新建的工作,而在这一过程中非常容易失败。因此,在面临大规模的业务场景下,传统方式会非常痛苦。

虽然,基于队列和处理节点的处理模式在面临大量消息的使用场景时非常容易发生故障,但是,基于消息的处理模式却是实时计算系统中一个非常基础的处理模式。现在的问题是:我们如何设计系统来达到如下几个目标:

1、不丢数据

2、大规模消息的可扩展

3、易于使用与维护

Storm搞定了上述目标,那下面我来看看Storm如何达成这些目标,从而了解其为什么如此重要。

Storm定义了一系列的原语用于处理实时计算。MapReduce对原语的抽象使得编写并行的批处理程序非常容易,类似的,Storm的原语也保证了编写并行的实时计算程序非常简单。

对于Storm,有如下几个关键的特点:

1、极其广泛的使用场景:Storm可以用于消息处理以及在处理过程中更新数据库(即通常所说的流式处理)、基于数据流执行持续查询并将结果以流的方式发送给客户端(即持续计算场景)、并行化查询(即DRPC)等。Storm非常小的原语集满足了大量使用场景的需求。

2、可伸缩性:Storm的伸缩性体现在通过水平扩展得以每秒处理大量消息。对于计算作业(即topology)而言,我们通过添加机器以及提高topology的并行度就可以完成水平扩展。例如:Storm集群有一个应用,目前运行在10个节点构成的集群上,每秒能够处理百万的消息,以及数百次的数据库访问。鉴于Storm自身在集群协调方面采用了Zookeeper,因此,其可以非常容易的扩大集群规模。

3、消息可靠性:对于一个实时系统而言,其需要保证数据被成功处理。一个存在丢数问题的系统在使用场景上会存在很大的局限。Storm可以保证每条消息都被处理,此特性也是Storm与其他实时系统(如S4)一个显著且直接的区别。

4、健壮性:与那些难以管理的系统(如Hadoop)不同,Storm运行与维护非常容易,这也是Storm项目的一个重要目标:改善Storm集群管理者的体验,使Storm集群易于管理。

5、容错:用户计算任务在运行过程中发生错误,Storm会对任务进行重新分配。Storm保证一个计算任务持久运行直至用户主动将其kill

6、编程语言无关性:对于一个平台而言,健壮性和伸缩性是一个基本要求。Storm支持以任意语言来编写计算任务(即Topology)以及处理组件(即Component),从而使得Storm使用尽可能地大众化。

Storm使用入门之引言

时间: 2024-08-11 12:31:59

Storm使用入门之引言的相关文章

Storm使用入门之本地开发环境搭建

本篇博文详细告诉你如何安装Storm的本地开发环境,总体分为两步,具体如下: 1.从官网上下载Storm的发布包,下载完成后将其解压,并将解压后的bin目录添加到环境变量(PATH)中,以方便后续执行Storm的相关命令 2.修改Storm的配置文件(storm.yaml),主要是按照实际情况更新配置文件中的集群信息,然后将修改后的配置文件添加到目录(~/.storm/)中,目的是为了后续能够远程启动和停止集群上的计算任务(即topology) 接下来,咱们来详细地介绍每一个操作步骤. 首先,何

Storm使用入门之构建开发项目

本篇博文向大伙详细讲解了如何构建Storm的项目工程,概括起来分为两步: 1.向CLASSPATH中添加Storm的jar包 2.如果是使用多语言开发的话,则需要将相应目录添加到CLASSPATH下 接下来请跟着我们一起了解如何将storm-starter(Storm官方DEMO工程)添加到Eclipse中. 步骤一:向CLASSPATH添加Storm依赖包 当我们开发Storm的计算任务(下文统一称之为"topology")时,需要引入Storm的依赖jar,对此我们推荐采用mave

Storm学习入门视频教程

Storm流计算从入门到精通之技术篇(高并发策略.批处理事务.Trident精解.运维监控.企业场景)课程讲师:Cloudy课程分类:大数据适合人群:初级课时数量:28课时用到技术:Storm集群.Zookeeper集群等涉及项目:网站PV.UV案例实战.其他案例咨询qq:1840215592课程亮点:1.Storm全面.系统.深入讲解,采用最新的稳定版本Storm 0.9.0.1 :2.注重实践,对较抽象难懂的技术点如Grouping策略.并发度及线程安全.批处理事务.DRPC.Storm T

实时计算框架之二:Storm之入门实例

预备.开火.瞄准-- 1 总结与提升 自1月份来,可谓是浮浮荡荡,一波三折呀. 先是参加了公司组织的创意马拉松大赛,虽说24小时内完成了作品,但是自己感觉上效果很差,自然成绩也是不高.通过这24小时持续的奋斗以及后来的各种产品描述等环节,发现了开发上的许多缺点.首先,对我们的产品进行了深入的认识和了解,也在产品之上,发现了更多可以发展走向成功的点子,这是我觉得最棒的一点:其次,短时间内和队员进行协作交流,生成产品,这之间的沟通非常重要:第三,选择C++作为24小时创作的语言,开发效率相对而言是非

Storm框架入门

1 Topology构成 和同样是计算框架的Mapreduce相比,Mapreduce集群上运行的是Job,而Storm集群上运行的是Topology.但是Job在运行结束之后会自行结束,Topology却只能被手动的kill掉,否则会一直运行下去. Storm集群中有两种节点,一种是控制节点(Nimbus节点),另一种是工作节点(Supervisor节点).所有Topology任务的提交必须在Storm客户端节点上进行(需要配置~/.storm/storm.yaml文件),由Nimbus节点分

_00019 Storm的体系结构介绍以及Storm入门案例(官网上的简单Java案例)

博文作者:妳那伊抹微笑 博客地址:http://blog.csdn.net/u012185296 个性签名:世界上最遥远的距离不是天涯,也不是海角,而是我站在妳的面前,妳却感觉不到我的存在 技术方向:Flume+Kafka+Storm+Redis/Hbase+Hadoop+Hive+Mahout+Spark ... 云计算技术 转载声明:可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明,谢谢合作! qq交流群:214293307  (期待与你一起学习,共同进步) # Storm

Google Guava入门教程

以下资料整理自网络 一.Google Guava入门介绍 引言 Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合 [collections] .缓存 [caching] .原生类型支持 [primitives support] .并发库 [concurrency libraries] .通用注解 [common annotations] .字符串处理 [string processing] .I/O 等等. 所有这些工具每天都在被Google的工程师应用在产品

第1节 storm编程:2、storm的基本介绍

课程大纲: 1.storm的基本介绍 2.storm的架构模型 3.storm的安装 4.storm的UI管理界面 5.storm的编程模型 6.storm的入门程序 7.storm的并行度 8.storm的消息的分发策略 9.strom与kafka的集成  搞定 10.            实时看板综合案例 1. storm的基本介绍 storm的官网:http://storm.apache.org/ twitter公司开源提供的,最早的一个版本是0.8.0,处理速度比较快 认知的海岛越大,

大数据最佳学习路线总结

一,题记 要说当下IT行业什么最火?ABC无出其右.所谓ABC者,AI + Big Data + Cloud也,即人工智能.大数据和云计算(云平台).每个领域目前都有行业领袖在引领前行,今天我们来讨论下大数据Big Data这个方向. 二,大数据里面的角色 角色一:大数据工程 大数据工程需要解决数据的定义.收集.计算与保存的工作,因此大数据工程师们在设计和部署这样的系统时首要考虑的是数据高可用的问题,即大数据工程系统需要实时地为下游业务系统或分析系统提供数据服务: 角色二:大数据分析 大数据分析