Hi Till,

How would I plugin a custom counter so that I could use the existing
MetricGroup and AbstractReporter functionality?

Steve

On Friday, June 17, 2016, Till Rohrmann <trohrm...@apache.org
<javascript:_e(%7B%7D,'cvml','trohrm...@apache.org');>> wrote:

> Hi Steve,
>
> I thought again about the thread-safe counters and I'm not so sure anymore
> whether we should add them or not. The reason is that we could also mark
> the Counter class as not final. Then it would be possible to define your
> user-defined counters which could be thread-safe. This would reduce the
> complexity on the Flink side since covering all metrics use cases might be
> difficult. Would that work for you? What do the others think about it?
>
> Cheers,
> Till
>
> On Thu, Jun 16, 2016 at 3:33 PM, Till Rohrmann <trohrm...@apache.org>
> wrote:
>
>> I agree that dropwizard already offers a lot of functionality and we
>> shouldn't reimplement it. Therefore, I've introduced a Flink histogram
>> interface which is implemented by a dropwizard histogram wrapper. That way
>> Flink has it's own histogram abstraction and dropwizard histograms can be
>> used with Flink via this wrapper class. See the PR [1] for more information.
>>
>> [1] https://github.com/apache/flink/pull/2112
>>
>> Cheers,
>> Till
>>
>> On Tue, Jun 14, 2016 at 6:05 PM, Cody Innowhere <e.neve...@gmail.com>
>> wrote:
>>
>>> Counter of dropwizard is thread-safe.
>>> I think dropwizard metrics are implemented fairly well and used quite
>>> widely in open source projects, I personally on the side of using
>>> dropwizard metrics rather than re-implement them, unless for performance
>>> reasons. Still, I'm +1 for adding a wrapper on top of dropwizard metrics.
>>>
>>> On Tue, Jun 14, 2016 at 10:45 PM, Till Rohrmann <trohrm...@apache.org>
>>> wrote:
>>>
>>> > +1 for the thread safe metrics. This should be a rather low hanging
>>> fruit
>>> > and easily added.
>>> >
>>> > If we decide to add a histogram, then I would also be in favour of
>>> > implementing our own version of a histogram. This avoids adding a hard
>>> > dependency on Dropwizard or another metrics library to Flink core.
>>> Adding
>>> > our own implementation would of course entail to also add a Dropwizard
>>> > wrapper for reporting. Thus, if a user component required a Dropwizard
>>> > histogram, then one could simply use the wrapper.
>>> >
>>> > Alternatively, one could also rely on external system to compute
>>> > histograms. For example, statsD supports the generation of histograms
>>> from
>>> > a stream of measurements. However, these histograms couldn't be used
>>> within
>>> > Flink.
>>> >
>>> > Implementation wise, the histogram would most likely follow the
>>> > implementation of Dropwizard's histogram:
>>> >
>>> > The basic idea is that a histogram can add samples to a reservoir
>>> which it
>>> > uses to calculate a set of statistics when queried. The statistics
>>> > comprises percentiles, mean, standard deviation and number of
>>> elements, for
>>> > example.
>>> >
>>> > The reservoir defines the strategy of how to sample the input stream.
>>> There
>>> > are different strategies conceivable: Uniform sampling, which
>>> constructs a
>>> > long term distribution of the seen elements, exponentially decaying
>>> > sampling, which favours more recent elements, sliding window or
>>> buckets.
>>> >
>>> > The question is now whether such an implementation already covers most
>>> use
>>> > cases or whether histograms should support more functionaly. Feedback
>>> is
>>> > highly appreciated :-)
>>> >
>>> > Cheers,
>>> > Till
>>> >
>>> > On Mon, Jun 13, 2016 at 6:37 PM, Stephan Ewen <se...@apache.org>
>>> wrote:
>>> >
>>> > > I think it is totally fine to add a "ThreadsafeCounter" that uses an
>>> > atomic
>>> > > long internally
>>> > >
>>> > > On Sat, Jun 11, 2016 at 7:25 PM, Steve Cosenza <scose...@twitter.com
>>> >
>>> > > wrote:
>>> > >
>>> > > > Also, we may be able to avoid the need for concurrent metrics by
>>> > > > configuring each Finagle source to use a single thread. We'll
>>> > investigate
>>> > > > the performance implications this week and update you with the
>>> results.
>>> > > >
>>> > > > Thanks,
>>> > > > Steve
>>> > > >
>>> > > >
>>> > > > On Friday, June 10, 2016, Steve Cosenza <scose...@twitter.com>
>>> wrote:
>>> > > >
>>> > > >> +Chris Hogue who is also working on operationalizing Flink with me
>>> > > >>
>>> > > >> Hi Stephan,
>>> > > >>
>>> > > >> Thanks for the background on your current implementations!
>>> > > >>
>>> > > >> While we don't require a specific implementation for histogram,
>>> > counter,
>>> > > >> or gauge, it just became clear that we'll need threadsafe
>>> versions of
>>> > > all
>>> > > >> three of these metrics. This is because our messaging source is
>>> > > implemented
>>> > > >> using Finagle, and Finagle expects to be able to emit stats
>>> > concurrently
>>> > > >> from its managed threads.
>>> > > >>
>>> > > >> That being said, if adding threadsafe versions of the Flink
>>> counters
>>> > is
>>> > > >> not an option, we'd also be fine with directly reading and writing
>>> > from
>>> > > the
>>> > > >> singleton Codahale MetricsRegistry that you start up in each
>>> > > TaskManager.
>>> > > >>
>>> > > >> Thanks,
>>> > > >> Steve
>>> > > >>
>>> > > >> On Fri, Jun 10, 2016 at 7:10 AM, Stephan Ewen <se...@apache.org>
>>> > wrote:
>>> > > >>
>>> > > >>> A recent discussion brought up the point of adding a "histogram"
>>> > metric
>>> > > >>> type to Flink. This open thread is to gather some more of the
>>> > > requirements
>>> > > >>> for that metric.
>>> > > >>>
>>> > > >>> The most important question is whether users need Flink to offer
>>> > > >>> specific implementations of "Histogram", like for example the "
>>> > > >>> com.codahale.metrics.Histogram", or if a "
>>> > > >>> org.apache.flink.metrics.Histogram" interface would work as well.
>>> > > >>> The histogram could still be reported for example via dropwizard
>>> > > >>> reporters.
>>> > > >>>
>>> > > >>> *Option (1):* If a Flink Histogram works as well, it would be
>>> simple
>>> > to
>>> > > >>> add one. The dropwizard reporter would need to wrap the Flink
>>> > > Histogram for
>>> > > >>> reporting.
>>> > > >>>
>>> > > >>> *Option (2)*: If the code needs the specific Dropwizard Histogram
>>> > type,
>>> > > >>> then one would need a wrapper class that makes a Flink Histogram
>>> look
>>> > > like
>>> > > >>> a dropwizard histogram.
>>> > > >>>
>>> > > >>> ----------
>>> > > >>>
>>> > > >>> As a bit of background for the discussion, here are some thoughts
>>> > > behind
>>> > > >>> the way that Metrics are currently implemented in Flink.
>>> > > >>>
>>> > > >>>   - The metric types in Flink are independent from libraries like
>>> > > >>> "dropwizard" to reduce dependencies and retain freedom to swap
>>> > > >>> implementations.
>>> > > >>>
>>> > > >>>   - Metric reporting allows to reuse reporters from dropwizard
>>> > > >>>
>>> > > >>>   - Some Flink metric implementations are also more lightweight
>>> than
>>> > > for
>>> > > >>> example in dropwizard. Counters for example are not thread safe,
>>> but
>>> > > do not
>>> > > >>> impose memory barriers. That is important for metrics deep in the
>>> > > streaming
>>> > > >>> runtime.
>>> > > >>>
>>> > > >>>
>>> > > >>>
>>> > > >>
>>> > > >
>>> > > > --
>>> > > > -Steve
>>> > > >
>>> > > > Sent from Gmail Mobile
>>> > > >
>>> > >
>>> >
>>>
>>
>>
>

-- 
-Steve

Sent from Gmail Mobile

Reply via email to