看完课程后 有两个疑惑望老师能解答一下

jike_0377311 Storm 实战:完善统计日志... 最后由 shirubamac 于2016年05月23日回复

  • 2 回答
  • 1.3k 浏览

1. 为何不直接用logstash+elasticsearch而要在其中加入storm这一层,我理解课程里面storm主要做的工作是日志解析,但是logstash filter同样可以完成相同的工作 比如用grok正则。

2. 用cassendra做持久化的主要优势在哪里?elasticsearch同样可以承担存储的工作吧

  • shirubamac 2016年05月23日 回答 #1楼
  • 第1部分:

    第一个的话,这里filter只是demo。storm在这里的作用在于:当日志分析的计算量大,并且可以利用分布式集群计算解决问题的情景下,storm 分布式集群可以通过mapreduce的方法对海量数据进行分布式计算。如果只使用logstash和简单的正则表达式可以处理的情况是有限的。

    第二个的话,elasticsearch优点在于快速的文本索引,如果用作数据库,可以支持存储简单的文档型JSON数据,但是聚合统计能力相对较弱(虽然有),而Cassandara则是完整的数据库引擎(属于NoSQL),有模式定义检查,支持较为复杂的查询语言和聚合统计等能力,更多地用在替代部分关系型数据库功能上。


    课程中的例子可能并不能完全发挥这些系统的作用,但是面对海量数据的时候,这些基本的工具还是非常值得借鉴和参考的。

  • 1 评论
  • shirubamac 2016年05月23日 回答 #2楼
  • 第2部分:

    假设我们会在数据库中记录了部分用户的职业信息。然后我们想根据用户访问系统的时间频次曲线自动对其他用户职业进行分类。

    我们会使用日志记录用户的访问时间。那么日志到来时,我们要更新用户的时间频次曲线,并使用预先训练的模型来对用户进行分类,计算出用户可能的职业。

    如果又需要计算的实时性(每次用户访问都要使用最新的数据来猜测用户职业)这样计算量比较大,用户量大的时候肯定不能用logstash直接在业务系统上直接计算。

    所以过滤只是一个简单的demo而已。而且就算是过滤,像那本实战书上的过滤用了复杂的业务逻辑引擎,那个计算量也是很大的。

    所以就是看实际应用,如果只是根据某些字段过滤,自然直接使用logstash是最好的方案。

  • 0 评论