部署及程序运行
Local模式,就是运行在本地,如果不加任何配置,Spark模式设置为Local模式,以WordCount为例,Local模式下的应用程序的启动命令如下
./bin/run-example org.apache.spark.examples.JavaWordCount local
在WordCount代码的具体实现中,是根据用户传入的参数来选择运行的模式的,如果需要自己在代码中指定运行模式,可以通过在代码中配置Master为local来实现
val conf=new SparkConf();//创建SparkConf对象
conf.setAppName(“WordCount”)//设置应用程序的名称,在程序运行的监控界面可以看到这个名
conf.setMaster(“local”) //此时,程序在本地执行,不需要安装spark集群
当然,为了使应用程序能够更灵活地在各种部署环境下使用,不建议把与运行环境相关的设置直接在代码中写死。
内部实现原理
Local本地模式使用LocalBackend配置TaskSchedulerImp1,内部逻辑结构如下
LocalBackend相应Scheduler的ReviveOffers请求,根据可用的CPU核的设定值[N]直接生成CPU资源返回给Scheduler,并通过Executor类在线程池中依次启动和运行Scheduler返回的任务列表,其核心事件循环由内部类LocalActor以Akka Actor的消息处理形式来实现
因为Local模式无须配置,同时所有的代码都在本地进程中执行,所以常常可以作为快速验证代码和跟踪调试的手段