Spark简介
Apache Spark是一个快速通用的集群计算系统,是一种与Hadoop相似的开源集群计算环境,但是Spark在一些工作负载方面表现得更加优越。它提供了Java、Scala、Python和R的高级API,以及一个支持通用的执行图计算的优化引擎。它还支持高级工具,包括使用SQL进行结构化数据处理的Spark SQL、用于机器学习的MLlib、用于图处理的GraphX,以及用于实时流处理的Spark Streaming。
Spark的主要特点
- 快速
MapReduce主要包括Map和Reduce两种操作,且将多个任务的中间结果存储于HDFS中。与MapReduce相比,Spark可以支持包括Map和Reduce在内的多种操作,这些操作相互连接形成一个有向无环图(Directed Acyclic Graph, DAG),各个操作的中间数据会被保存在内存中。因此,Spark处理速度比MapReduce更快。 - 易用
Spark可以使用Java、Scala、Python、R和SQL快速编写应用程序。此外,Spark还提供了超过80个高级算子,使用这些算子可以轻松构建应用程序。 - 通用
Spark拥有一系列库,包括SQL和DataFrame、用于机器学习的MLlib、用于图计算的GraphX、用于实时计算的Spark Streaming,可以在同一个应用程序中无缝地组合这些库。 - 到处运行
Spark可以使用独立集群模式运行(使用自带的独立资源调度器,称为Standalone模式),也可以运行在Hadoop YARN、Mesos(Apache下的一个开源分布式资源管理框架)等集群管理器之上,并且可以访问HDFS、HBase、Hive等数百个数据源中的数据。
Spark的主要组件
Spark安装
- 下载解压缩spark-3.3.3-bin-hadoop3.tgz,重命名Spark安装目录为spark,在配置文件/etc/profile中添加:
export SPARK_HOME=/export/servers/spark
export PATH=$PATH:$SPARK_HOME/bin
- 执行 /etc/profile脚本,使配置生效
source /etc/profile
Spark运行模式
Spark主要有三种运行模式:
- 本地(单机)模式
本地模式通过多线程模拟分布式计算,通常用于对应用程序的简单测试。本地模式在提交应用程序后,将会在本地生成一个名为SparkSubmit的进程,该进程既负责程序的提交,又负责任务的分配、执行和监控等。 - Spark Standalone模式
使用Spark自带的资源调度系统,资源调度是Spark自己实现的 - Spark on YARN模式
以YARN作为底层资源调度系统以分布式的方式在集群中运行
Spark Shell的使用
Spark带有交互式的Shell,可在Spark Shell中直接编写Spark任务,然后提交到集群与分布式数据进行交互,并且可以立即查看输出结果。Spark Shell提供了一种学习Spark API的简单方式,可以使用Scala或Python语言进行程序的编写。
- 本地(单机)模式启动Spark Shell终端
spark-shell --master local
- Spark Standalone模式启动Spark Shell终端
spark-shell --master spark://虚拟机IP:7077
- Spark On YARN模式启动Spark Shell终端(别忘了开启Hadoop YARN)
spark-shell --master yarn