为每个新的用例

时间:2017-08-20 14:04:31

标签: apache-spark batch-processing bigdata

我在网络中运行100s计算机,100s用户访问这些计算机。每天,所有这些机器都会生成数千或更多syslogsSyslogsystem failures可以是任何日志,包括network, firewallapplication errorsMay 11 11:32:40 scrooge SG_child[1829]: [ID 748625 user.info] m:WR-SG-BLOCK-111- 00 c:Y th:BLOCK , no allow rule matched for request with entryurl:http:url on mapping:bali [ rid:T6zcuH8AAAEAAGxyAqYAAAAQ sid:a6bbd3447766384f3bccc3ca31dbd50n ip:192.24.61.1] 等。

示例日志如下所示

Timestamp, loghost, msg, process, facility

从日志中,我提取HDFS等字段并将其存储在Logs中。 json format存储在web application中。现在,我想建立一个系统,我可以在logs中输入查询并对{foreach $latest_article.0 as $article} {include file='include/article-latest.html' class='col-50' title=$article.TITLE tag=ARTICLE_CATEGORY.$article.CATEGORY img=$article.THUMBNAIL view='3526' share='564'} {/foreach} 进行分析。我希望能够进行像

这样的查询
  • 获取邮件中包含“防火墙已阻止”关键字的日志。
  • 获取为User Jason生成的日志
  • 获取包含“拒绝访问”的日志信息。
  • 获取按用户,进程,日志主机等分组的日志计数。 我想要做成千上万种不同类型的分析。要添加更多内容,我需要历史数据和实时数据的组合结果,即组合批量和实时结果。

现在我的问题是

  • 要获得批处理结果,我需要运行批处理spark作业。我是不是该 为用户制作的每个唯一查询创建批处理作业。如果我 这样做,我将最终创建1000个批处理作业。如果不是,那是什么样的 我应该运行批处理作业,以便我可以获得任何类型的结果 分析
  • 我认为这是正确的方法。如果我的方法本身是错误的,那么请分享应该是正确的程序。

2 个答案:

答案 0 :(得分:0)

尽管可能(例如通过thrift服务器), Apache Spark的主要目标不是查询引擎,而是为流和批处理数据源构建数据管道

如果转换只是投影字段而您想启用即席查询,听起来就像您需要另一个数据存储 - 例如ElasticSearch。另外一个好处是它带有一个Kibana,可以在一定程度上实现分析。

另一种选择是使用SQL引擎,例如 Apache Drill

答案 1 :(得分:-1)

Spark可能不是正确的工具,除非这些日志的大小证明了选择的合理性。

这些日志是几千兆字节的顺序吗?然后使用splunk。

这些日志的数量级是几百千兆字节吗?然后使用elasticsearch和Kibana在上面。

它们是太字节的数量级吗?然后你应该考虑一些更强大的分析架构,这里有许多替代方案,基本上以与Spark相同的方式进行批处理作业,但通常以更智能的方式。