1. Spark是什么
Apache Spark是一个在集群上运行的统一计算引擎以及一组并行数据处理软件库。
Spark是目前最流行的开源大数据处理引擎。
它支持多种编程语言(eg: Scala, Java, Python, R)
提供支持SQL, 流处理, 机器学习等多种任务的软件库。
Spark的组件架构图

2. 启动Spark
准备条件:
从Spark官网下载Spark包(Pre-built for Hadoop 2.7 and later)
在bash中设置SPARK_HOME并加入到Path
-
启动Scala控制台
spark-shell -
启动Python控制台
pyspark -
启动SQL控制台
spark-sql
3. Spark的基本架构
Spark的软件架构为管理和协调跨多态计算机(服务器)的计算任务。
Spark应用程序由一个驱动器进程和一组执行器进程组成。
-
驱动器进程(Spark应用程序的核心)
驱动器进程运行main()函数
驱动器进程位于集群中的一个节点上
驱动器进程负责三件事:
a. 维护Spark应用程序的相关信息
b. 回应用户的程序或输入
c. 分析任务并分发给若干执行器进行处理 -
执行器
执行器负责执行驱动器分配给它的实际计算工作
执行器负责两件事:
a. 执行分配的代码
b. 将计算状态报告给驱动器
Spark应用程序架构图

4. 一些关键概念
-
DataFrame
DataFrame是Spark中最常见的结构化API。
DataFrame是包含行和列的数据表。
也许有人会说,这和我们熟悉的Excel的电子表格有什么区别呢?
那我告诉你,区别就在于:
普通的电子表格是位于一台计算机上的,而Spark DataFrame是可以跨越数台甚至数千台计算机的。
事实上,它是一个分布式表格。
Spark DataFrame架构图

注: DaraFrame概念并不是Spark独有的,Python和R语言都有类似的概念。但是,Python和R的DataFrame只存在于一台机器上,而Spark的DataFrame存在于多态机器上。并且,由于Spark具有Python和R的接口,可以轻易地将Python和R的DataFrame转换为Spark的DataFrame。
- 数据分区
为了让多个执行器并行地工作,Spark将数据分解成多个数据块,每个数据块叫做一个分区。
分区在物理上体现为在集群中的一台物理机上的多行数据的集合。
网友评论