问题现象:The Yarn application application_xxxxxx doesn't run anymore.
我们在运行 Standalone cluster 模式或者 yarn-session 模式时,可能会碰到 Yarn Application 不存在的情况。主要原因是上一个 yarn-session 的 Application 任务已经结束,然而在本地/tmp/.yarn-properties-root
文件中仍保留着已经结束的 Application ID。在 SQL 客户端默认不指定execution.target
的情况下,会从该文件中读取 Application ID,并尝试向该 Application 提交任务。
**解决办法:**手动删除或者修改/tmp/.yarn-properties-root
文件。
问题现象:运行 SQLClient 的时候,设置使用 Hive 方言。报错如下:Cloud not find any factory for identifier 'hive' that implements 'org.apache.flink.table.planner.delegation.ParserFactory' in the classpath.
在 Flink 1.16 之后使用 Hive 方言的场景下,可能会出现以上错误,主要由依赖 Jar 包配置问题导致。
**解决办法:**可参考 官方指南,将 Hive 的相关依赖 Jar 包放入 lib 中。
# 进入FLINK_HOME mv lib/flink-table-planner-loader-1.16.1.jar opt/ cp opt/flink-table-planner_2.12-1.16.1.jar lib/ cp connectors/flink-sql-connector-hive-3.1.2_2.12-1.16.1.jar lib/
注意:非 Hive 方言场景, 不要将 Connector 的 Jar 包依赖放入 lib 目录下。
问题现象:开启 Hive 方言模式,如果集群启用了 Ranger,直接使用${HIVE_HOME}/conf
作为 Hive conf 创建 Hive Catalog 时,Flink 运行环境缺少 ranger-hive-plugin 的相关依赖。java.lang.ClassNotFoundException: org.apache.ranger.authorization.hive.authorizer.RangerHiveAuthorizerFactory
解决办法:
ln -s ${RANGER_HOME}/lib/ranger-hive-plugin-shim-2.1.1-SNAPSHOT.jar ranger-hive-plugin-shim-2.1.1-SNAPSHOT.jar
hive-site.xml
,并取出 ranger 相关的配置参数,用新的hive-site.xml
创建 Hive Catalog。问题现象:目前同时安装 Hudi 和 Iceberg 服务时,创建 Iceberg Hive Catalog 的时候可能会遇到以下错误,主要由于 Iceberg 和 Hudi 的冲突导致:
java.lang.VerifyError: Stack map does not match the one at exception handler 20 Exception Details: Location: org/apache/iceberg/hive/HiveCatalog.alterHiveDataBase(Lorg/apache/iceberg/catalog/Namespace;Lorg/apache/hadoop/hive/metastore/api/Database;)V
解决办法:
unlink ${FLINK_HOME}/lib/hudi-flink-bundle_2.12.jar
命令手动移除 Hudi-flink 依赖包。在YARN上正在运行的Flink作业,可以通过以下几种方式查看日志:
yarn logs
,运行命令 yarn logs -applicationId <Application-ID>
来获取日志(含Job Manager与Task Manager的所有日志)用户可以参考以上三种方式来查看正在运行中的Flink作业的日志。一般情况下,建议使用YARN ResourceManager Web界面和Flink Web界面来查看。
在 Hadoop YARN 上运行的 Flink 作业,一旦作业结束,其日志通常会被 YARN 聚合并存储到 HDFS中。这是通过 YARN 的日志聚合功能实现的(LAS 湖仓一体分析平台提供的YARN服务默认就启用了该功能)。以下是查看已经结束的 Flink 作业日志的主要步骤:
yarn logs
,运行命令 yarn logs -applicationId <Application-ID>
来获取日志(含Job Manager与Task Manager的所有日志)。对于已运行完成日志的保留期由 yarn.log-aggregation.retain-seconds
控制,如果超过这个时间,日志可能已经被自动删除。如果希望保留更长时间,可以调整该参数。如果日志文件非常大,使用 yarn logs
命令可能需要较长时间来下载和显示日志。