Spark初学者指南:从环境配置到HelloSpark

需积分: 10 20 下载量 57 浏览量 更新于2024-09-11 1 收藏 238KB PDF 举报
"Spark入门教程,适合新手通过CDH的quickstartvm进行学习,涉及Hadoop 2.5.0-cdh5.2.0和Spark 1.1.0版本。" Spark是一种快速、通用且可扩展的大数据处理框架,其设计理念是提供内存计算以加速数据处理速度。在本入门教程中,我们将主要关注如何配置环境以及执行第一个Spark程序——HelloSpark。 首先,我们需要搭建测试环境。这里使用的是Cloudera Distribution Including Apache Hadoop (CDH) 提供的quickstartvm,这是一个预装了Hadoop和Spark等组件的虚拟机,方便初学者快速上手。在该环境中,Hadoop的版本是2.5.0-cdh5.2.0,而Spark的版本为1.1.0。 要运行HelloSpark示例,你需要将`spark-examples` JAR文件移动到Spark的lib目录下。这一步是为了确保系统能找到并执行内置的示例程序。执行`./bin/run-example SparkPi 10`命令,将会运行一个计算圆周率的简单任务,它会模拟抛掷10个硬币并统计正面朝上的次数,以此来近似π值。 执行过程中,可以看到Spark的各个组件是如何启动和协同工作的。首先是程序检查IP、主机名和SecurityManager,这是为了确保安全性和网络通信。接着,SparkDriver被启动,它使用Akka框架建立一个TCP监听器,监听地址为`akka.tcp://sparkDriver@192.168.128.131:42960`。Driver负责任务的调度和管理,包括MapOutputTracker和BlockManagerMaster,它们分别跟踪数据分片的位置和管理内存中的数据块。 Spark内部的一个关键组件是BlockManager,它在每个节点上创建一个实例,本例中节点的IP是192.168.128.131,端口为41898。BlockManager包含一个MemoryStore,用于存储中间数据。此外,Spark还启动了一个HTTP file server,通过SocketConnector监听所有IP的55161端口,用于数据交换。 SparkUI是Spark的Web界面,提供对作业和任务状态的可视化监控,本例中它位于http://192.168.128.131:4040。通过HTTP协议,可以上传本地程序的JAR包,并将其加载到classloader,这样就可以执行用户自定义的代码了。 当作业开始时,例如计算SparkPi,它会被分解为一系列的任务(Stage)。在这里,我们看到有一个Stage0,它是一个MappedRDD[1]。Spark会提交缺失的任务到TaskScheduler,通过网络获取并执行JAR包中的任务代码。任务完成后,结果将返回给Driver,然后DAGScheduler会确认Stage的所有task是否都已完成。在localhost上的TaskSetManager负责收集这些完成的任务。当所有任务都成功执行后,Job就会宣告结束,SparkUI和DAGScheduler也会停止服务。 这个Spark入门教程覆盖了从环境配置、基本操作到Spark核心组件的工作流程,是新手学习Spark的良好起点。理解这些基础知识对于后续深入学习Spark的分布式计算、数据处理和优化至关重要。