Skip to main content

Marquez (marquez)

Lineage of datasets, jobs and runs collected with OpenLineage: the platform configures the API that receives the lineage events of the RAG ingestion and the agent pipelines, its PostgreSQL database and the lineage web interface.

Generated from catalog/services/marquez.yaml: do not edit by hand.

Summary​

Version0.51.1
Useinstall and configure, configure and connect
Layerfunctional (AI catalog)
CategoryData platforms
Installation methodspodman
External connectionno
Sandbox onlyno

Licence​

SPDX identifierApache-2.0
Licence policycore licence (MIT or Apache-2.0)
Licence exception-
Platform componentopenlineage

Packages and artifacts​

A package the project of the service publishes (its image, its binary archive, its Python or OS package) carries the licence of the service; a third-party package carries the licence written on its row, read from the official upstream metadata.

KindPackageVersionLicenceDetails
container imagedocker.io/marquezproject/marquez0.51.1Apache-2.0image key api, used by api, digest sha256:0721c976cff17d8b14f7949d85d6dac9c7ea37cb9fe857caa19833730fcb1a50
container imagedocker.io/marquezproject/marquez-web0.51.1Apache-2.0image key web, used by web, digest sha256:7312112ca0e611b0a37b00d3da6a677485ae4a97622b23d3ae24d849a927868b

Images are pinned by tag in the descriptor, and by digest when the descriptor declares one (the offline bundle then refuses a pulled image that does not carry it); the digest is recorded in the mirror of the Manager when the offline bundle is imported, and every pull or load is checked against it.

Supported systems and architectures​

MethodOperating systemsArchitectures
podmanRHEL family (dnf), Debian family (apt), Arch Linux (pacman)x86_64, aarch64 (not restricted by the descriptor)

Certified host systems: RHEL 8/9/10, Rocky Linux 8/9/10, AlmaLinux 8/9/10, Oracle Linux 8/9, CentOS Stream 9/10, Ubuntu 22.04/24.04, Debian 12, Arch Linux (rolling). The host preflight accepts these systems (other releases of a known family give a warning, end of life releases are refused) and the x86_64 and aarch64 architectures.

Prerequisites​

Host​

  • at least 2048 MB of memory (warning, memory).

Network and ports​

ComponentPort namePortOpened in the host firewall
apiapi5000/tcpyes
apiadmin5001/tcpno
webui3000/tcpyes

Services and connections needed​

Details and resolution: see Dependencies.

Installation methods and modes​

MethodDefaultWhat the method uses
podmanyesthe container images of the descriptor, run by Podman under systemd

Components​

ComponentKindInstallation methodsPorts
Lineage API (api)masterpodman5000/tcp, 5001/tcp
Lineage interface (web)masterpodman3000/tcp

Single server (standalone) (default)​

One API and one interface.

What the mode deploys:

ComponentPlacement
apimin 1, max 1
webmin 1, max 1

Replicated (replicated)​

Several stateless API instances behind the load balancer, sharing the database.

What the mode deploys:

ComponentPlacement
apimin 2, recommended 2
webmin 1, recommended 1

Install this service​

The install wizard of the Navin Manager plans, validates and runs the installation; you need the services:install permission on the cluster.

  1. Open the wizard. In Clusters, choose the row action Install services of the target cluster. The wizard opens on its first step, Service.

  2. Choose the service. On the Service step, select Marquez. The card shows the licence Apache-2.0 and the dependencies the installation needs.

  3. Choose the hosts and the mode. On the Hosts step, tick the hosts, then choose the Mode: standalone (default), replicated. Each mode deploys the components listed in Installation methods and modes. With several components, place each one on its hosts in Component placement (Suggest placement proposes a placement that respects the cardinalities).

  4. Bind the dependencies. On the Bindings step, choose for each dependency (database) Install with the platform or Use an existing connection; an optional dependency can stay on No binding.

  5. Configure. On the Configure step, review the parameters (see Configuration parameters). Passwords left empty with a generated default are generated and sealed by the Manager.

  6. Review and install. On the Install step the Manager validates the plan and shows the installation order; when it says "The plan is valid. Ready to install.", choose Install. A highly available mode is installed only when its HA checks pass.

  7. Verify. The operation ends when the health checks of every instance pass (see Health checks); the service then shows as running in Services.

