Throughput and Latency on Apache Flink

后端 未结 1 1013
孤城傲影
孤城傲影 2021-01-15 03:07

I have written a very simple java program for Apache Flink and now I am interested in measuring statistics such as throughput (number of tuples processed per second) and lat

相关标签:
1条回答
  • 2021-01-15 03:30

    We are running custom metrics like meter, gauge in our production streaming job running on yarn .

    Here are steps :

    Additional dependency to pom.xml

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

    We are using version 1.2.1

    Then add meter to MyMapper class .

    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;
            }
        }
    }
    

    Hope this helps .

    0 讨论(0)
提交回复
热议问题