我已经为scala配置了eclipse并创建了一个maven项目,并在Windows上编写了一个简单的字数计数spark作业。现在我的spark + hadoop安装在linux服务器上。如何从eclipse启动我的spark代码到spark集群(在linux上)?
任何建议。
答案 0 :(得分:1)
实际上,这个答案并不像你期望的那么简单。
我将做出许多假设,首先是你使用sbt
,第二个是你在基于linux的计算机上工作,第三个是最后一个是你的项目中有两个classes
,让我们说RunMe
和Globals
,最后一个假设就是你要在程序中设置设置。因此,在您的可运行代码中的某个位置,您必须具有以下内容:
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
请注意,因为我假设项目有两个或更多个类,您必须确定要运行的类。此外,我敢打赌,Yarn
和Mesos
的两种方法非常相似。
答案 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