我有一个包含3台机器的小型集群,以及另一台用于开发和测试的机器.在开发时,我设置SparkContext
为local
.当一切正常时,我想将我构建的Jar文件部署到每个节点.基本上我手动将此jar移动到群集并复制到群集共享的HDFS.然后我可以将代码更改为:
//standalone mode val sc = new SparkContext( "spark://mymaster:7077", "Simple App", "/opt/spark-0.9.1-bin-cdh4", //spark home List("hdfs://namenode:8020/runnableJars/SimplyApp.jar") //jar location )
在我的IDE中运行它.我的问题:有没有办法更容易将此jar移动到群集?
在Spark中,创建SparkContext的程序称为"驱动程序".将作业的jar文件提供给驱动程序的本地文件系统就足够了,以便将其提取并将其发送给主/工作人员.
具体来说,您的配置将如下所示:
//favor using Spark Conf to configure your Spark Context val conf = new SparkConf() .setMaster("spark://mymaster:7077") .setAppName("SimpleApp") .set("spark.local.ip", "172.17.0.1") .setJars(Array("/local/dir/SimplyApp.jar")) val sc = new SparkContext(conf)
在引擎盖下,驱动程序将启动一个服务器,工作人员将从驱动程序下载jar文件.因此,工作人员可以通过网络访问驱动程序,这一点很重要(通常也是一个问题).这通常可以通过在可从工作人员访问/路由的网络中的驱动程序上设置'spark.local.ip'来确保.