转载请注明出处:http://blog.csdn.net/dongdong9223/article/details/84761985
本文出自【我是干勾鱼的博客】
Ingredients:
-
Java:Java SE Development Kit 8u162(Oracle Java Archive),Linux下安装JDK修改环境变量
-
Scala:scala-2.12.7.tgz for Mac OS X, Unix, Cygwin(ALL AVAILABLE VERSIONS),DOWNLOAD
-
Spark:spark-2.4.0.tgz(Spark release archives),Download Apache Spark™
1 环境准备
1.1 Java下载及安装
参考安装Java,并做好相应配置。Java安装在目录:
/opt/java/jdk1.8.0_162
1.2 Scala下载及安装
参考安装Scala,并做好相应配置。Scala安装在目录:
/opt/scala/scala-2.12.7
1.3 Spark下载
下载spark-2.4.0.tgz,将其解压缩到:
/opt/spark/
目录下,解压缩之后路径为:
/opt/spark/spark-2.4.0-bin-hadoop2.7
2 Spark概览
Spark Overview这里面给出了一个Running the Examples and Shell,里面给出了使用Scala, Java, Python and R如何运行Spark的小例子。这些例子都在Standalone环境下执行,即解压缩Spark之后就可以运行,不需要Hadoop环境的支持。
2.1 示例
./bin/run-example SparkPi 10
这里输出内容较多,也可以:
./bin/run-example SparkPi 2>&1 | grep “Pi is”
输出结果:
Pi is roughly 3.136235681178406
2.2 shell脚本
这里有一个使用Scala运行的方式:
./bin/spark-shell.sh --master local
这里:
–master
的意义可以参考master URL for a distributed cluster。
然后会进入Scala终端环境,在Scala环境中,输入:
scala> sc.textFile(“README.md”).filter(line => line.contains(“Spark”)).count
res0: Long = 20
这里面是在统计README.md文件中包含字符串“Spark”的行数,能够看出有20行包含这个字符串
3 集群架构
3.1 概述
Spark官网在Launching on a Cluster中给出了Cluster Mode Overview,也就是给出了一个简短的概览,来说明在Spark中是如何在集群环境中运行的,如图所示:
3.2 组件
能够看出Spark的运行逻辑还是挺明显的,这里面包括以下几个组件:
-
SparkContext: SparkContext是Spark的入口点,可以理解为应用程序的main函数。虽然在一个JVM进程中可以创建多个SparkContext,但是只能有一个是active状态。如果想创建一个新的SparkContext实例,必须先调用stop方法来停掉当前active类型的SparkContext实例。从上图也容易看出,SparkContext处于Driver Program的核心位置,所有与Cluster Manager、Worker Node有关的交互操作都需要SparkContext来完成。
-
Worker Node: Worker Node是执行计算等任务处理的节点,是实际计算工作的执行者,它是集群中任何可以运行Application代码的节点,类似于YARN中的NodeManager节点。在Standalone模式中指的就是通过Slave文件配置的Worker节点,在Spark on Yarn模式中指的就是NodeManager节点。
-
Cluster Manager: Cluster Manager集群管理器,应用程序申请的资源进行管理
3.3 Cluster Manager的种类
目前Spark的Cluster Manager有以下几种: