Live data from Hacker News

Monarch: Google’s Planet-Scale In-Memory Time Series Database [pdf]

vldb.org

21–30 of 49 posts

Re: Monarch: Google’s Planet-Scale In-Memory Time Series Database [pdf]

#21
post #18

Question for googlers (and ex-googlers). Is there anything out there that's as convenient as /streamz, but in opensource form?

If you are looking for /varz, https://prometheus.io

If you really want /streamz with simple aggregation for distribution, description for metrics etc in an HTML page, I haven't encountered one yet.

Re: Monarch: Google’s Planet-Scale In-Memory Time Series Database [pdf]

#22

Earlier quoted context omitted.

[Also a Googler, opinons mine] In addition to what the other people are saying: there are some limitations to monarch (or really, the data upload path) that are quite annoying, so monarch isn't even necessarily the "best". It's just very good. There are ways to improve it. The issue is, even if you give away the secret sauce that doesn't really help with making the secret sauce scale or whatnot, nor does anyone that…

The one thing I really want (which apparently Monarch has) is histogram retention. I'm often called upon to summarize service latency as global p50 and p95, and at the sheer volume of data we have, we aggregate that metric. Thus I am left calculating an average of p95s, which isn't super useful. To the best of my knowledge, nothing else in the market does that.

Stackdriver/Google Cloud monitoring is backed by Monarch, so if you want the flavor of a Monarch distribution-valued metric, see the docs:

https://cloud.google.com/monitoring/api/ref_v3/rest/v3/Typed...

Since the distribution is represented by a CDF of buckets, there's no guarantee that you'll get an accurate representation of the median or any other quantile. On the other hand you'll get an exact average.

Re: Monarch: Google’s Planet-Scale In-Memory Time Series Database [pdf]

#23
post #21
post #18

Question for googlers (and ex-googlers). Is there anything out there that's as convenient as /streamz, but in opensource form?

If you are looking for /varz, https://prometheus.io If you really want /streamz with simple aggregation for distribution, description for metrics etc in an HTML page, I haven't encountered one yet.

No, looking for streamz specifically. I'd like to be able to see how each node is doing and have automatic, zero-config aggregation in k8s a-la Borg/Monarch. The service I built was one of the first large users of Monarch at Google many years ago. All because I couldn't be bothered to learn Borgmon. :-)

Re: Monarch: Google’s Planet-Scale In-Memory Time Series Database [pdf]

#24
post #10

Interesting that this paper contains hard numbers hinting at Google's absolute scale. They say Monarch has 144000 leaves. Even if each leaf is assigned only 1 CPU core -- which is probably a low estimate because who would do that? -- that makes Google's monitoring stack a Top 100 supercomputer. The only other places I've seen Google give out hard numbers were a presentation by Jeff Dean mentioning map-reduce core-yea…

Yeah the "supercomputer" ranking is a bit of a joke. Every mid-sized google dc would count as a top 10 supercomputer.

Isn't the whole point of a supercomputer that it isn't just a datacentre with an LED display on the front?

Re: Monarch: Google’s Planet-Scale In-Memory Time Series Database [pdf]

#25
post #18

Question for googlers (and ex-googlers). Is there anything out there that's as convenient as /streamz, but in opensource form?

6-7 years ago I used to use Statsd+Graphite. Statsd is kinda like streamz (although it works in a completely different way, but from the app perspective it's similar), and Graphite is like Monarch. It had a pretty ugly UI, and I think today people use Grafana as the front-end instead.

Re: Monarch: Google’s Planet-Scale In-Memory Time Series Database [pdf]

#27
As someone interested in PL theory, I've long found the query language exposed by Monarch surprisingly interesting (briefly discussed in section 5.1 but the description doesn't quite do it justice). It's a functional language, a breath of fresh air compared to "real programming languages" in use at Google like C++, Java, or Go.

The most interesting idea is that its native data types are time series of integers, doubles, distributions of doubles, booleans, and tuples of the above. This means that the data you operate on intrinsically consist of many timestamped data points. It's easy to apply an operation to each point of the data, and it's also easy to apply operations on a rolling window, or on successive points. This makes the language have the feel of an array-based language, but even better because the elements are timestamped and the array can be sparse.

Furthermore the presence of fields in each data point adds more dimensions to the level of aggregation (not just the inherent time-based). Now the language has the feel of a native multi-dimensional array language. It feels amazing to program in it. You can easily do sophisticated queries like figuring out how many standard deviations each task's RPC latency for a specific call is above or below all tasks' mean, for outlier detection.

Re: Monarch: Google’s Planet-Scale In-Memory Time Series Database [pdf]

#28
post #27

As someone interested in PL theory, I've long found the query language exposed by Monarch surprisingly interesting (briefly discussed in section 5.1 but the description doesn't quite do it justice). It's a functional language, a breath of fresh air compared to "real programming languages" in use at Google like C++, Java, or Go. The most interesting idea is that its native data types are time series of integers, doubl…

Haven't read the paper yet, but could you expand on the tuple use? It seems like the odd person out in that list of primatives.

Re: Monarch: Google’s Planet-Scale In-Memory Time Series Database [pdf]

#29
post #27

As someone interested in PL theory, I've long found the query language exposed by Monarch surprisingly interesting (briefly discussed in section 5.1 but the description doesn't quite do it justice). It's a functional language, a breath of fresh air compared to "real programming languages" in use at Google like C++, Java, or Go. The most interesting idea is that its native data types are time series of integers, doubl…

Stream values can also be strings, and the language is terrible for dealing with string-valued streams when they come up (but they come up surprisingly often, you just don't normally worry about them too much).

If you ignore the issue of alignment, I actually think that a more conventional array based language, either something SQL-like or numpy-like, would be more accessible to most people. And things like windowing are incredibly unintuitive for most users.

Re: Monarch: Google’s Planet-Scale In-Memory Time Series Database [pdf]

#30
post #7

Earlier quoted context omitted.

But when you publish a paper on Monarch, aren't you giving away the core idea? In the case of PageRank, at least it was published after Google had already dominated the search space, i.e., many years after the conception, implementation, and utilization. I wonder if Google papers are internally reviewed before publishing so as to make sure only partial information is revealed, and not the secret sauce.

[Also a Googler, opinons mine] In addition to what the other people are saying: there are some limitations to monarch (or really, the data upload path) that are quite annoying, so monarch isn't even necessarily the "best". It's just very good. There are ways to improve it. The issue is, even if you give away the secret sauce that doesn't really help with making the secret sauce scale or whatnot, nor does anyone that…

> nor does anyone that isn't a large cloud provider need a custom solution like monarch

I'm not actually sure that's true. It's like many other things inside Google - people outside don't necessarily understand the value or know what's actually possible, because they've never experienced anything similar. It's sort of like trying to discuss the finer points of the taste of oysters with someone who has never tasted them.

I would very much like the feature set of Monarch (and streamz), without the maintenance overhead or even insane scale. Very, very few companies out there need to run anything at anywhere near "billion-user" scale, but literally all of them could benefit from painless and detailed monitoring that Monarch offers.

Post reply on HN