比来应用闲暇时光,又从新研读了一下Storm。卖力比较了一下Hadoop,前者更善于的是,及时流式数据处理,后者更善于的是基于HDFS,经由过程MapReduce方法的离线数据分析计算。对于Hadoop,本身不善于及时的数据分析处理。两者的合营点都是分布式架构,并且都类似有主/大年夜关系的概念。
本文我不会具体阐述Storm集群和Zookeeper集群若何安排的问题,这里想经由过程一个实际的案例切入,分析一下若何应用Storm完成及时分析处理数据。
在Storm琅绫擎拓扑(Topology)的概念,异常类似Hadoop琅绫擎MapReduce的Job的概念。不合的是Storm的拓扑(Topology)只要你启动了,它就会一向运行下去,除非你kill掉落;而MapReduce的Job最终它是会停止的。基于如许的模式,使得Storm异常合适处理及时性的数据分析、持续计算、DRPC(分布式RPC)等。
下面就结合实际的案例,设计分析一下,若何应用Storm改良应用的处理机能。
某通信公司的垃圾短信监控平台,及时地上传每个省的疑似垃圾短信用户的垃圾短信内容文件,每个省则根据文件中垃圾短信的内容,解析过滤出,包含指定敏感关键字的垃圾短信进行入库。被入库的垃圾短信用户被列为敏感用户,是重点监控对象,毕竟乱发这些垃圾短信是异常纰谬的。垃圾短信监控平台生成的文件速度异常惊人,本来的传统做法是,根据每个省的每一个地市,对应一个自力应用,串行化地解析、过滤敏感关键字,来进行入库处理。然则,大年夜近况来看,法度榜样处理的机能并不高效,经常造成文件积存,没有及时处理入库。
如今,我们就经由过程Storm来从新梳理、组织一下上述的应用处景。
Nimbus对应的主机是192.168.95.134是Storm主节点,其余两台大年夜节点Supervisor对应的主机分别是192.168.95.135(主机名:slave1)、192.168.95.136(主机名:slave2)。同样的,Zookeeper集群也是安排在上述节点上。
Storm集群和Zookeeper集群会互相通信,因为Storm就是基于Zookeeper的。然后先启动每个节点的Zookeeper办事,其次分别启动Storm的Nimbus、Supervisor办事。具体可以到Storm安装的bin目次下面启动办事,启动敕令分别为storm nimbus > /dev/null 2 > &1 &和storm supervisor > /dev/null 2 > &1 &。然后用jps不雅察启动的效不雅。没有问题的话,在Nimbus办事对应的主机上启动Storm UI监控对应的办事,在Storm安装目次的bin目次输入敕令:storm ui >/dev/null 2>&1 &。然后打开浏览器输入:http://{Nimbus办事对应的主机ip}:8080,这里就是输入:http://192.168.95.134:8080/。不雅察Storm集群的安排情况,如下图所示:
可以发明,我们的Storm的版本是0.9.5,它的大年夜节点(Supervisor)有2个,分别是slave1、slave2。一共的woker的数量是8个(Total slots)。Storm集群我们已经安排完毕,也启动成功了。如今就应用Storm的方法,从新改写一下这种敏感信息及时`控过滤的应用。先看下Storm方法的拓扑构造图:
个中的SensitiveFileReader-591、SensitiveFileReader-592(用户短信采集器,分地市)代表的是Storm中的Spouts组件,表示一个数据的泉源,这里是表示大年夜办事器的指定目次下,攫取疑似垃圾短信用户的垃圾短信内容文件。当然Spouts的组件你可以根据实际的需求,扩大出很多Spouts。
为了简单演示起见,我这里定义文件的格局为如下内容(随便写一个例子):home_city=591&user_id=5911000&msisdn=10000&sms_content=abc-slave1。每个列之间用&进行连接。个中home_city=591表示疑似垃圾短信的用户归属地市编码,591表示福州、592表示喷鼻门;user_id=5911000表示疑似垃圾短信的用户标识;msisdn=10000表示疑似垃圾短信的用户手机号码;sms_content=abc-slave1代表的就是垃圾短信的内容了。SensitiveFileAnalyzer代表的就是Storm中的Bolt组件,用来处理Spouts“流”出的数据。
最后,就是我们根据解析好的数据,匹配营业规定的敏感关键字,进行过滤入库了。这里我们是把过滤好的数据存入MySQL数据库中。负责这项义务的组件是:SensitiveBatchBolt(敏感信息采集处理),当然它也是Storm中的Bolt组件。好了,以上就是完全的Storm拓扑(Topology)构造了。
如今,我们对于全部敏感信息采集过滤监控的拓扑构造,有了一个整体的懂得之后,我们再来看下若何具体编码实现!先来看下全部工程的代码层次构造,它如下图所示:
起首来看下,我们定义的敏感用户的数据构造RubbishUsers,假设我们要过滤的敏感用户的短信内容中,要包含“racketeer”、“Bad”等敏感关键字。具体代码如下:
推荐阅读
上周,微软、亚马逊、谷歌等国外科技巨擘齐发家报,在各家亮眼数据的背后,云计算营业成为一大年夜功臣。近些年来,在传统IT营业萎缩的情况下,云办事在各大年夜科技公司的营业和计谋中,扮演着越来越重>>>详细阅读
本文标题:基于Storm构建分布式实时处理应用初探
地址:http://www.17bianji.com/lsqh/38471.html
1/2 1