Skip to content

feat(parquet querier): Introduce querier mode for querying parquet blocks #12295

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 28 commits into
base: parquet-main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
035aa1b
Update comments about retaining label strings (#12269)
bboreham Aug 1, 2025
fcfbe27
[HELM] Add labels configuration for gateway ingress (#11964)
unkls Aug 1, 2025
8185b1d
querier: check size of whole frontend response before sending it (#12…
56quarters Aug 1, 2025
7cbea23
chore: Fix configuration setting used in query-frontend error (#12276)
56quarters Aug 1, 2025
b29354d
helm: Make query-scheduler a required component (#12188)
56quarters Aug 1, 2025
8a0fb7d
Parallelize `updateBlock` (#12117)
maruthgoyal Aug 1, 2025
42e89e6
mimir-distributed 5.8 release notes (#12250)
tacole02 Aug 2, 2025
bb537b2
bring in prometheus/parquet-common code to new package (#11490)
francoposa May 23, 2025
c7e9011
parquet store-gateways: open labels file from bucket with flag (#12091)
francoposa Jul 15, 2025
189cc54
fix: fix test assertions
npazosmendez Jul 15, 2025
152f4c0
parquet: optimize query sharding by leveraging materialized series ho…
npazosmendez Jul 18, 2025
12d89cc
feat(parquet): Update parquet bucket stores to cache metadata of labe…
jesusvazquez Jul 22, 2025
355e222
chore(parquet): update parquet-common
jesusvazquez Jul 22, 2025
c6f5a65
feat(converter): Modify converter to skip blocks based on compaction …
jesusvazquez Jul 28, 2025
161fea3
feat(parquet converter): New flag to disable compression (#12241)
jesusvazquez Jul 31, 2025
3eb1618
feat(parquet): Cache get range calls for parquet label and chunks fil…
jesusvazquez Jul 31, 2025
15dc1a2
chore: New k6 script to test parquet (#12239)
jesusvazquez Jul 31, 2025
d74c403
feat(converter): limit queue size with flag
jesusvazquez Jul 31, 2025
82fee70
YOLO: bump parquet-common
jesusvazquez Jul 31, 2025
c258673
vendor parquet-common@7101e5a
francoposa Jul 31, 2025
e4bf134
feat(converter): monitor discovery and processing goroutines
jesusvazquez Aug 1, 2025
93f5baa
bring new parquet common
jesusvazquez Aug 1, 2025
b5e7c1d
feat(querier parquet); Implement parquet queryable for the querier
jesusvazquez Aug 2, 2025
fcc28cc
customize limits
jesusvazquez Aug 4, 2025
4d6ea9b
fix tests
jesusvazquez Aug 4, 2025
525b973
make docs
jesusvazquez Aug 4, 2025
f70f725
Set concurrency
jesusvazquez Aug 5, 2025
b28d201
update
jesusvazquez Aug 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,14 @@
* [CHANGE] Query-frontend: Remove the CLI flag `-query-frontend.downstream-url` and corresponding YAML configuration and the ability to use the query-frontend to proxy arbitrary Prometheus backends. #12191
* [CHANGE] Query-frontend: Remove experimental instant query splitting feature. #12267
* [FEATURE] Distributor, ruler: Add experimental `-validation.name-validation-scheme` option to specify the validation scheme for metric and label names. #12215
* [ENHANCEMENT] Compactor: Add `-compactor.update-blocks-concurrency` flag to control concurrency for updating block metadata during bucket index updates, separate from deletion marker concurrency. #12117
* [ENHANCEMENT] Stagger head compaction intervals across zones to prevent compactions from aligning simultaneously, which could otherwise cause strong consistency queries to fail when experimental ingest storage is enabled. #12090
* [ENHANCEMENT] Querier: Add native histogram definition to `cortex_bucket_index_load_duration_seconds`. #12094
* [ENHANCEMENT] MQE: Add support for applying common subexpression elimination to range vector expressions in instant queries. #12236
* [BUGFIX] Querier: Samples with the same timestamp are merged deterministically. Previously, this could lead to flapping query results when an out-of-order sample is ingested that conflicts with a previously ingested in-order sample's value. #8673
* [BUGFIX] Store-gateway: Fix potential goroutine leak by passing the scoped context in LabelValues. #12048
* [BUGFIX] Distributor: Fix pooled memory reuse bug that can cause corrupt data to appear in the err-mimir-label-value-too-long error message. #12048
* [BUGFIX] Querier: Fix timeout responding to query-frontend when response size is very close to `-querier.frontend-client.grpc-max-send-msg-size`. #12261

### Jsonnet

Expand Down
666 changes: 666 additions & 0 deletions cmd/mimir/config-descriptor.json

Large diffs are not rendered by default.

164 changes: 164 additions & 0 deletions cmd/mimir/help-all.txt.tmpl

Large diffs are not rendered by default.

20 changes: 20 additions & 0 deletions cmd/mimir/help.txt.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -543,6 +543,26 @@ Usage of ./cmd/mimir/mimir:
List of network interface names to look up when finding the instance IP address. (default [<private network interfaces>])
-overrides-exporter.ring.store string
Backend storage to use for the ring. Supported values are: consul, etcd, inmemory, memberlist, multi. (default "memberlist")
-parquet-converter.conversion-interval duration
The frequency at which the conversion runs. (default 1m0s)
-parquet-converter.data-dir string
Directory to temporarily store blocks during conversion. This directory is not required to persist between restarts. (default "./data-parquet-converter/")
-parquet-converter.discovery-interval duration
The frequency at which user and block discovery runs. (default 5m0s)
-parquet-converter.max-block-age duration
Maximum age of blocks to convert. Blocks older than this will be skipped. Set to 0 to disable age filtering.
-parquet-converter.ring.consul.hostname string
Hostname and port of Consul. (default "localhost:8500")
-parquet-converter.ring.etcd.endpoints string
The etcd endpoints to connect to.
-parquet-converter.ring.etcd.password string
Etcd password.
-parquet-converter.ring.etcd.username string
Etcd username.
-parquet-converter.ring.instance-interface-names string
List of network interface names to look up when finding the instance IP address. (default [<private network interfaces>])
-parquet-converter.ring.store string
Backend storage to use for the ring. Supported values are: consul, etcd, inmemory, memberlist, multi. (default "memberlist")
-print.config
Print the config and exit.
-querier.cardinality-analysis-enabled
Expand Down
22 changes: 22 additions & 0 deletions development/mimir-microservices-mode/docker-compose.jsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,11 @@ std.manifestYamlDoc({

// If true, a query-tee instance with a single backend is started.
enable_query_tee: false,

// If true, start parquet-converter
enable_parquet: false,
// If true, emulate classic store-gateway behavior by loading the Parquet labels file to disk
parquet_store_gateway_load_index_to_disk: false,
},

// We explicitely list all important services here, so that it's easy to disable them by commenting out.
Expand All @@ -44,6 +49,7 @@ std.manifestYamlDoc({
self.read_components + // Querier, Frontend and query-scheduler, if enabled.
self.store_gateways(3) +
self.compactor +
(if $._config.enable_parquet then self.parquet_converter else {}) +
self.rulers(2) +
self.alertmanagers(3) +
self.nginx +
Expand Down Expand Up @@ -142,6 +148,14 @@ std.manifestYamlDoc({
}),
},

parquet_converter:: {
'parquet-converter': mimirService({
name: 'parquet-converter',
target: 'parquet-converter',
httpPort: 8040,
}),
},

rulers(count):: if count <= 0 then {} else {
['ruler-%d' % id]: mimirService({
name: 'ruler-' + id,
Expand All @@ -164,12 +178,20 @@ std.manifestYamlDoc({
for id in std.range(1, count)
},

local extraStoreGatewayArgs = std.join(
' ', [
(if $._config.enable_parquet then '-log.level=debug -store-gateway.parquet-enabled=true' else null),
(if ($._config.enable_parquet && !$._config.parquet_store_gateway_load_index_to_disk) then '-blocks-storage.bucket-store.parquet-load-index-to-disk=false' else null),
]
),

store_gateways(count):: {
['store-gateway-%d' % id]: mimirService({
name: 'store-gateway-' + id,
target: 'store-gateway',
httpPort: 8010 + id,
jaegerApp: 'store-gateway-%d' % id,
extraArguments: extraStoreGatewayArgs,
})
for id in std.range(1, count)
},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
title: "Grafana Mimir Helm chart version 5.8 release notes"
menuTitle: "V5.8 release notes"
description: "Release notes for Grafana Mimir Helm chart version 5.8"
weight: 300
---

# Grafana Mimir Helm chart version 5.8 release notes

Grafana Labs is excited to announce version 5.8 of the Grafana Mimir Helm chart, which is compatible with Grafana Mimir v2.17 and Grafana Enterprise Metrics (GEM) v2.17. The `mimir-distributed` Helm chart is the best way to install Mimir on Kubernetes.

The highlights that follow include the top features, enhancements, and bug fixes in this release. For a comprehensive list of changes, see the [Helm chart changelog](https://github.com/grafana/mimir/tree/main/operations/helm/charts/mimir-distributed/CHANGELOG.md).

## Important changes

KEDA autoscaling has changed `kedaAutoscaling.toPromQLLabelSelector` from an object to a list of strings, adding support for all PromQL operators.

The Memcached timeout for the ruler-storage cache has increased from 200 milliseconds to 500 milliseconds.

Grafana Mimir now exports OTel traces instead of Jaeger traces. As a result, the environment variable `JAEGER_REPORTER_MAX_QUEUE_SIZE` is no longer set by default. Components use OTel's default value of 2048 unless explicitly configured. You can still configure `JAEGER_REPORTER_MAX_QUEUE_SIZE` if you configure tracing using Jaeger environment variables, and you can always set `OTEL_BSP_MAX_QUEUE_SIZE` for OTel configuration. For more information, refer to [Configure Grafana Mimir tracing](https://grafana.com/docs/mimir/<MIMIR_VERSION>/configure/configure-tracing/) in the Mimir documentation.

The rollout-operator has been updated to the latest release, which includes support for OTEL\_ tracing environment variables.

Memberlist configuration for ingesters now enables `memberlist.abort-if-fast-join-fails`.

Memcached now sets resource requests for the Memcached Prometheus exporter by default.

A new `store_gateway.grpcMaxQueryResponseSizeBytes` value has been added to set the maximum store-gateway gRPC query response send size, and corresponding querier receive size, with a default of 200MB.

## Features and enhancements

There are new values for setting annotations and labels for the rollout-operator.
Loading