这两天准备开始着手研究一下著名的大数据处理框架storm。在网上看了一些教程之后,概念清晰了一点,也大概明白了它的机制,当然纸上谈兵是没有用的,最终还得落实到实践当中,毕竟这个框架的强大之处在于它支撑了许多强调实时性的大数据项目。
这篇前言就先简单介绍一下storm,之后再写一个系列,记录一下我在本地配置storm集群、跑storm的简单例子。说句题外话,研究大数据,Linux系统得比较熟悉,因为很多开源的框架技术都是基于Linux的,另外,现在服务器的搭建,Linux仍是主流,跟我一样刚入门的朋友得在这方面下下功夫了。
处理实时流数据
首先对于流数据,百度百科是这么描述的:流数据是一组顺序、大量、快速、连续到达的数据序列,一般情况下,数据流可被视为一个随时间延续而无限增长的动态数据集合。
因此,流数据一般是实时的,比如某地人流聚集状况,服务器访问信息等等。Storm可以不断地取这些流数据,并作处理,这个过程是实时的,也是连续的。
工作机制
Storm由一个主节点和多个工作节点组成,他们之间的工作协调是由另外一个出名的服务zookeeper完成的,没错,storm和hadoop一样,都是批处理大数据。
Storm处理数据的基本过程
首先,你得有数据的来源,比如我们可以从消息队列kafka中获得数据,在storm中,获得数据的组件叫做Spout,英文意思是喷水口、水龙头,它负责得到源源不断的数据。
然后,这些数据会分发给谁呢?那就是BOLT,英文意思是闪电,这个bolt是关键,主要的处理逻辑、处理流程都是写在里面,而且bolt之间可以传递,相当于处理的一个个流程,比如,第一个bolt负责将数据进行过滤,并把过滤后的数据传给第二个bolt,第二个负责将数据进行统计,并写入数据库,这就完成了一个流程。他们之间传递的单位是tuple,也就是我们常说的元组,数据必须得按照storm的规范封装到tuple里面。如下图,水龙头和闪电之间的关系。
Storm的基本名词、概念
- Topologies
- Streams
- Spouts
- Bolts
- Stream groupings
- Reliability
- Tasks
- Workers
以上是官方文档里面的提到的概念,这里就不翻译了,英文程度尚可的朋友可以试着读一下 http://storm.apache.org/documentation/Concepts.html
现在没搞懂没关系,之后我们实践了、跑一个程序就大概知道怎么回事了。
总之,storm很强大,并把很多东西都写好了,留下好用的接口给我们。具体怎么使用,就见仁见智了。我之后,会在本地进行测试、学习,由于storm是分布式计算的框架,那么,我将就会在虚拟机安装几个centos当服务器,作为模拟,这和真实情况(有机房,有服务器)虽然有差距,但是对于理解原理来说,也足够了。前言就先写到这里了,都是一些个人的理解,之后会把自己的学习过程完整的记录下来,包括搭建环境、运行程序等等。
保持对阿锤大神的关注