Java ApacheFlink上的吞吐量和延迟

Java ApacheFlink上的吞吐量和延迟,java,apache-flink,latency,flink-streaming,throughput,Java,Apache Flink,Latency,Flink Streaming,Throughput,我已经为ApacheFlink编写了一个非常简单的java程序,现在我对测量吞吐量(每秒处理的元组数)和延迟(程序需要处理每个输入元组的时间)等统计数据感兴趣 我知道Flink公开了一些指标: 但我不知道如何使用它们来获得我想要的东西。从链接中,我读到一个“米”可以用来测量平均吞吐量,但是,在定义了它之后,我应该如何使用它 我们在纱线上运行的生产流作业中运行定制指标,如米、规 以下是步骤: pom.xml的附加依赖项 <dependency> <groupId>

我已经为ApacheFlink编写了一个非常简单的java程序,现在我对测量吞吐量(每秒处理的元组数)和延迟(程序需要处理每个输入元组的时间)等统计数据感兴趣

我知道Flink公开了一些指标:


但我不知道如何使用它们来获得我想要的东西。从链接中,我读到一个“米”可以用来测量平均吞吐量,但是,在定义了它之后,我应该如何使用它

我们在纱线上运行的生产流作业中运行定制指标,如米、规

以下是步骤:

pom.xml的附加依赖项

<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-metrics-dropwizard</artifactId>
    <version>${flink.version}</version>
</dependency>

org.apache.flink
弗林克测试向导
${flink.version}
我们使用的是1.2.1版

然后将meter添加到MyMapper类

import org.apache.flink.api.common.JobExecutionResult;
import org.apache.flink.api.common.functions.RichMapFunction;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.dropwizard.metrics.DropwizardMeterWrapper;
import org.apache.flink.metrics.Meter;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;


public class Test {


    public static void main(String[] args) throws Exception {

        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        env
                .readTextFile("/home/LizardKing/Documents/Power/Prova.csv")
                .map(new MyMapper())
                .writeAsCsv("/home/LizardKing/Results.csv");

        JobExecutionResult res = env.execute();
    }


    private static class MyMapper extends RichMapFunction<String, Object> {

        private transient Meter meter;

        @Override
        public void open(Configuration parameters) throws Exception {
            super.open(parameters);
            this.meter = getRuntimeContext()
                    .getMetricGroup()
                    .meter("myMeter", new DropwizardMeterWrapper(new com.codahale.metrics.Meter()));
        }

        @Override
        public Object map(String value) throws Exception {    
            this.meter.markEvent();
            return value;
        }
    }
}
import org.apache.flink.api.common.JobExecutionResult;
导入org.apache.flink.api.common.functions.RichMapFunction;
导入org.apache.flink.configuration.configuration;
导入org.apache.flink.dropwizard.metrics.dropWizardMeterRapper;
导入org.apache.flink.metrics.Meter;
导入org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
公开课考试{
公共静态void main(字符串[]args)引发异常{
StreamExecutionEnvironment env=StreamExecutionEnvironment.getExecutionEnvironment();
环境
.readTextFile(“/home/LizardKing/Documents/Power/Prova.csv”)
.map(新的MyMapper())
.writeAsCsv(“/home/LizardKing/Results.csv”);
JobExecutionResult=env.execute();
}
私有静态类MyMapper扩展了RichMapFunction{
专用瞬变电表;
@凌驾
公共void open(配置参数)引发异常{
super.open(参数);
this.meter=getRuntimeContext()
.getMetricGroup()
.meter(“myMeter”,新DropWizardMeterRapper(新的com.codahale.metrics.meter());
}
@凌驾
公共对象映射(字符串值)引发异常{
this.meter.markEvent();
返回值;
}
}
}

希望这能有所帮助。

你到底在挣扎什么?对于吞吐量,您需要在
MyMapper
函数中注册一个
Meter
,如您提供的链接所示。您可以在Flink web dashboard中实时查看指标。如果我按照实现myMeter类所需的说明进行操作,我已经尝试了一些方法,但它不起作用。如果我使用DropWizard meter并尝试在独立模式下运行它,我会出现一个错误(java.lang.NoClassDefFoundError:com/codahale/metrics/meter),即使我在pom.xml中包含了依赖项。它有帮助,我还遇到了另一个问题:当我尝试在flink中运行这个程序时(而不是从IDE)我发现这还不足以在pom.xml中包含依赖项。我必须向flink提供库,有人建议我使用maven shade插件。它应该将依赖项打包到上传的jar中。
import org.apache.flink.api.common.JobExecutionResult;
import org.apache.flink.api.common.functions.RichMapFunction;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.dropwizard.metrics.DropwizardMeterWrapper;
import org.apache.flink.metrics.Meter;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;


public class Test {


    public static void main(String[] args) throws Exception {

        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

        env
                .readTextFile("/home/LizardKing/Documents/Power/Prova.csv")
                .map(new MyMapper())
                .writeAsCsv("/home/LizardKing/Results.csv");

        JobExecutionResult res = env.execute();
    }


    private static class MyMapper extends RichMapFunction<String, Object> {

        private transient Meter meter;

        @Override
        public void open(Configuration parameters) throws Exception {
            super.open(parameters);
            this.meter = getRuntimeContext()
                    .getMetricGroup()
                    .meter("myMeter", new DropwizardMeterWrapper(new com.codahale.metrics.Meter()));
        }

        @Override
        public Object map(String value) throws Exception {    
            this.meter.markEvent();
            return value;
        }
    }
}