前景提要
flink在yarn集群上提交报异常:org.apache.flink.runtime.jobmana
0 悬赏园豆: 20 [待解决问题] 问题描述
今天搭建好flink集群,并使用如下命令提交任务,报了异常。
我的命令是: [root@tuge1 flink- 1.10 . 1 ]# ./bin/flink run -m yarn-cluster -ynm ryj -c vip.shuai7boy.flink.checkpoint.TestSavepoints /data/flinkdata/MyFlinkObj- 1.0 -SNAPSHOT-jar-with-dependencies.jar
提交后,开始查看Web UI是能正常显示的,但是一直处于请求资源的状态。
如下所示:
然后等一会,这个界面就挂掉了,跳转到如下界面:
然后控制台报了如下错误: ------------------------------------------------------------ The program finished with the following exception: org.apache.flink.client.program.ProgramInvocationException: The main method caused an error: org.apache.flink.client.program.ProgramInvocationException: Job failed (JobID: 12b759f143190ee08d831f2fabb4c3f2) at org.apache.flink.client.program.PackagedProgram.callMainMethod(PackagedProgram.java: 335 ) at org.apache.flink.client.program.PackagedProgram.invokeInteractiveModeForExecution(PackagedProgram.java: 205 ) at org.apache.flink.client.ClientUtils.executeProgram(ClientUtils.java: 138 ) at org.apache.flink.client.cli.CliFrontend.executeProgram(CliFrontend.java: 662 ) at org.apache.flink.client.cli.CliFrontend.run(CliFrontend.java: 210 ) at org.apache.flink.client.cli.CliFrontend.parseParameters(CliFrontend.java: 893 ) at org.apache.flink.client.cli.CliFrontend.lambda$main$ 10 (CliFrontend.java: 966 ) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java: 422 ) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java: 1692 ) at org.apache.flink.runtime.security.HadoopSecurityContext.runSecured(HadoopSecurityContext.java: 41 ) at org.apache.flink.client.cli.CliFrontend.main(CliFrontend.java: 966 ) Caused by: java.util.concurrent.ExecutionException: org.apache.flink.client.program.ProgramInvocationException: Job failed (JobID: 12b759f143190ee08d831f2fabb4c3f2) at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java: 357 ) at java.util.concurrent.CompletableFuture. get (CompletableFuture.java: 1895 ) at org.apache.flink.streaming.api.environment.StreamContextEnvironment.execute(StreamContextEnvironment.java: 83 ) at org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.execute(StreamExecutionEnvironment.java: 1620 ) at org.apache.flink.streaming.api.environment.StreamExecutionEnvironment.execute(StreamExecutionEnvironment.java: 1602 ) at org.apache.flink.streaming.api.scala.StreamExecutionEnvironment.execute(StreamExecutionEnvironment.scala: 667 ) at vip.shuai7boy.flink.checkpoint.TestSavepoints$.main(TestSavepoints.scala: 30 ) at vip.shuai7boy.flink.checkpoint.TestSavepoints.main(TestSavepoints.scala) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 62 ) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 43 ) at java.lang.reflect.Method.invoke(Method.java: 498 ) at org.apache.flink.client.program.PackagedProgram.callMainMethod(PackagedProgram.java: 321 ) ... 11 more Caused by: org.apache.flink.client.program.ProgramInvocationException: Job failed (JobID: 12b759f143190ee08d831f2fabb4c3f2) at org.apache.flink.client.deployment.ClusterClientJobClientAdapter.lambda$ null $ 6 (ClusterClientJobClientAdapter.java: 112 ) at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java: 602 ) at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java: 577 ) at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java: 474 ) at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java: 1962 ) at org.apache.flink.client.program.rest.RestClusterClient.lambda$pollResourceAsync$ 21 (RestClusterClient.java: 565 ) at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java: 760 ) at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java: 736 ) at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java: 474 ) at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java: 1962 ) at org.apache.flink.runtime.concurrent.FutureUtils.lambda$retryOperationWithDelay$ 8 (FutureUtils.java: 291 ) at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java: 760 ) at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java: 736 ) at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java: 474 ) at java.util.concurrent.CompletableFuture.postFire(CompletableFuture.java: 561 ) at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java: 929 ) at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java: 442 ) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java: 1149 ) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java: 624 ) at java.lang.Thread.run(Thread.java: 748 ) Caused by: org.apache.flink.runtime.client.JobExecutionException: Job execution failed. at org.apache.flink.runtime.jobmaster.JobResult.toJobExecutionResult(JobResult.java: 147 ) at org.apache.flink.client.deployment.ClusterClientJobClientAdapter.lambda$ null $ 6 (ClusterClientJobClientAdapter.java: 110 ) ... 19 more Caused by: org.apache.flink.runtime.JobException: Recovery is suppressed by NoRestartBackoffTimeStrategy at org.apache.flink.runtime.executiongraph.failover.flip1.ExecutionFailureHandler.handleFailure(ExecutionFailureHandler.java: 110 ) at org.apache.flink.runtime.executiongraph.failover.flip1.ExecutionFailureHandler.getFailureHandlingResult(ExecutionFailureHandler.java: 76 ) at org.apache.flink.runtime.scheduler.DefaultScheduler.handleTaskFailure(DefaultScheduler.java: 192 ) at org.apache.flink.runtime.scheduler.DefaultScheduler.maybeHandleTaskFailure(DefaultScheduler.java: 186 ) at org.apache.flink.runtime.scheduler.DefaultScheduler.updateTaskExecutionStateInternal(DefaultScheduler.java: 180 ) at org.apache.flink.runtime.scheduler.SchedulerBase.updateTaskExecutionState(SchedulerBase.java: 496 ) at org.apache.flink.runtime.scheduler.UpdateSchedulerNgOnInternalFailuresListener.notifyTaskFailure(UpdateSchedulerNgOnInternalFailuresListener.java: 49 ) at org.apache.flink.runtime.executiongraph.ExecutionGraph.notifySchedulerNgAboutInternalTaskFailure(ExecutionGraph.java: 1703 ) at org.apache.flink.runtime.executiongraph.Execution.processFail(Execution.java: 1252 ) at org.apache.flink.runtime.executiongraph.Execution.processFail(Execution.java: 1220 ) at org.apache.flink.runtime.executiongraph.Execution.markFailed(Execution.java: 1051 ) at org.apache.flink.runtime.executiongraph.ExecutionVertex.markFailed(ExecutionVertex.java: 748 ) at org.apache.flink.runtime.scheduler.DefaultExecutionVertexOperations.markFailed(DefaultExecutionVertexOperations.java: 41 ) at org.apache.flink.runtime.scheduler.DefaultScheduler.handleTaskDeploymentFailure(DefaultScheduler.java: 446 ) at org.apache.flink.runtime.scheduler.DefaultScheduler.lambda$assignResourceOrHandleError$ 5 (DefaultScheduler.java: 433 ) at java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java: 822 ) at java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java: 797 ) at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java: 474 ) at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java: 1977 ) at org.apache.flink.runtime.jobmaster.slotpool.SchedulerImpl.lambda$internalAllocateSlot$ 0 (SchedulerImpl.java: 168 ) at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java: 760 ) at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java: 736 ) at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java: 474 ) at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java: 1977 ) at org.apache.flink.runtime.jobmaster.slotpool.SlotSharingManager$SingleTaskSlot.release(SlotSharingManager.java: 726 ) at org.apache.flink.runtime.jobmaster.slotpool.SlotSharingManager$MultiTaskSlot.release(SlotSharingManager.java: 537 ) at org.apache.flink.runtime.jobmaster.slotpool.SlotSharingManager$MultiTaskSlot.lambda$ new $ 0 (SlotSharingManager.java: 432 ) at java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java: 822 ) at java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java: 797 ) at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java: 474 ) at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java: 1977 ) at org.apache.flink.runtime.concurrent.FutureUtils.lambda$forward$ 21 (FutureUtils.java: 1065 ) at java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java: 760 ) at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java: 736 ) at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java: 474 ) at java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java: 1977 ) at org.apache.flink.runtime.concurrent.FutureUtils$Timeout.run(FutureUtils.java: 999 ) at org.apache.flink.runtime.rpc.akka.AkkaRpcActor.handleRunAsync(AkkaRpcActor.java: 402 ) at org.apache.flink.runtime.rpc.akka.AkkaRpcActor.handleRpcMessage(AkkaRpcActor.java: 195 ) at org.apache.flink.runtime.rpc.akka.FencedAkkaRpcActor.handleRpcMessage(FencedAkkaRpcActor.java: 74 ) at org.apache.flink.runtime.rpc.akka.AkkaRpcActor.handleMessage(AkkaRpcActor.java: 152 ) at akka.japi.pf.UnitCaseStatement.apply(CaseStatements.scala: 26 ) at akka.japi.pf.UnitCaseStatement.apply(CaseStatements.scala: 21 ) at scala.PartialFunction.applyOrElse(PartialFunction.scala: 123 ) at scala.PartialFunction.applyOrElse$(PartialFunction.scala: 122 ) at akka.japi.pf.UnitCaseStatement.applyOrElse(CaseStatements.scala: 21 ) at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala: 171 ) at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala: 172 ) at scala.PartialFunction$OrElse.applyOrElse(PartialFunction.scala: 172 ) at akka.actor.Actor.aroundReceive(Actor.scala: 517 ) at akka.actor.Actor.aroundReceive$(Actor.scala: 515 ) at akka.actor.AbstractActor.aroundReceive(AbstractActor.scala: 225 ) at akka.actor.ActorCell.receiveMessage(ActorCell.scala: 592 ) at akka.actor.ActorCell.invoke(ActorCell.scala: 561 ) at akka.dispatch.Mailbox.processMailbox(Mailbox.scala: 258 ) at akka.dispatch.Mailbox.run(Mailbox.scala: 225 ) at akka.dispatch.Mailbox.exec(Mailbox.scala: 235 ) at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java: 260 ) at akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java: 1339 ) at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java: 1979 ) at akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java: 107 ) Caused by: org.apache.flink.runtime.jobmanager.scheduler.NoResourceAvailableException: Could not allocate the required slot within slot request timeout. Please make sure that the cluster has enough resources. at org.apache.flink.runtime.scheduler.DefaultScheduler.maybeWrapWithNoResourceAvailableException(DefaultScheduler.java: 452 ) ... 47 more Caused by: java.util.concurrent.CompletionException: java.util.concurrent.TimeoutException at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java: 292 ) at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java: 308 ) at java.util.concurrent.CompletableFuture.uniApply(CompletableFuture.java: 593 ) at java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java: 577 ) ... 27 more Caused by: java.util.concurrent.TimeoutException ... 25 more
我的服务器运行情况
一共有四台服务器,jps命令信息如下:
第一台服务器(tuge1):
5794 ResourceManager
5459 NameNode
5689 DFSZKFailoverController
10297 Jps
1834 Application
8123 JobHistoryServer
2686 QuorumPeerMain
第二台服务器(tuge2):
4929 DFSZKFailoverController
4822 NameNode
4748 JournalNode
12429 Jps
4654 QuorumPeerMain
第三台服务器(tuge3):
9700 Jps
4965 JournalNode
5157 NodeManager
5048 DataNode
4877 QuorumPeerMain
第四台服务器(tuge4):
4771 JournalNode
4846 DataNode
4958 NodeManager
11758 Jps
PS:我的虚拟机配置的每台服务器都是2核2G.
我的flink配置情况
flink-conf.yaml配置如下: ################################################################################ # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # " License " ); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http: // www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an " AS IS " BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. ################################################################################ # ============================================================================== # Common # ============================================================================== # The external address of the host on which the JobManager runs and can be # reached by the TaskManagers and any clients which want to connect. This setting # is only used in Standalone mode and may be overwritten on the JobManager side # by specifying the --host <hostname> parameter of the bin/ jobmanager.sh executable. # In high availability mode, if you use the bin/start- cluster.sh script and setup # the conf /masters file, this will be taken care of automatically. Yarn/ Mesos # automatically configure the host name based on the hostname of the node where the #设置task内存 taskmanager.network.memory.fraction: 0.1 taskmanager.network.memory.min: 64mb taskmanager.network.memory.max: 1gb # JobManager runs. jobmanager.rpc.address: tuge1 # The RPC port where the JobManager is reachable. jobmanager.rpc.port: 6123 # The heap size for the JobManager JVM jobmanager.heap.size: 1024m # The total process memory size for the TaskManager. # # Note this accounts for all memory usage within the TaskManager process, including JVM metaspace and other overhead. taskmanager.memory.process.size: 1024m # To exclude JVM metaspace and overhead, please, use total Flink memory size instead of ' taskmanager.memory.process.size ' . # It is not recommended to set both ' taskmanager.memory.process.size ' and Flink memory. # # taskmanager.memory.flink.size: 1280m # The number of task slots that each TaskManager offers. Each slot runs one parallel pipeline. taskmanager.numberOfTaskSlots: 2 # The parallelism used for programs that did not specify and other parallelism. parallelism. default : 1 # The default file system scheme and authority. # # By default file paths without scheme are interpreted relative to the local # root file system ' file:/// ' . Use this to override the default and interpret # relative paths relative to a different file system, # for example ' hdfs://mynamenode:12345 ' # # fs. default - scheme # ============================================================================== # High Availability # ============================================================================== # The high -availability mode. Possible options are ' NONE ' or ' zookeeper ' . # high - availability: zookeeper # The path where metadata for master recovery is persisted. While ZooKeeper stores # the small ground truth for checkpoint and leader election, this location stores # the larger objects, like persisted dataflow graphs. # # Must be a durable file system that is accessible from all nodes # (like HDFS, S3, Ceph, nfs, ...) # high -availability.storageDir: hdfs: // tuge1:9000/ha/ # The list of ZooKeeper quorum peers that coordinate the high - availability # setup. This must be a list of the form: # " host1:clientPort,host2:clientPort,... " ( default clientPort: 2181 ) # high -availability.zookeeper.quorum: tuge1: 2181 ,tuge2: 2181 ,tuge3: 2181 # ACL options are based on https: // zookeeper.apache.org/doc/r3.1.2/zookeeperProgrammers.html#sc_BuiltinACLSchemes # It can be either " creator " (ZOO_CREATE_ALL_ACL) or " open " (ZOO_OPEN_ACL_UNSAFE) # The default value is " open " and it can be changed to " creator " if ZK security is enabled # # high - availability.zookeeper.client.acl: open # ============================================================================== # Fault tolerance and checkpointing # ============================================================================== # The backend that will be used to store operator state checkpoints if # checkpointing is enabled. # # Supported backends are ' jobmanager ' , ' filesystem ' , ' rocksdb ' , or the # < class -name-of-factory> . # # state.backend: filesystem # Directory for checkpoints filesystem, when using any of the default bundled # state backends. # # state.checkpoints.dir: hdfs: // namenode-host:port/flink-checkpoints # Default target directory for savepoints, optional. # state.savepoints.dir: hdfs: // tuge1:9000/flink-checkpoints # Flag to enable /disable incremental checkpoints for backends that # support incremental checkpoints (like the RocksDB state backend). # # state.backend.incremental: false # The failover strategy, i.e., how the job computation recovers from task failures. # Only restart tasks that may have been affected by the task failure, which typically includes # downstream tasks and potentially upstream tasks if their produced data is no longer available for consumption. jobmanager.execution.failover - strategy: region # ============================================================================== # Rest & web frontend # ============================================================================== # The port to which the REST client connects to. If rest.bind - port has # not been specified, then the server will bind to this port as well. # #rest.port: 8081 # The address to which the REST client will connect to # #rest.address: 0.0 . 0.0 # Port range for the REST and web server to bind to. # #rest.bind -port: 8080 - 8090 # The address that the REST & web server binds to # #rest.bind -address: 0.0 . 0.0 # Flag to specify whether job submission is enabled from the web- based # runtime monitor. Uncomment to disable. # web.submit.enable: true # ============================================================================== # Advanced # ============================================================================== # Override the directories for temporary files. If not specified, the # system -specific Java temporary directory (java.io.tmpdir property) is taken. # # For framework setups on Yarn or Mesos, Flink will automatically pick up the # containers ' temp directories without any need for configuration. # # Add a delimited list for multiple directories, using the system directory # delimiter (colon ' : ' on unix) or a comma, e.g.: # /data1/tmp:/data2/tmp:/data3/ tmp # # Note: Each directory entry is read from and written to by a different I/ O # thread. You can include the same directory multiple times in order to create # multiple I /O threads against that directory. This is for example relevant for # high - throughput RAIDs. # io.tmp.dirs: / tmp # The classloading resolve order. Possible values are ' child-first ' (Flink ' s default) # and ' parent-first ' (Java ' s default). # # Child first classloading allows users to use different dependency / library # versions in their application than those in the classpath. Switching back # to ' parent-first ' may help with debugging dependency issues. # # classloader.resolve -order: child- first # The amount of memory going to the network stack. These numbers usually need # no tuning. Adjusting them may be necessary in case of an " Insufficient number # of network buffers " error. The default min is 64MB, the default max is 1GB. # # taskmanager.memory.network.fraction: 0.1 # taskmanager.memory.network.min: 64mb # taskmanager.memory.network.max: 1gb # ============================================================================== # Flink Cluster Security Configuration # ============================================================================== # Kerberos authentication for various components - Hadoop, ZooKeeper, and connectors - # may be enabled in four steps: # 1 . configure the local krb5.conf file # 2 . provide Kerberos credentials (either a keytab or a ticket cache w/ kinit) # 3 . make the credentials available to various JAAS login contexts # 4 . configure the connector to use JAAS/ SASL # The below configure how Kerberos credentials are provided. A keytab will be used instead of # a ticket cache if the keytab path and principal are set . # security.kerberos.login.use -ticket-cache: true # security.kerberos.login.keytab: /path/to/kerberos/ keytab # security.kerberos.login.principal: flink - user # The configuration below defines which JAAS login contexts # security.kerberos.login.contexts: Client,KafkaClient # ============================================================================== # ZK Security Configuration # ============================================================================== # Below configurations are applicable if ZK ensemble is configured for security # Override below configuration to provide custom ZK service name if configured # zookeeper.sasl.service - name: zookeeper # The configuration below must match one of the values set in " security.kerberos.login.contexts " # zookeeper.sasl.login -context- name: Client # ============================================================================== # HistoryServer # ============================================================================== # The HistoryServer is started and stopped via bin/historyserver.sh (start| stop) # Directory to upload completed jobs to. Add this directory to the list of # monitored directories of the HistoryServer as well (see below). #jobmanager.archive.fs.dir: hdfs: /// completed-jobs/ # The address under which the web - based HistoryServer listens. #historyserver.web.address: 0.0 . 0.0 # The port under which the web - based HistoryServer listens. #historyserver.web.port: 8082 # Comma separated list of directories to monitor for completed jobs. #historyserver.archive.fs.dir: hdfs: /// completed-jobs/ # Interval in milliseconds for refreshing the monitored directories. #historyserver.archive.fs.refresh -interval: 10000 yarn.application -attempts: 10
期望结果
我希望可以正常运行。大佬们帮忙看下啥原因~ flink linux yarn shuai7boy | 菜鸟二级 | 园豆: 218
提问于:2020-05-28 13:09 显示帮助
使用"Ctrl+Enter"可进行快捷提交,评论支持部分 Markdown 语法:[link](http://example.com) _italic_ **bold** `code`。
< > 分享
分享您的问题
所有回答(1) 0 Caused by: org.apache.flink.runtime.jobmanager.scheduler.NoResourceAvailableException: Could not allocate the required slot within slot request timeout. Please make sure that the cluster has enough resources
你的YARN里面队列没有分配资源,在YARN里面划分一个队列,给到CPU核数和内存。然后在提交Flink任务应该就可以了。
例如在文件 fair-scheduler.xml 创建一个queue_hadoop_01的队列: <allocations> <queue name="root"> <aclSubmitApps>hadoop</aclSubmitApps> <aclAdministerApps>hadoop</aclAdministerApps> <queue name="queue_hadoop_01"> <maxRunningApps>10</maxRunningApps> <minResources>1024mb,1vcores</minResources> <maxResources>6144mb,6vcores</maxResources> <schedulingPolicy>fair</schedulingPolicy> <weight>1.0</weight> <aclSubmitApps>hadoop</aclSubmitApps> <aclAdministerApps>hadoop</aclAdministerApps> </queue> </queue> <fairSharePreemptionTimeout>600000</fairSharePreemptionTimeout> <defaultMinSharePreemptionTimeout>600000</defaultMinSharePreemptionTimeout> </allocations>
然后在执行Flink提交命令: flink run -m yarn-cluster -yn 2 -yjm 1024 -ytm 1024 -yqu queue_hadoop_01 flink_task.jar 哥不是小萝莉 | 园豆:202 (菜鸟二级) | 2020-05-31 15:16 编辑文本 预览 上传图片
Ctrl+Enter键快速提交
清除回答草稿
您需要 登录 以后才能回答,未注册用户请先 注册 。