【Kafka与Spark集成系列一】 Spark入门

【Kafka与Spark集成系列一】 Spark入门

Spark是一个用来是实现快速而通用的集群计算的平台。Spark是UC Berkeley AMP Lab(加州大学伯克利分销的AMP实验室)所开源的类MapReduce的通用并行框架, 现在已经是Apache中的一个顶级项目。Spark使用Scala语言开发,支持Scala、Java、Python、R语言相关的API,运行于JVM之上。Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性。Spark适用于各种各样原先需要多种不同的分布式平台的场景,包括批处理、迭代计算、交互式查询、流处理等。

如下图所示,Spark生态圈即BDAS(伯克利数据分析栈)所包含的组件有Spark Core、Spark Streaming、Spark SQL、MLlib和GraphX,它们都是由AMP实验室提供,能够无缝地继承,并提供一站式解决平台。

Spark Core实现了Spark的基本功能,包含任务调度、内存管理、错误恢复以及与存储系统交互等模块。Spark Streaming属于Spark Core API的扩展,支持实时数据流的可扩展、高吞吐、容错的流处理。Spark SQL是Spark的一个结构化数据处理模块,提供了DataFrame/Dataset的编程抽象,可以看作是一个分布式查询引擎。从Spark2.0开始又引入了Structured Streaming,它是建立在Spark SQL之上的可扩展和高容错的流处理引擎。MLlib是Spark提供的机器学习功能的程序库,它提供了很多种机器学习算法,包括分类、回归、聚类、协同过滤等,还提供了模型评估、数据导入等额外的支持功能。GraphX是用来操作图的程序库,可以进行并行的图计算。

Spark具有很强的适应性,能够读取HDFS、Cassandra、HBase等为持久层读写原生数据,资源管理采用Mesos、YARN、Kubernetes等集群资源管理模式,或者Spark自带的独立运行模式以及本地运行模式。

Spark具有一个庞大的生态圈,付诸于生产时还需要考虑参数调配、容错处理、监控、性能优化、存储、调度、部署等多个环节,涉及到具体的方方面面,仅以一个小系列的内容是无法穷尽的。本系列的主旨也并非简单的讲解Spark,而是要讲解Kafka与Spark之间的集成细节。本系列的文章会以尽量少的篇幅让读者对Spark能够有一个初步的了解,并且会以一个合适的篇幅来讲解Kafka与Spark Streaming的集成以及Kafka与Structured Streaming的集成。


欢迎支持笔者的作品《深入理解Kafka: 核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客(ID: hiddenkafka)。
本文作者: 朱小厮

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×