Apache Spark是一种快速通用的集群计算系统。它提供Java,Scala,Python和R 的高级API,以及支持通用执行图的优化引擎。它还支持一组丰富的更高级别的工具,包括Spark SQL用于SQL和结构化数据的处理,MLlib机器学习,GraphX用于图形处理和Spark Streaming。
Spark中的安全性默认为OFF。这可能意味着您很容易受到默认攻击。在下载和运行Spark之前,请参阅Spark Security。
从项目网站获取spark,本文档适用于Spark版本2.4.3。Spark使用Hadoop的客户端库来实现HDFS和YARN。下载是针对少数流行的Hadoop版本预先打包的。还可以通过下载Hadoop免费二进制文件并使用任何Hadoop版本运行Spark 。Scala和Java用户可以使用Maven坐标在他们的项目中包含Spark,并且将来Python用户也可以从PyPI安装Spark。
也可以通过源码构建spark
spark 运行在Windows和类UNIX系统(例如Linux,Mac OS)的笔记本上运行也是很容易的。只需要安装java 配置PATH,或者JAVA_HOME指向Java安装的环境变量即可。
Spark运行在Java 8 +,Python 2.7 + / 3.4 +和R 3.1+上。对于Scala API,Spark 2.4.3使用Scala 2.12。您需要使用兼容的Scala版本(2.12.x)。
注意:spark2.2.0版本移除了Java 7, Python 2.6 and Hadoop 2.6.5 之前版本的支持。spark2.3.0版本移除了scala2.10的支持。spark2.4.1 废弃了Scala2.11 将在spark3.0中移除。
Spark附带了几个示例程序。Scala,Java,Python和R示例都在 examples/src/main目录中。要运行其中一个Java或Scala示例程序,请 bin/run-example [params]在顶级Spark目录中使用。
/bin/run-example SparkPi 10
还可以通过Scala shell的修改版本以交互方式运行Spark。这是学习框架的好方法。
./bin/spark-shell --master local[2]
该–master选项指定分布式集群的 主URL,或者local使用一个线程local[1]在本地运行,或者使用N个线程在本地运行 。有关选项的完整列表,如下表
Master Url | 含义 |
---|---|
local | 使用一个工作线程在本地运行Spark(即根本没有并行性)。 |
local[K] | 使用K个工作线程在本地运行Spark(理想情况下,将其设置为计算机上的核心数)。 |
local[K,F] | 使用K个工作线程和F maxFailures在本地运行Spark(有关此变量的说明,请参阅spark.task.maxFailures) |
local[*] | 使用与计算机上的逻辑核心一样多的工作线程在本地运行Spark。 |
local[*,F] | 使用与计算机和F maxFailures上的逻辑核心一样多的工作线程在本地运行Spark |
spark://HOST:PORT | 连接到给定的Spark独立集群主服务器。端口必须是主服务器配置使用的端口,默认为7077。 |
spark://HOST1:PORT1,HOST2:PORT2 | 连接到给zookeeper集群,这个列表需要包含所有的zookeeper主机。默认端口7077 |
mesos://HOST:PORT | 连接到给定的Mesos群集 |
yarn | 连接到yarn |
k8s://HOST:PORT | 连接到k8s集群 |
Spark还提供了一个Python API。要在Python解释器中以交互方式运行Spark,请使用 bin/pyspark:
./bin/pyspark --master local[2]
Python中也提供了示例应用程序。例如,
./bin/spark-submit examples/src/main/python/pi.py 10
Spark还提供了R 的API
./bin/sparkR --master local[2]
对应的例子
./bin/spark-submit examples/src/main/r/dataframe.R
spark 可以单独运行、通过集群管理器运行。目前有一下几种部署方式