Flink流 - 延迟和吞吐量检测

时间:2017-05-29 14:08:46

标签: json apache-kafka apache-flink kafka-producer-api flink-streaming

我正在尝试运行Flink流媒体作业。我想确定流式处理的吞吐量和延迟。我已经启动了Kafka代理服务器并从kafka获取了传入消息。我如何计算每秒的消息数(吞吐量)? (比如rdd.count。是否有任何类似的方法来获取传入消息的数量)

(完整的场景:我已经通过Producer将消息作为Json对象发送。我在Json对象中添加了一些信息,如名称字符串和System.currentTimeMills。 在流式传输期间,如何通过messageStream(DataStream)获取发送的json对象?)

提前致谢。

代码:

/ **  *从Kafka读取字符串并将其打印到标准输出。 * /

public static void main(String[] args) throws Exception {
    System.setProperty("hadoop.home.dir", "c:/winutils/");
    // parse input argum    ents
    final ParameterTool parameterTool = ParameterTool.fromArgs(args);

    if(parameterTool.getNumberOfParameters() < 4) {
        System.out.println("Missing parameters!\nUsage: Kafka --topic <topic> " +
                "--bootstrap.servers <kafka brokers> --zookeeper.connect <zk quorum> --group.id <some id>");
        return;
    }

    StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
    env.getConfig().disableSysoutLogging();
    env.getConfig().setRestartStrategy(RestartStrategies.fixedDelayRestart(4, 10000));
    env.enableCheckpointing(5000); // create a checkpoint every 5 seconds
    env.getConfig().setGlobalJobParameters(parameterTool); // make parameters available in the web interface

    DataStream<String> messageStream = env
            .addSource(new FlinkKafkaConsumer010<>(
                    parameterTool.getRequired("topic"),
                    new SimpleStringSchema(),
                    parameterTool.getProperties()));


    messageStream.print();

    env.execute();
}

2 个答案:

答案 0 :(得分:0)

This benchmarking application可能是一个很好的起点。 latency trackingmetrics available from Flink's Kafka connector上的文档也应该是有趣的阅读材料。

答案 1 :(得分:0)

Flink UI中提供了一些指标,您可以在其中计算每秒事件的数量以及类似的内容。

您还可以根据自己的要求添加自己的指标来计算某些数字,这可以在Flink用户界面中显示。

最后,对于特定的延迟跟踪,您可以尝试这里解释的内容 - latency-tracking,类似地,您可以使用 - meters

获取吞吐量