我正在尝试运行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();
}
答案 0 :(得分:0)
This benchmarking application可能是一个很好的起点。 latency tracking和metrics available from Flink's Kafka connector上的文档也应该是有趣的阅读材料。
答案 1 :(得分:0)
Flink UI中提供了一些指标,您可以在其中计算每秒事件的数量以及类似的内容。
您还可以根据自己的要求添加自己的指标来计算某些数字,这可以在Flink用户界面中显示。
最后,对于特定的延迟跟踪,您可以尝试这里解释的内容 - latency-tracking,类似地,您可以使用 - meters
获取吞吐量