首先,marathon源码是由scala语言编写,由sbt进行项目构建的;与spark不同,spark是由maven进行项目构建;
方案一:使用intellij idea导入marathon源码【目前不可行】
A、使用intellij idea导入marathon源码
B、更新源码
C、利用intellij idea 进行编译,打包
D、上传服务器上,替换$marathon_home/target/scala-2.11里的包marathon-assembly-1.4.3.jar
E、重新启动marathon服务,发现报找不到主类
此问题,折腾了一下午,始终没解决掉,由于时间比较近,就暂时不再继续查找原因,等后期会继续分析原因。
方案二:直接替换marathon-assembly-1.4.3.jar里的class文件
这种方案,并不是很好,比较麻烦,只是其中一个方案而已;
目前我的需求是,研究分析marathon源码,主要是分析marathon是如何创建task的过程;
因此,并不是非常关心如何编译打包marathon源码的具体过程。
关键步骤如下:
A、https://github.com/mesosphere/marathon 下载源码到window上
B、使用intellij idea导入marathon源码
C、更新源码,如在启动类里,随便打印一条输出语句即可;如:
D、这里仅仅编译marathon源码即可,无需打包
编译,大概需要1分钟左右吧
找到编译好的class文件路径,如下所示:
E、利用Xftp工具,将服务器上,
F、利用好压将marathon-assembly-1.4.3.jar打开,将Main$.class,Main.class 直接拖进去,如果提示的话,选择全部替换即可
可以查看一下时间,查看是否更新成功
G、重新利用Xftp工具将marathon-assembly-1.4.3.jar jar包重新上传服务器上,替换旧的jar包,最好所有部署marathon的节点,全部要替换,不然,源码不同步了;
利用scp命令,传输到其他节点上去,
H、重新启动marathon服务,
我这里是用脚本执行的,命令如下:
方案三:
前一段时间,遇到一些麻烦,在公司里下载marathon源码后导入intellij idea始终失败,原因是,个别jar包始终下载失败;
解决措施:
周末在家里,本着不放弃的态度,重新导入marathon源码,居然成功了;
原因 :很有可能是因为公司使用的电信运营商与家里使用的电信运营商不是同一家,jar包下载成功。当然,也没具体查。
目前,
1、在window上使用intellijidea修改marathon源码
2、将marathon源码上传到服务器上
3、进入到marathon根目录下,
这里需要对build.sbt进行修改,不同的marathon源码版本,build.sbt是不一样的;
主要对两方面进行里修改
第一、 注释掉mesos-simulation变量,原因
-
编译打包时会尝试进行mesos的模拟,而这个过程,很有可能失败,
-
节省编译打包时间
第二、 注释掉此文件里,进行test的命令
情况一:如果该文件里,存在testSettings变量的话,将此变量的声明注释掉,以及使用到此变量的地方,也注释掉
情况二:如果该文件里,没有testSetting变量的话,我是将build.sbt文件里,凡是含有test单词的地方,全部注释掉了。
4、具体命令如下:
sbt-assembly工具,进行打包;
#sbt clean compile assembly
结束后,会在marathon源码的根目录下的target/scala-2.11中打包好目标jar包
原创文章,作者:3628473679,如若转载,请注明出处:https://blog.ytso.com/194522.html