将数据转化为信息,将信息转化为洞察力。
1.引言
随着信息社会的快速发展,互联网上产生了海量数据,我们迎来了大数据时代。
常见的大数据处理框架有Hadoop、Spark、Flink(流式计算)等。
Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。
2.Hadoop
在介绍Spark之前,我们先对Hadoop进行一个简单的介绍。
Hadoop是由Java语言编写的,在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架。
- HDFS:Hadoop的分布式文件系统,处于Hadoop生态圈的下层,存储着所有的数据,支持着Hadoop的所有服务,它是谷歌文件系统(GFS)的开源实现。
- MapReduce:Hadoop的分布式计算模型,根据谷歌的MapReduce论文实现,是Hadoop的核心。基于这个框架,分布式并行程序的编写变得非常简单。Map-Reduce是一种处理数据的重要思想。
- HBase:基于HDFS的分布式数据库,擅长实时地随机读/写超大规模数据集。HBase是对谷歌地Bigtable的开源实现,但和Bigtable也有很多不同之处。
3.Spark
相比于Hadoop,Spark的一个重要特点就是基于内存,核心技术是弹性分布式数据集(RDD)。
这里引用一篇技术文章(juejin.cn/post/684490…)的图片:
Spark的数据处理引擎是Spark Core, 其中提供了Spark最基础最核心的功能。上图描述了Spark生态的四层:
- 应用层
- 数据处理引擎
- 资源管理层
- 数据存储层
需要注意的是,其中也使用了Hadoop的一些组件,如HDFS、 Hive、HBase、Yarn等。
- 在 Spark 集群中由一个节点作为 Driver 端创建 SparkContext
- SparkContext 初始化包括初始化监控页面 SparkUI、执行环境 SparkEnv、安全管理器 SecurityManager、stage 划分及调度器 DAG Scheduler(划分作业)、task 作业调度器 TaskSchedulerImpl 、与 Executor 通信的调度端 CoarseGrainedSchedulerBackend。
- Spark 应用程序的入口负责调度各个运算资源,协调各个 Worker Node上 的 Executor。根据用户输入的参数会产生若干个 workr,workr 节点运行若干个 executor,一个 executor 是一个进程,运行各自的 task,每个 task 执行相同的代码段处理不同的数据。
Spark的计算框架如下:
4.总结
Spark生态非常复杂,要想深刻理解,需要加以实践。本文是大数据专栏的第一篇,后面将持续分享一些大数据相关的文章。