繁体   English   中英

如何增加Flink taskmanager.numberOfTaskSlots在没有Flink服务器的情况下运行它(在IDE或胖罐子里)

[英]How to increase Flink taskmanager.numberOfTaskSlots to run it without Flink server(in IDE or fat jar)

我有一个关于在IDE中运行Flink流媒体作业的问题,或者没有将其部署到Flink服务器的胖jar。

问题是当我在我的工作中有超过1个任务时,我无法在IDE中运行它。

public class StreamingJob {

public static void main(String[] args) throws Exception {
    // set up the streaming execution environment
    final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

    Properties kafkaProperties = new Properties();
    kafkaProperties.setProperty("bootstrap.servers", "localhost:9092");
    kafkaProperties.setProperty("group.id", "test");
    env.setParallelism(1);

    DataStream<String> kafkaSource = env
        .addSource(new FlinkKafkaConsumer010<>("flink-source", new SimpleStringSchema(), kafkaProperties))
        .name("Kafka-Source")
        .slotSharingGroup("Kafka-Source");

    kafkaSource.print().slotSharingGroup("Print");

    env.execute("Flink Streaming Java API Skeleton");
}

}

我知道这个工作需要2个插槽,我可以在Flink集群中有两个任务管理器,但是如何在IDE中本地运行它。

目前,我必须在本地为所有运营商指定相同的slotSharingGroup名称,以便拥有一个插槽。 但它并不灵活。

你怎么处理它?

这是您正在描述的已知错误。 您可以在此处找到相应的JIRA问题。

解决此问题的方法是手动设置启动TaskExecutor的任务槽数。 您可以通过TaskManagerOptions.NUM_TASK_SLOTS配置选项执行此操作:

final int parallelism = ...;
final Configuration configuration = new Configuration();
configuration.setInteger(TaskManagerOptions.NUM_TASK_SLOTS, 2);

final StreamExecutionEnvironment env = StreamExecutionEnvironment.createLocalEnvironment(parallelism, configuration);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM