当前,Flume,Kafka和Spark已经成为一个比较成熟的构建实时日志采集分析与计算平台组件,例如,通过收集相应数据统计某个应用或者网站的PV/UV信息,统计流量以及用户分布,对访问日志进行实时或者离线分析,以追踪用户行为或者进行系统风险监控等。通常在数据采集的时候会选择将Kafka作为数据采集队列,将采集的数据首先存储到Kafka中,然后用Spark对kafka中读取的数据进行处理。
1.Spark简介
Spark是一个快速,通用的计算引擎,是Apache一个顶级项目。
Spark用Scala语言开发,提供了Java、Scala、Python、R语言相关的API,运行在JVM之上,因此在运行Spark之前需要保证已经安装JDK环境。
Spark可以很方便的与大数据处理相关的框架(如Flume、Kafka、HDFS、Hbase等)、工具进行整合应用;
通常我们说的Spark,其实是指Spark核心或者Spark生态圈的统称,包括Spark的任务调度、内存管理、容错机制等基本功能。
Spark包括以下组件:
- Spark SQL:
- Spark Streaming:
- Mlib:
- GraphX:
2.Spark
所谓的智能投顾,简而言之就是通过机器学习相关的算法基于大数据进行分析处理为用户投资决策提出参考指标甚至自动帮助用户进行投资决策。
例如:在证券行业,当前比较热门的“智能选股”就属于“智能投顾”范畴的一类典型应用,金融机构或者第三方根据股票行情、技术指标、财务指标、基本面指标等多种维度和策略进行分析计算,为股民提供各类选股的方案;
应用描述
实时统计有单时间内用户搜索的关键词,并将搜索次数最高的前10个词输出
重点是使用Spark Streaming 与Kafka集成的应用,因此并不关注业务本身的完整性。
Spark官方网站关于Spark Streaming与Kafka集成给出了两个依赖版本,一个是基于Kafka0.8之后的版本:spark-streaming-kafka-0-8,一个是基于kafka 0.10之后的版本:spark-streaming-kafka-0-10;
小结
这一章中主要是对流式处理程序进行了讲解,在实际应用中,需要根据实际的业务场景,编写出满足业务场景的流式处理程序;