本文为您介绍实时计算Flink版的操作指导方面的常见问题,包括控制台操作、网络连通性和JAR包等问题。在实时计算管理控制台上查看当前工作空间绑定的OSS Bucket信息。登录OSS管理控制台,上传资源文件至目标Bucket的/artifacts/namespaces目录下。在实时计算开发控制台左侧导航栏,单击资源管理,查看通过OSS控制台上传的资源文件。如何配置作业运行参数?登录实时计算控制台。单击目标工作空间操作列下的控制台。在作业运维页面,单击目标作业名称。在部署详情页签,单击运行参数配置区域右侧编辑。在其他配置项中,配置代码信息。代码示例如下。请确保键值对之间冒号后存在一个空格。task.cancellation.timeout: 180s单击保存。如何开启GC日志?如何查找引发告警的作业?如何查看工作空间ID等信息?如何查看AccessKey ID和AccessKey Secret信息?您可以通过阿里云管理控制台创建AccessKey并获取AccessKey ID和AccessKey Secret信息,步骤如下: 登录阿里云控制台。将鼠标悬停至页面右上角的头像,单击AccessKey管理。单击创建AccessKey,复制或下载AccessKey ID和AccessKey Secret信息。选中我已保存好 AccessKey Secret后,单击确定。如何查看当前作业的Flink版本?如何关闭系统自动开通的Prometheus监控服务?如果您不再需要对实时计算Flink版进行监控,您可以按照如下步骤卸载Prometheus监控服务:登录Prometheus控制台。在左侧导航栏单击实例列表,进入可观测监控Prometheus版的实例列表页面。在标签筛选下拉列表中,选择目标工作空间的ID或名称。单击实例类型为Prometheus for Flink Serverless的实例对应操作列的卸载。在弹出的对话框中,单击确认。如何设置白名单?登录实时计算控制台提示当前账号缺少权限问题详情登录实时计算控制台时提示:权限不足无法完成本次操作,需要操作描述符[stream:DescribeVvpInstances]和资源描述符[acs:stream:cn-beijing:1418886*********:vvpinstance/*],请联系主账号管理员。问题原因当前登录身份缺少查看Flink工作空间的权限,或仅具有某个资源组的权限。解决方法如果您仅具有某个资源组权限,请在控制台上方选择对应资源组,并选择对应地域查看目标工作空间。如果当前身份未被授权,参考RAM授权操作为对应RAM用户或角色添加具有查看Flink工作空间操作的权限策略。以下权限策略包含了查看Flink工作空间的权限,您选择添加以下任意一个即可。系统策略:AliyunStreamReadOnlyAccess(只读访问流计算服务)或AliyunStreamFullAccess(流计算服务所有权限),详情请参见系统权限策略。自定义策略:stream:DescribeVvpInstances(查看工作空间),详情请参见自定义权限策略。实时计算Flink版如何访问公网?背景说明 解决方案 如何访问跨VPC的其他服务?如何在Flink开发页面进行网络探测?Flink支持网络探测能力,您可以在Flink开发控制台进行网络探测,具体步骤如下:登录实时计算控制台。单击目标工作空间操作列下的控制台。单击页面上方的探测图标。通过输入Endpoint或者IP地址的方式检测Flink作业运行的环境与您的上下游系统是否联通。如何解决Flink依赖冲突问题?问题现象有明显报错,且引发错误的为Flink或Hadoop相关类。java.lang.AbstractMethodError
java.lang.ClassNotFoundException
java.lang.IllegalAccessError
java.lang.IllegalAccessException
java.lang.InstantiationError
java.lang.InstantiationException
java.lang.InvocationTargetException
java.lang.NoClassDefFoundError
java.lang.NoSuchFieldError
java.lang.NoSuchFieldException
java.lang.NoSuchMethodError
java.lang.NoSuchMethodException无明显报错,但会引起一些不符合预期的现象,例如:日志不输出或log4j配置不生效。RPC调用异常。Flink的Akka RPC调用出现依赖冲突可能导致的异常,默认不会显示在日志中,需要开启Debug日志进行确认。例如,Debug日志中出现Cannot allocate the requested resources. Trying to allocate ResourceProfile{xxx},但是JM日志在Registering TaskManager with ResourceID xxx后,没有下文,直到资源请求超时报错NoResourceAvailableException。此外TM持续报错Cannot allocate the requested resources. Trying to allocate ResourceProfile{xxx}。原因:开启Debug日志后,发现RPC调用报错InvocationTargetException,该报错导致TM Slot分配到一半失败出现状态不一致,RM持续尝试分配Slot失败无法恢复。问题原因作业JAR包中包含了不必要的依赖(例如基本配置、Flink、Hadoop和log4j依赖),造成依赖冲突从而引发各种问题。作业需要的Connector对应的依赖未被打入JAR包中。排查方法查看作业pom.xml文件,判断是否存在不必要的依赖。通过jar tf foo.jar命令查看作业JAR包内容,判断是否存在引发依赖冲突的内容。通过mvn dependency:tree命令查看作业的依赖关系,判断是否存在冲突的依赖。解决方案基本配置建议将scope全部设置为provided,即不打入作业JAR包。DataStream Java<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-java_2.11</artifactId>
<version>${flink.version}</version>
<scope>provided</scope>
</dependency>DataStream Scala<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-scala_2.11</artifactId>
<version>${flink.version}</version>
<scope>provided</scope>
</dependency>DataSet Java<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-java</artifactId>
<version>${flink.version}</version>
<scope>provided</scope>
</dependency>DataSet Scala<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-scala_2.11</artifactId>
<version>${flink.version}</version>
<scope>provided</scope>
</dependency>添加作业需要的Connector对应的依赖,并将scope全部设置为compile(默认的scope是compile),即打入作业JAR包中,以Kafka Connector为例,代码如下。<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-kafka_2.11</artifactId>
<version>${flink.version}</version>
</dependency>其他Flink、Hadoop和log4j依赖不建议添加。但是:如果作业本身存在基本配置或Connector相关的直接依赖,建议将scope设置为provided,示例如下。<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<scope>provided</scope>
</dependency>如果作业存在基本配置或Connector相关的间接依赖,建议通过exclusion将依赖去掉,示例如下。<dependency>
<groupId>foo</groupId>
<artifactId>bar</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
</exclusion>
</exclusions>
</dependency>如何解析Flink作业所依赖服务的域名?单击保存更改。在实时计算开发控制台新建作业并运行。如果还报UnknownHostException的错误,则意味着无法解析域名,请联系我们。在配置了自建DNS域名解析后,出现作业频繁failover, 且报错信息为JobManager heartbeat timeout。具体解决方案请参见报错:JobManager heartbeat timeout。您没有自建的DNS或者Flink VPC无法与自建的DNS连通。报错:JobManager heartbeat timeout报错详情在配置了自建DNS域名解析后,出现作业频繁failover, 且报错信息为JobManager heartbeat timeout。报错原因可能是由于自建DNS的连接延迟大造成的。解决方案您需要在该作业中关闭对于TM的域名解析,即配置jobmanager.retrieve-taskmanager-hostname: false,该配置并不会影响作业通过域名连接外部服务。配置方法请参见如何配置作业运行参数?。