Spark技术栈中的组件
(1)问题分析
考官主要考核你对Spark的整体认识,以便于在实际工作中能够灵活应用spark的不同技术栈。
(2)核心答案讲解
Spark技术栈概述
相对于第一代的大数据生态系统Hadoop中的MapReduce,Spark 无论是在性能还是在方案的统一性方面,都有着极大的优势。Spark框架包含了多个紧密集成的组件。主要有Spark Core、Spark Streaming、Spark SQL等。
Spark core
是其它组件的基础,spark的内核,主要包含:有向循环图、RDD、Lingage、Cache、broadcast等,封装了底层通讯框架,实现了Spark的作业调度、内存管理、容错、与存储系统交互等基本功能,并针对弹性分布式数据集提供了丰富的操作,是Spark的基础。
SparkStreaming
SparkStreaming是一个对实时数据流进行高通量、容错处理的流式处理系统,可以对多种数据源(如Kafka、Flume、Twitter、Zero和TCP 套接字)进行类似Map、Reduce和Join等复杂操作,将流式计算分解成一系列短小的批处理作业。
Spark sql
Shark是SparkSQL的前身,Spark SQL的一个重要特点是其能够统一处理关系表和RDD,使得开发人员可以轻松地使用SQL命令进行外部查询,同时进行更复杂的数据分析。
(3)问题扩展
spark技术栈中,应用最多的是SparkCore、SparkStreaming和SparkSql。除此之外它还有一些其他的技术栈:
BlinkDB
是一个用于在海量数据上运行交互式 SQL 查询的大规模并行查询引擎,它允许用户通过权衡数据精度来提升查询响应时间,其数据的精度被控制在允许的误差范围内。
MLBase
MLBase是Spark生态圈的一部分专注于机器学习,让机器学习的门槛更低,让一些可能并不了解机器学习的用户也能方便地使用MLbase。MLBase分为四部分:MLlib、MLI、ML Optimizer和MLRuntime。
GraphX
GraphX是Spark中用于图和图并行计算。
总结:了解spark的技术栈,那么当你在工作中遇到不同的业务需求时,就可以灵活的使用spark自带的技术栈进行实现,而不必再额外集成新的技术框架。
(4)结合项目中使用
在项目中,如果需要进行离线统计分析,对实时性要求不高,可以使用SparkSql;
如果需要进行实时或近实时的计算分析,就使用SparkStreaming。