flink- java.lang.IllegalStateException: No Executor found. Please make sure to export the HADOOP_CLASSPATH environment variable or have hadoop in your classpath.
flink在以per job模式运行jar包时报如下错误
问题原因:为了使用 Hadoop 功能(例如 YARN、HDFS),必须为 Flink 提供所需的 Hadoop 类,因为这些类默认并未捆绑。
推荐的方法是通过HADOOP_CLASSPATH
环境变量将 Hadoop 类路径添加到 Flink。
Flink 将使用环境变量HADOOP_CLASSPATH
来扩充启动 Flink 组件(例如客户端、JobManager 或 TaskManager)时使用的类路径。大多数 Hadoop 发行版和云环境不会默认设置此变量,因此如果 Flink 应该选择 Hadoop 类路径,则必须在运行 Flink 组件的所有计算机上导出环境变量。
在 YARN 上运行时,这通常不是问题,因为 YARN 内部运行的组件将使用 Hadoop 类路径启动,但在向 YARN 提交作业时,Hadoop 依赖项可能必须位于类路径中。
https://nightlies.apache.org/flink/flink-docs-release-1.11/zh/ops/deployment/hadoop.html
官网的意思是让运行如下命令加载hadoop的类路径
export HADOOP_CLASSPATH=`hadoop classpath`
其实最好的办法就是直接在命令行加载hadoop的类路径
也可以在hadoop-env.sh文件中添加此配置,添加在最后一行就可以。一般来说这样也可以解决问题,但是不知道为什么我这样还是不能解决这个问题,不知道翻了多少文档最终在 /etc/profile中把export HADOOP_CLASSPATH=hadoop classpath
加到配置文件中就解决了