Storm实时大数据处理(一)

版权声明:学会分享,利己利人 https://blog.csdn.net/Tendency_Yang/article/details/52318475

自从Google发表了3篇举世瞩目的论文(Google File System、BigTable和MapReduce)以后,大数据被引爆了。如果说计算机的威力相当于一枚大炮的威力的话,那么互联网的威力相当于一颗原子弹,而大数据的威力则相当于氢弹,大数据成为了IT发展史上的又一次浪潮,处于这个圈内的我们怎能错过?

时至今日,基于Google的3篇论文及后续研究,大数据处理架构如雨后春笋般拔地而起,大数据的世界里,百家争鸣,百花齐放(关注Apache大数据开源项目的朋友应该有感触),这一点就像春秋战国时期思想界一样,大家都基于《易经》,却各有各的理解,各有各的用途。在大数据分布式处理的世界里,Hadoop是鼻祖,而基于Hadoop,又诞生出了很多框架,HBase、Hive、Pig、Zookeeper、Spark、Storm等,读者可以去Apache项目列表里面看详细信息:Apache Projects Directory,本文介绍的是实时大数据处理架构Storm。

Hadoop做大数据处理,做的是批处理,即在处理之前需要先准备好数据,有点万事俱备只欠东风的感觉,而Storm做的是实时大数据处理,在处理前不需要准备好数据。举个例子,想象一个无比庞大蓄水池,连接着无数多的进水管,如果把蓄水池和管道里面的水看成数据的话,那么Hadoop擅长于处理蓄水池中已经累计的海量数据,而Storm擅长于处理实时流进蓄水池的管道里的数据。

大数据的一大特征是高速度,因此大数据的实时处理更具有商业价值,实时的商品推荐,实时的搜索推荐,等等,都要求对大数据的高速、实时处理,而Storm就擅长于这个。本文,我介绍一下Storm的基本概念,关于Storm集群搭建和使用我会在后续博客中更新。

Storm的基本概念很简单,和Hadoop类似,但是又有所不同。在Storm中,一个分布式的大数据实时处理任务被称为一个拓扑(Topology),其实就是一个有向无环图,如图1-1所示。


图1-1

在图1-1中,向拓扑中发送数据部件叫Spout,这个单词本身即有水龙头的意思,你就把发送数据的部件理解为水龙头吧,处理数据的部件叫Bolt,这个单词本身的意思是雷电、闪电,你就理解为这个组件会以闪电般的速度实时处理数据吧,在Apache提供的测试中,单个Bolt一秒钟处理的数据量是100万条Tuple,可见有多快!而在Spout和Bolt之间以及Bolt和Bolt之间流动的当然就是水流,叫做Stream,你可以把Stream想象为由一滴一滴水组成的源源不断的水柱,而这一滴一滴的水,在Storm中叫做Tuple,Tuple这个单词的意思是元组,我第一次接触这个单词是在数据库课程中,当时Tuple是指描述一张二维表数据的那些字段的集合,Storm中的Tuple和这个类似,你也可以把它理解为一个特殊的Java类,这个类没有任何方法,只有属性。

基于以上的基本概念和图1-1,我们可以把Storm理解为一个由一个或多个Spout以元组(Tuple)的形式发射数据,由多个Bolt对数据进行快速处理的大数据实时处理系统,整个系统是一张拓扑图,Spout和Bolt是图中的结点,边是由连续不断的Tuple组成的Stream。

读到这里,如果您还没有理解的话,你可以通过下面这个故事来理解。这个故事是我小时候我妈妈给我讲的,当时我大概四五岁吧。我家在农村,种植玉米,每逢夏天,偶尔会遇到下冰雹的时候,冰雹会把玉米砸坏,我们当然不希望下冰雹。有一次下冰雹的时候,看到地里的玉米被砸坏了,我很伤心,于是就问:为什么会下冰雹?当时,我妈妈是这样回答我的:“因为人们做错了事情,老天爷要惩罚我们,于是龙王把像小山一般大的冰雹扔下来砸我们,而在冰雹下降的过程中,会被雷打碎成为小碎块,最后撒向大地”。Storm的原理和这个故事很相似,实际上,我第一次就是靠这个故事来理解Storm的原理的。Storm里的Spout就是故事中的龙王,他主治水,是Storm拓扑(集群)中数据的来源,负责向集群发射数据(就像龙王扔冰雹那样),而Bolt就是故事中的雷电,他会把Spout发射来的数据(冰雹)瞬间击碎,然后撒向大地,在大数据处理系统中,这个大地就是数据持久化层,比如数据库、文件系统等,而冰雹就是Storm中的Tuple,它是Storm集群中各结点之间数据传输的基本单位。读者应该注意到,在这个故事中,还有一个最高权力的主控者——老天爷,在Storm中,“老天爷”就是Nimbus,它负责向集群中的各结点分发任务。而Spout和Bolt才是真正的数据处理组件,在Storm中,他们被称为SupervisorNimbusSupervisor之间有协调者,他们是Zookeeper,负责整个集群的管理和协调,如图1-2所示。


到这来,您已经理解了Storm的基本概念了,有了这些基本概念,你就可以搭建集群来学习Storm了,关于如何真枪实战地来使用Storm,我会在后续博客中更新。


展开阅读全文

没有更多推荐了,返回首页