运行fink应用程序建议(当然在ide之外)

wkyowqbh  于 2021-06-25  发布在  Flink
关注(0)|答案(2)|浏览(245)

我很乐意接受任何关于运行flink应用程序的建议,因为这似乎是一个雷区。我在这里说的是linux(centos7dist),因为我甚至不想分享windows给我带来的问题。
从命令行运行只是一个长期的灾难,它似乎永远不会运行。最初,我试着通过maven“正确”地完成这个任务,jars的lib文件夹和属性文件的config文件夹等等,这是一个灾难,因为它永远找不到任何东西(当通过java-jar启动时)。然后我尝试了maven shade插件来获得一个uber jar(在任何意义上它都是uber),但是他死了,flink也找不到自己的参数工具依赖性(另外,请注意,如果使用-dlog4j.configuration.file,上面的任何一个都不会太在意,因为它完全忽略了它)。因此,我们放弃了与java-jar anapp.jar有关的任何东西,继续,我们尝试通过web界面提交它。这至少显示了希望(实际上找到了parametertool),但它很快就会消失得很快。似乎上传把它(并在失败时删除它,所以很难说真的)放到/tmp目录中,从那里,我的应用程序需要的任何配置类或支持类都是不可见的,因为flink永远找不到它们。因此它崩溃了(并导致web应用程序崩溃,因此我必须从头开始重新加载uberjar并重新设置所有命令行选项)(好的方面是,我不需要把我的-dlog4j参数放进去,因为它在这里也被忽略了)。
任何建议欢迎。。。

cmssoen2

cmssoen21#

谢谢你这么说。确实完全抛弃了java-jar。通过在集群上作弊的方式取得了显著的进步,尽管仍然不理想。基本上,添加了一个命令行参数(可在web界面上使用),它允许我硬连线一个属性文件的位置,以便通过parametertool获取。然后,这个配置文件将包含支持资源的位置,以便应用程序能够愉快地运行。不过,我不得不在应用程序中添加一些额外的代码,以确定它是在windows还是linux上,这样它就可以从配置文件中选择硬编码位置的正确格式。当然,在理想的情况下,当我首先将文件放在/src/main/resources中时,我认为flink会在任何一个平台上自己找到它们(或者至少遵从java来正常地找到它们),但事实并非如此。硬编码(至少是通过属性文件配置的硬位置)现在就可以了。

zmeyuzjn

zmeyuzjn2#

(通过java-jar启动时…)
好吧,这是一面很大的红旗。
与在ide中运行作业(只运行类的main方法)不同,要在ide之外运行作业,必须将作业提交到flink集群。原因是在ide中,为了方便起见,集群会在作业执行时自动启动,但在ide之外,您通常希望重用现有集群。
假设您能够访问web界面,我假设您已经开始使用flink /bin/start-cluster.sh 或者 /bin/start-local.sh . 如果不是,现在正是做这件事的最佳时机。
要提交作业,请运行 /bin/flink run <your jar> . 应用程序所需的任何库,如果尚未包含在jar中,则必须放入 /lib flink发行版的目录。
注意,我建议首先提交捆绑的wordcount示例(/examples/batch/wordcount.jar),这样就不必马上处理依赖关系(让我们一次解决一个问题)

相关问题