1. 阐述Hadoop生态系统中,HDFS, MapReduce, Yarn, Hbase及Spark的相互关系,为什么要引入Yarn和Spark。
HDFS, MapReduce, Yarn, Hbase及Spark的相互关系如图所示:
从图中可以看出Hadoop的核心是HDFS和MapReduce,HBase、yarn、hive和spark都是在HDFS的基础上操作的。其中yarn是基于MapReduce上操作的,而spark中也有yarn模式,说明spark又基于yarn开发的。为什么要引入Yarn和Spark?我认为是yarn和spark为了解决MapReduce的读写速度慢的问题。
Yarn是一个分布式资源统一管理器,可以在上面运行各种计算框架(包括MapReduce、Spark、Storm、MPI等)。
Spark是一个快速、通用的大规模数据处理引擎,和MapReduce在同一个层级,主要解决分布式计算框架的问题。Spark可以说是对Hadoop MapReduce的改进,同时又兼容Hadoop家族,它可以运行在Yarn之上,负责存储的仍然是HDFS,它替代的是MapReduce计算框架,获取更高更快更强的计算速度。
2. Spark已打造出结构一体化、功能多样化的大数据生态系统,请简述Spark生态系统。
Spark的生态系统主要包含了Spark Core、Spark SQL、Spark Streaming、Structured Streaming、MLlib和GraphX等组件,各个组件的具体功能如下:
Spark Core:Spark Core包含Spark最基础和最核心的功能,如内存计算、任务调度、部署模式、故障恢复、存储管理等,主要面向批数据处理。
Spark SQL:Spark SQL是用于结构化数据处理的组件,允许开发人员直接处理RDD,同时也可查询Hive,HBase等外部数据源。
Spark Streaming:Spark Streaming是一种流计算框架,可以支持高吞吐量、可容错处理的实时流数据处理,其核心思路是将流数据分解成一系列短小的批处理作业,每个短小的批处理作业都可以使用Spark Core进行快速处理。
Structrued Streaming:Structured Streaming是一种基于Spark SQL引擎构建的、可扩展且容错的流处理引擎。
MLlib:MLlib提供了常用机器学习算法的实现,包括聚类、分类、回归、协同过滤等,降低了机器学习的门槛,开发人员只需具备一定的理论知识就能进行机器学习的工作。
GraphX:GraphX是Spark中用于图计算的API,可认为是Pregel在Spark上的重写和优化,GraphX性能良好,拥有丰富的功能和运算符,能在海量数据上自如地运行复杂的图算法。
3. 用图文描述你所理解的Spark运行架构,运行流程。