文章目录
第一部分:dive in Spark
Spark简述
- 旨在“使数据分析更快”的大数据处理框架。速度进步明显。
- 易用:使用更加简洁优雅的Scala语言编写,但同时也支持多种语言编程。
- 有完整强大的技术栈。
- 适应能力强,运行模式多样。
- Spark提供的生态系统可一站式满足批处理、交互式查询和流数据处理这三个实际应用中基本的大数据处理类型。
- 多数情况下,Spark的任务是专注于数据的分析处理,数据存储仍靠Hadoop的HDFS。
Scala简述
- A Scalable Language
- 语法简洁,速度快,兼容JAVA
- 提供了REPL(Read-Eval-Print Loop 交互式解释器),提升开发效率。
Spark与Hadoop相比
Hadoop缺陷: 一、难以描述复杂的数据处理过程。二、磁盘IO开销大。三、延迟高。四、偏底层。
Spark优点: 一、不仅局限于Map和Reduce,提供了更多数据操作类型。二、提供内存运算,大大降低IO开销。三、提供了更多简洁的API。四、交互式编程。
基本概念
各种概念之间的关系
Spark运行架构
Spark执行过程
Spark应用程序以进程集合为单位在分布式集群上运行,通过driver程序的main方法创建的SparkContext对象与集群交互。
1、Spark通过SparkContext向Cluster manager(资源管理器)申请所需执行的资源(cpu、内存等)
2、Cluster manager分配应用程序执行需要的资源,在Worker节点上创建Executor
3、SparkContext 将程序代码(jar包或者python文件)和Task任务发送给Executor执行,并收集结果给Driver。
关于RDD
(1)RDD的设计背景
MP开销大
(2)RDD概念
(3)RDD执行过程
下图中的A-F都是RDD
(4)RDD特性
(5)RDD的依赖关系
(6)stage的划分
遇到宽依赖就断开,分成两个stage
stage有两种类型,分别是:
RDD运行过程
第二部分:back to Hadoop
Hadoop复习部分主要参考了Maneesh Varshney的《Hadoop HDFS 運作原理漫畫圖解》,链接给在了最后的参考部分。
以下是具体的总结:
Hadoop 的组成
(1) Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统;
(2) Hadoop MapReduce:一个分布式的离线并行计算框架;
(3) Hadoop YARN:作业调度与集群资源管理的框架;
(4) Hadoop Common:支持其他模块的工具模块。
HDFS 的架构
(1) NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的 DataNode 等;
(2) DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和;
(3) Secondary NameNode(2nn):用来监控 HDFS 状态的辅助后台程序,每隔一段时间获取 HDFS 元数据的快照。
MapReduce 的架构
MapReduce 将计算过程分为两个阶段:Map 和 Reduce
(1) Map 阶段并行处理输入数据
(2) Reduce 阶段对 Map 结果进行汇总