欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Flink问题整理

时间:2023-07-22
问题1:bin/config.sh: line 32: syntax error near unexpected token

执行 sh start-cluster.sh脚本启动集群,报错:

/xxx/bin/config.sh:行32: syntax error near unexpected token `(`/xxx/bin/config.sh:行32: ` done << (find "$Flink_LIB_DIR" ! -type d -name '*.jar' -print0 | sort -z)'

解决

不要使用sh来启动,使用 bash start-cluster.sh 或 ./start-cluster.sh来启动。

这是因为start-cluster.sh文件中有sh不支持的语法。下面说明下bash和sh的区别:

bash是sh的增强版,sh全称是Bourne Shell,bash全称是Bourne Again Shell,linux系统默认使用的就是bash的posix模式。可以查看 echo $SHELL。值为/bin/bash。虽然sh是个软连接,指向了bash,但是还是有区别的,sh执行的相当于bash -posix xxx.sh,也就是说xxx.sh脚本必须遵守posix的规则,如果不然就会报错。
shell script一般第一行指定解释器,所以还是指定#!/bin/bash好,不要再用#!/bin/sh了。
sh是一个shell。运行sh a.sh,表示我使用sh来解释这个脚本;如果我直接运行./a.sh,首先你会查找脚本第一行是否指定了解释器,如果没指定,那么就用当前系统默认的shell(大多数linux默认是bash),如果指定了解释器,那么就将该脚本交给指定的解释器。

问题2:执行./stop-cluster.sh 关闭集群,报

No taskexecutor daemon to stop on host xxx

No standalonesession daemon to stop on host xxx

解决

在flink的安装目录下的 /bin 目录下有个 config.sh 脚本文件,里面有一项配置用来配置flink服务的pid文件目录,配置名称为: DEFAULT_ENV_PID_DIR ,默认值为 /tmp 。而由于/tmp 会被系统定期清理,所以存放的ID就找不到了,也就没法关闭集群了。所以这里最好修改为flink集群安装的位置下再加个目录 pids 即可。

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。