一分钟了解Storm



一分钟了解Storm

基础部分


过去的数十年中,数据处理领域有着重大的变革。MapReduce和Hadoop以及相关技术使得存储和处理过去无法想象的规模的数据。不幸的是,这些数据处理技术并不是实时性的,也没有把Hadoop改造成实时数据处理的系统;实时数据处理相对于普通的批处理有基本的不同和需求。


然而,实时的对大规模的数据处理已经是现代诸多业务迫切需要的了,缺少实时性的Hadoop日益成为实时处理生态的查克琉斯之踵。


这个时候,Storm来了。


在Storm之前,我们需要手工来构建一个网络队列和执行单元来进行实时处理。执行单元要处理队列里面的消息,更新DB,然后将处理完的消息发送至其他队列以供以后的处理。不幸的是,这种方式有严重的限制:


1,冗余:我们要花大部分的时间来配置消息的去向、部署执行单元、部署队列之间的消息流动。这样以来实时处理逻辑成为了我们所有工作的很小的一部分。

2,脆弱:容错性很低,执行单元和队列任务消息必须由我们自己保证。

3,可扩展性很差:当消息对于单一的执行单元和队列累积过多的时候,我们就需要将数据分区处理。这个时候我们又需要重新配置新的执行单元和消息流向,而新的部分将有可能会失败。


尽管队列和执行单元对于大量消息处理的时候可能会失败,消息处理显然是实时计算的基础部分。问题是:我们怎么样草能做到不丢失数据,对大规模消息处理的时候扩展性好,并且容易操作呢?


Storm是用来干这事的。


为什么Storm是重要的


Storm提供了用于实时计算的一个集合的基元。类似于MapReduce大大简化了并行批处理,Storm大大简化了并行实时计算。


Storm的关键特性:

1,极其广泛的应用范围:Storm可以用来处理消息和更新DB(流式处理),对数据流的持续查询然后将结果数据流返回给客户端(持续计算),并行处理巨大的查询(分布式RPC),Storm的这些特性满足很多种应用场景。

2,可伸缩性:Storm扩展起来可以每秒处理大量的消息。扩展成为拓扑结构,我们需要做的只是增加机器,增加拓扑结构的并行机制配置。一个Storm扩展的例子,初始的时候应用有10个节点,每秒能够处理100万个消息,包括拓扑结构每秒数百次的DB操作。Storm借助ZK对集群进行协调,使得扩展集群的大小很容易。

3,保证无数据丢失:一个实时系统必须要保证数据消息被成功的处理。对于删除数据的系统来说应用范围比较窄。Storm保证每个消息都被处理,这个可以和S4系统进行对比。

4,极其健壮:不像Hadoop系统,难以管理这点是臭名昭著的,而Storm不是这样的,它可以很好的工作。为了能够让Storm项目对于用户来说有更好的用户体验,这也是Storm致力于做的一点。

5,容错性:如果在执行计算的时候出现错误,Storm将会重新调度任务,Storm可以保证计算一直进行,除非我们将它kill掉。

6,支持语言多:强健和易伸缩实时处理系统不应该受限于平台。Storm拓扑和处理组件可以使用任何语言来定义和操作。


Read full article from 一分钟了解Storm


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts