在eclipse上本地运行spark代码,并在远程服务器上安装spark

时间:2015-11-08 06:49:36

标签: linux scala debugging apache-spark

我已经为scala配置了eclipse并创建了一个maven项目,并在Windows上编写了一个简单的字数计数spark作业。现在我的spark + hadoop安装在linux服务器上。如何从eclipse启动我的spark代码到spark集群(在linux上)?

任何建议。

4 个答案:

答案 0 :(得分:1)

实际上,这个答案并不像你期望的那么简单。

我将做出许多假设,首先是你使用sbt,第二个是你在基于linux的计算机上工作,第三个是最后一个是你的项目中有两个classes,让我们说RunMeGlobals,最后一个假设就是你要在程序中设置设置。因此,在您的可运行代码中的某个位置,您必须具有以下内容:

object RunMe {
  def main(args: Array[String]) {
    val conf = new SparkConf()
      .setMaster("mesos://master:5050") //If you use Mesos, and if your network resolves the hostname master to its IP.
      .setAppName("my-app")
      .set("spark.executor.memory", "10g")
    val sc = new SparkContext(conf)
    val sqlContext = new SQLContext()

    //your code comes here
  }
}

您必须遵循的步骤是:

  • 使用以下命令在项目根目录中编译项目:

    $ sbt assembly

  • 将作业发送到主节点,这是一个有趣的部分(假设您的项目中有下一个结构target/scala/,并且内部有一个文件.jar,它对应于编译项目)

    $ spark-submit --class RunMe target/scala/app.jar

请注意,因为我假设项目有两个或更多个类,您必须确定要运行的类。此外,我敢打赌,YarnMesos的两种方法非常相似。

答案 1 :(得分:0)

如果您正在Windows中开发项目并且想要在Linux环境中部署它,那么您可能希望创建一个可执行的JAR文件并将其导出到Linux的主目录并在spark脚本中指定相同的内容(在你的终端)。这是可能的,因为Java虚拟机的美妙。如果您需要更多帮助,请告诉我。

答案 2 :(得分:0)

要实现您想要的目标,您将需要:

首先:构建广口瓶(如果使用gradle-> fatJar或shadowJar)

第二:在您的代码中,生成SparkConf时,需要指定主地址,spark.driver.host和相对的Jar位置,例如:

SparkConf conf = new SparkConf()
.setMaster("spark://SPARK-MASTER-ADDRESS:7077")
.set("spark.driver.host", "IP Adress of your local machine")
.setJars(new String[]{"path\\to\\your\\jar file.jar"})
.setAppName("APP-NAME");

第三个::只需右键单击并从您的IDE中运行。就这样...!

答案 3 :(得分:-2)

您正在寻找的是创建SparkContext的主人。

您需要将master设置为要使用的群集。

我邀请您阅读Spark编程指南或按照入门课程了解这些基本概念。 Spark不是一个可以在一夜之间开始工作的工具,需要一些时间。

http://spark.apache.org/docs/latest/programming-guide.html#initializing-spark