簡體   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