Connect an existing service​

Schemeshttps, http
Default port5000
Authenticationnone
Health check/api/v1/namespaces
Authentication methodFieldsDescription
none-Marquez has no authentication of its own: protect it by the network or an authenticating gateway.

Official documentation: https://github.com/MarquezProject/marquez

FieldTypeDefaultDescriptionNotes
Namespace (namespace)stringnavinOpenLineage namespace of the platform jobs.-

High availability​

Clusterreplicas (replication)
High availabilityexternal (external)
Failoverload balancer (load-balancer)
Replicationshared store (shared-store)
Quorumnone (none)
Discoverynone (none)
Entry pointload balancer (load-balancer)
Official documentationhttps://marquezproject.ai/docs/deployment/

Prerequisites​

PrerequisiteMust be highly availableModesDescription
databaseyesmodes of level ha or clusterHighly available PostgreSQL holding the lineage metadata.

Topology per mode​

ModesHighest catalog levelDistributionQuorum componentFault domainsDescription
standalonestandalone (standalone)single (single)-1One API and one interface.
replicatedha (ha)active-active (active-active)-2Several stateless API instances sharing PostgreSQL behind the load balancer.

Notes​

  • Running several API instances is not described by the upstream project: validate it on your workload. The web interface stays a single instance unless its count is raised.

Configuration parameters​

General​

ParameterTypeDefaultAllowed valuesRequiredSecretRestartDescription
API port (api_port)port5000-nonoyesPort of the lineage API (/api/v1/lineage receives the OpenLineage events).
Admin port (admin_port)port5001-nonoyesPort of /healthcheck and /metrics.
Interface port (web_port)port3000-nonoyesPort of the lineage web interface.
TLS (tls_enabled)boolfalse-nonoyesServe the lineage API and the web interface in HTTPS with a certificate of the Manager CA. The API gets a Dropwizard https connector whose PKCS12 key store the container builds at each start from the certificate (openssl of the image, random password); the interface is served in HTTPS by a front of the same routes that calls the API in HTTPS and verifies it with the Manager CA. The admin port (/healthcheck, /metrics) stays HTTP, published on the loopback of the host only.
Default namespace (default_namespace)stringnavin-nononoOpenLineage namespace of the platform jobs.

Dependencies​

For each active dependency the Manager takes the first of: the binding chosen in the wizard; a service of the same installation that provides it; a service already installed in the cluster; the only connection of the expected type. Otherwise an optional dependency stays unbound, and a required one is added to the installation in its default mode (the column below names the catalog service added).

BindingProvided byConnection typeEndpointOptionalWhen nothing is boundDescription
databasepostgresqlpostgresqlsqlnopostgresql is added to the installationDatabase of the lineage metadata (namespaces, datasets, jobs, runs).

Endpoints​

EndpointSchemeComponentPortPathTLS parameterBinding parametersBinding secretsProvisioning command
apihttpapi5000 (api_port)/api/v1tls_enabled---
webhttpweb3000 (web_port)-tls_enabled---

Client configuration files​

Files rendered for the client configuration download:

  • marquez.env (client.env.j2)

Health checks​

Liveness (per instance)​

ComponentCheckDetails
apiHTTP http://127.0.0.1:{{ config.admin_port }}/healthcheckExpected 200; 60 retries; interval 3 s; timeout 5 s
webHTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.ip or '127.0.0.1' }}:{{ config.web_port }}/Expected 200; 30 retries; interval 2 s; timeout 5 s

Readiness (service check)​

CheckDetails
HTTP {{ 'https' if config.tls_enabled else 'http' }}://{{ host.ip or '127.0.0.1' }}:{{ config.api_port }}/api/v1/namespacesExpected 200; Expected namespaces

Preflight checks​

CheckTypeMeaningSeverityComponents
memorymemory_mb {"min": 2048}at least 2048 MB of memorywarningapi
api_port_freeport_free {"param": "api_port"}port 5000 free on the hostblockingapi

Uninstall​

Paths removed when the data is purged: {{ paths.log }}.

  • Marquez lineage: {{ 'https' if config.tls_enabled else 'http' }}://{{ host.fqdn }}:{{ config.web_port }}/

Upstream documentation​