查看原文
其他

浅析日志模式识别技术(Spark)原理

70号实验室 中国金融电脑+ 2022-12-13

22


星期五

2021年1月


验“金”室


近年来,随着金融业务交易量不断上涨,业务交易系统出现生产问题风险的概率也大大增加,给应用的运维、监控、报警带来很大的挑战。在此背景下,智能运维概念逐渐火热,实时分析交易日志进行故障预测和根因定位已是通用方案,并以“日志模式识别”之名大行其道。据悉,很多业界公司是基于Spark、Elasticsearch等技术框架,进行海量日志数据实时分析处理,实现“日志模式识别”。本文旨在概述Spark的技术原理,着重分析技术特点,对技术细节不做过多描述。


一、 Spark的概念及特点


1.Spark的概念

Spark是一种快速、通用、可扩展的大数据分析引擎,是基于内存计算的大数据并行计算框架。Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量廉价硬件之上,形成集群。另外,以Spark为中心的开源生态系统,将在应用程序、运行环境和数据源等方面得到巨大的发展,包括与所有系统相关的基本数据,如图1所示。


图1 Spark的开源生态系统


 2.Spark的特点

Spark具有快、易用、通用、兼容性好四大特点:

与Hadoop的MapReduce相比,Spark基于内存的运算速度要快100倍以上,基于硬盘的运算也要快10倍,Spark实现了高效的DAG执行引擎,从而可以通过内存来高效处理数据流;

易用

Spark不仅支持Java、Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同的应用,除此之外,Spark支持交互式的Python和Scala的shell,可以十分便捷地在这些shell中使用Spark集群来验证解决问题的方法;

通用

Spark提供了统一的解决方案,可以用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX),这些不同类型的处理都可以在同一个应用中无缝使用。另外,Spark还可以很好地融入Hadoop的体系结构中,可以直接操作HDFS,并提供Hive on Spark、Pig on Spark的框架集成Hadoop;

兼容性好

Spark可以十分便捷地与其他开源产品融合。此外,Spark还提供了在EC2上部署Standalone的Spark集群的工具。


二、Spark的体系结构及运行机制


1.Spark的体系结构

Spark主要包括Spark Core和在Spark Core基础之上建立的应用框架Spark SQL、Spark Streaming、MLlib和GraphX。


Core库中主要包括上下文(Spark Context)、抽象数据集(RDD、DataFrame和DataSet)、调度器(Scheduler)、洗牌(shuffle)和序列化器(Serializer)等。Spark系统中的计算、IO、调度和shuffle等系统基本功能都在其中。


Core库之上根据业务需求分为用于交互式查询的SQL、实时流处理Streaming、机器学习Mllib和图计算GraphX四大框架,除此外还有一些其他实验性项目如Tachyon、BlinkDB和Tungsten等。Spark体系结构如图2所示。


图2 Spark的体系结构


2.Spark的运行机制

Spark集群的运行机制如图3所示。


图3 Spark的运行机制


Spark应用在集群上作为独立的进程组来运行,在应用程序的main进程中通过SparkContext来协调(称之为driver进程)。


具体地说,为了运行在集群上,SparkContext可以连接至几种类型的Cluster Manager(一般称为Master,既可以用Spark自己的Standlone Cluster Manager或者Mesos,也可以使用YARN),它们会分配应用的资源。一旦连接上,Spark获得集群节点上的Executor,这些进程可以运行计算并且为你的应用存储数据。接下来,它将发送应用代码(通过JAR或者Python文件定义传递给SparkContext)至Executor。最终,SparkContext将发送Task到Executor进行运行。


三、Spark的两种高可用实现


1. 基于文件系统的单点恢复

基于文件系统的单点恢复主要用于开发或测试环境。当Spark提供目录保存Spark Application和worker的注册信息,并将他们的恢复状态写入该目录中,这时,一旦Master发生故障,就可以通过重新启动Master进程,恢复已运行的Spark Application和worker的注册信息。


2. 基于Zookeeper的Standby Masters

ZooKeeper提供了一个Leader Election机制,利用这个机制可以保证虽然Spark集群存在多个Master,但是只有一个是Active的,其他的都是Standby。加入ZooKeeper的集群整体架构如图4所示。


图4 Spark的高可用(基于Zookeeper)


四、Spark的应用


Spark能够一次处理PB级的数据,也可以分布在数千个协作的物理或虚拟服务器集群中,同时有一套广泛的开发者库和API,支持多种编程语言的灵活性特点,能够适合各种环境。


Spark有以下两种最常见的应用场景:


  • 一是离线场景,可以以时间为维度,几年累积的数据集,或者以业务为维度,某个领域的大数据集等,这种数据我们一般叫做离线数据或者冷数据。


  • 二是实时场景,网站埋点、实时从前端页面传输过来的数据、业务系统或物理硬件实时传输过来的数据、硬件信号或者图像数据等,需要实时去计算处理并且返回结果的数据。


1.Spark的业界应用

Spark得到了众多大数据公司的支持,这些公司包括Hortonworks、IBM、Intel、Cloudera、MapR、Pivotal、百度、阿里、腾讯、京东、携程、优酷土豆。当前,百度的Spark已应用于凤巢、大搜索、直达号、百度大数据等业务;阿里利用GraphX构建了大规模的图计算和图挖掘系统,实现了很多生产系统的推荐算法;腾讯Spark集群达到8000台的规模(2014年),是当时已知的世界上最大的Spark集群。Spark的大规模应用示意如图5所示。


图5 Spark的大规模应用


2.Spark在金融行业的应用

近年来,金融交易系统的复杂度呈指数级增长,带巨大来的运维挑战。采用Spark、Elasticsearch技术框架并结合机器学习算法实现“日志模式识别”,能够协助生产运维解决日志分析慢、根因定位难的问题,逐步实现智能运维,保障生产系统的平稳有序和金融交易的高效可靠。基于Spark的日志模式识别系统架构如图6所示。


图6 基于Spark的日志模式识别系统架构


往期推荐


微表情意图识别在银行智慧化金融服务中的应用


大数据存算分离研究和实践——企业级大数据平台存算分离架构之改造


大数据存算分离研究和实践——存算分离架构与存算一体架构之比较


浅析并发编程模型——Actor模型


实时即未来:下一代大数据计算引擎



FCC30+

长按左边二维码

关注我们不迷路


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存