You need to enable JavaScript to run this app.
导航
常见问题
最近更新时间:2024.06.13 19:10:20首次发布时间:2023.02.27 19:16:31

Q1. The Yarn application application_xxxxxx doesn't run anymore.

图片
我们在运行 standlone cluster 模式或者 yarn session 模式时,可能会遇到 yarn application 不存在的场景。主要原因为上一个 yarn session 的 application 任务已经结束,但是在本地/tmp/.yarn-properties-root文件中还保留已经结束的 Application ID。SQL 客户端在默认不指定execution.target的场景下,会从该文件中读取 Application ID,并尝试提交任务到该 Application 上。
解决办法:
手动删除或者修改/tmp/.yarn-properties-root文件。

图片
在 Flink 1.16 之后使用 hive dialect 的场景下,可能会出现以上错误,主要由依赖 Jar 包配置问题导致。
解决办法:
可参考Flink SQL Client使用参考--Hive Dialect建表 或者参官方指南

Q3. java.lang.ClassNotFoundException: org.apache.ranger.authorization.hive.authorizer.RangerHiveAuthorizerFactory

在 Flink 使用 hive dailect 模式,并且 EMR 集群启用了 ranger-hive-plugin,并直接使用/etc/emr/hive/conf作为 hive conf 创建 Hive Catalog 时,Flink 运行环境缺少 ranger-hive-plugin 的相关依赖。
解决办法:

  • 如果依然想启用 ranger-hive-plugin 进行权限校验,需将 ranger-hive-plugin 添加到 Flink classpath 下,比如ln -s /usr/lib/emr/current/ranger-hive-plugin/lib/ranger-hive-plugin-shim-2.1.1-SNAPSHOT.jar ranger-hive-plugin-shim-2.1.1-SNAPSHOT.jar
  • 如果不想启用 ranger-hive-plugin,可以单独拷贝hive-site.xml,并取出 ranger 相关的配置参数,用新的hive-site.xml创建 Hive Catalog。

Q4. java.lang.UnsupportedOperationException: tos streams are not Syncable. See HADOOP-17597.

基于 TOS 协议向 TOS 写数据时,可能会遇到这类错误。需要额外添加添加 HDFS 参数,详情问题,可参考Hadoop-17597
解决办法:
core-site.xml文件中添加一下参数,或者通过 EMR UI 添加该参数

<property>
    <name>fs.tos.downgrade.syncable.exceptions</name>
    <value>true</value>
</property>

图片

Q5. 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

目前同时安装 Hudi 和 Iceberg 服务时,创建 Iceberg Hive Catalog 的时候可能会遇到以上错误,主要由于 Iceberg 和 Hudi 的冲突导致。
解决办法:

  • 方法一:安装服务时,只安装 Iceberg 和 Hudi 其中的一个服务。
  • 方法二:当使用 Iceberg 时,执行unlink /usr/lib/emr/current/flink/lib/hudi-flink-bundle_2.12.jar 命令手动移除 Hudi-flink 依赖包。

Q6: 如何查看正在运行的Flink作业的日志?

在YARN上正在运行的Flink作业,可以通过以下几种方式查看日志:

  1. YARN ResourceManager Web界面:
    • 打开YARN ResourceManager的Web界面。
    • 在界面上找到你的Flink作业对应的Application ID。
    • 点击这个Application ID,进入到Application的详情页面。
    • 在详情页面中,找到启动时间离当前最近的“Attempt ID”。
    • 点击这个Attempt ID,可以看到所有运行该Flink作业的容器列表。
    • 点击任一容器的日志链接,可以查看该容器的日志文件(.log)、标准输出(stdout)和标准错误输出(stderr),这些文件里通常会包含Flink作业的运行或错误日志。
  2. Flink Web界面:
    • 打开YARN ResourceManager的Web界面。
    • 在界面上找到你的Flink作业对应的Application ID。
    • 点击这个Application ID,进入到Application的详情页面。
    • 在详情页面,点击“Tracking URL”后的超链接,正常情况下会自动跳转到Flink Web界面。
    • 在Flink Web界面中,点击左侧的“Job Manager”菜单,进入Job Manager的详情页。
    • 在Job Manager的详情页,点击“Logs”或“Log List”选项卡则可查看Job Manager相关的日志。
    • 在Flink Web界面中,点击左侧的“Task Managers”页面,你可以看到所有TaskManager的列表。
    • 点击任一TaskManager,然后点击“Stdout”或“Logs”或“Log List”可查看相应的日志。
  3. 使用YARN命令行工具:
    • 打开YARN ResourceManager的Web界面。
    • 在界面上找到你的Flink作业对应的Application ID。
    • 在EMR控制台,选择MasterGroup中的一个ECS节点,远程连接到该节点。
    • 使用YARN的命令行工具 yarn logs ,运行命令 yarn logs -applicationId <Application-ID> 来获取日志(含Job Manager与Task Manager的所有日志)

用户可以参考以上三种方式来查看正在运行中的Flink作业的日志。一般情况下,建议使用YARN ResourceManager Web界面和Flink Web界面来查看。

Q7: 如何查看已运行完成的Flink作业的日志?

在 Hadoop YARN 上运行的 Flink 作业,一旦作业结束,其日志通常会被 YARN 聚合并存储到 HDFS中。这是通过 YARN 的日志聚合功能实现的(火山引擎EMR提供的YARN服务默认就启用了该功能)。以下是查看已经结束的 Flink 作业日志的主要步骤:

  1. YARN ResourceManager Web界面:
    • 打开YARN ResourceManager的Web界面。
    • 在界面上找到你的Flink作业对应的Application ID。
    • 点击这个Application ID,进入到Application的详情页面。
    • 在详情页面中,找到启动时间离当前最近的“Attempt ID”。
    • 点击这个Attempt ID,可以看到所有曾经运行该Flink作业的容器列表。
    • 点击任一容器的日志链接,可以查看该容器的日志文件(.log)、标准输出(stdout)和标准错误输出(stderr),这些文件里通常会包含Flink作业的运行或错误日志。
  2. 使用YARN命令行工具:
    • 打开YARN ResourceManager的Web界面。
    • 在界面上找到你的Flink作业对应的Application ID。
    • 在EMR控制台,选择MasterGroup中的一个ECS节点,远程连接到该节点。
    • 使用YARN的命令行工具 yarn logs ,运行命令 yarn logs -applicationId <Application-ID> 来获取日志(含Job Manager与Task Manager的所有日志)。

说明

对于已运行完成日志的保留期由 yarn.log-aggregation.retain-seconds 控制,如果超过这个时间,日志可能已经被自动删除。如果希望保留更长时间,可以调整该参数。
如果日志文件非常大,使用 yarn logs 命令可能需要较长时间来下载和显示日志。