每个Spark
应用(application
)都包含一个用来在集群(cluster
)上启动各种并行操作的驱动程序(driver program
)。驱动程序不仅包含了Spark
应用的main
函数,还定义了集群上的分布式数据集(distributed dataset
),而且会对这些数据集进行各种操作。在你使用Spark Shell
进行交互操作时:
[root@Fedora bin]# ./spark-shell
scala> sc.parallelize(1 to 1000).count()
res0: Long = 1000
Spark Shell
自身就是驱动程序。
驱动程序通过一个SparkContext
对象来访问Spark
,这个对象代表一个针对计算集群(computing cluster
)的连接。Spark Shell
会自动产生一个叫sc
的SparkContext
对象,所以在上面的例子中可以直接使用sc
。在Spark Shell
中输入sc
,可以看到它的类型信息:
scala> sc
res0: org.apache.spark.SparkContext = org.apache.spark.SparkContext@45707f76
有了SparkContext
对象之后,就可以用它来产生数据集,然后在数据集上进行各种操作。而为了进行这些操作,驱动程序要管理一群被称作“executor
”的节点(node
)。下图描述了Spark
如何在集群上执行任务:
参考资料:
《Learning Spark》。