I have self-hosted both DataHub and OpenMetadata. DataHub took my team three days to get into a state where we trusted it enough to point real ingestion at it. OpenMetadata took an afternoon. That is not because OpenMetadata is "better" — it is because the two projects have fundamentally different opinions about how much infrastructure a metadata catalog should demand from you.
If you are evaluating open-source data catalogs in 2026, these two are the serious contenders. Alation and Atlan cost six figures. Amundsen is effectively dead. Marquez is niche. DataHub and OpenMetadata are the ones you will actually deploy. The choice comes down to operational complexity vs battle-tested maturity — and your team's honest assessment of how much Kafka you want to babysit.
Origins and philosophy
DataHub came out of LinkedIn's internal metadata platform (originally called WhereHows, then DataHub internally) and was open-sourced in 2020. It was built to index metadata across LinkedIn's thousands of datasets, dashboards, pipelines, and ML models. The design reflects that heritage: it assumes you have an infrastructure team, you already run Kafka, and you need something that scales to millions of metadata entities without breaking a sweat.
OpenMetadata was started in 2021 by Suresh Srinivas and a team of former Uber data infrastructure engineers. Their thesis was that existing catalogs (DataHub included) were too complex to operate and that metadata should follow a single open standard rather than being locked in proprietary schemas. The pitch is: one metadata standard, one API, one deployment unit, and a UI that non-engineers can actually use without training.
These origins matter because they explain every architectural decision that follows.
Architecture comparison
This is where the rubber meets the road. The two projects look similar from the UI — both give you search, lineage graphs, data quality tabs, and glossary features. Under the hood, they are radically different animals.
DataHub architecture
DataHub is a distributed system composed of multiple services:
- GMS (Generalized Metadata Service) — the core metadata store and API layer, written in Java
- MAE/MCE Consumer — Kafka consumers that process metadata change events
- Kafka — the event backbone; all metadata mutations flow through topics
- Elasticsearch — powers search and discovery
- Neo4j or MySQL — the graph store for lineage and relationships (Neo4j for richer graph queries, MySQL as a simpler alternative)
- MySQL/Postgres — relational storage for the metadata aspects
- Frontend — React app served via a separate container
In practice, a minimal DataHub deployment means: Kafka (with Zookeeper or KRaft), Elasticsearch, a graph store, a relational store, GMS, the frontend, and at least one Kafka consumer. That is seven containers minimum. With schema registry and monitoring, you are looking at 10+ services.
OpenMetadata architecture
OpenMetadata is architecturally simpler by design:
- One Java server — handles API, ingestion coordination, and event processing
- MySQL or Postgres — single relational store for all metadata
- Elasticsearch/OpenSearch — search index
- Airflow (optional) — for scheduling ingestion workflows
That is it. Three services for a production deployment. The Java server does what DataHub splits across GMS, Kafka consumers, and the MAE processor. Metadata mutations are handled internally without needing an external event bus.
What this means in practice
DataHub's architecture gives you event sourcing for free. Every metadata change is a Kafka event, which means you can build downstream consumers, replay history, and integrate with other systems that speak Kafka. That is genuinely powerful if your organization already has a Kafka-centric data platform.
OpenMetadata's architecture means fewer moving parts to break at 3am. No Kafka partition rebalancing. No Elasticsearch cluster splits where half your services have stale data because a consumer lag built up overnight. When something goes wrong, there is one log to read.
Deployment experience
DataHub
The official DataHub quickstart uses Docker Compose with a docker-compose.yml that pulls in 8+ containers. It works for evaluation. For production, the project provides Helm charts, and this is where it gets real:
# Abridged — real DataHub Helm values are 500+ lines
global:
kafka:
bootstrap:
server: "kafka-broker:9092"
elasticsearch:
host: "elasticsearch"
port: "9200"
neo4j:
host: "neo4j:7474"
datahub-gms:
resources:
requests:
memory: "2Gi"You will spend time tuning Kafka topic retention, Elasticsearch heap sizes, and GMS JVM settings. The DataHub team has done solid work on the Helm charts, but this is not a "deploy and forget" system. Plan for a dedicated infra person to own it for the first quarter.
The managed alternative is Acryl Cloud (built by the DataHub founders). Pricing starts around $20k/year and removes the operational burden entirely. If budget allows and you want DataHub's feature set without the ops tax, Acryl is worth evaluating.
OpenMetadata
OpenMetadata's Docker Compose actually works for small production deployments (under 50 data assets being ingested). For real production, there is a Helm chart that deploys three pods: the server, the database, and Elasticsearch.
# OpenMetadata Helm — the important bits
openmetadata:
config:
database:
host: mysql
port: 3306
elasticsearch:
host: elasticsearch
port: 9200
pipelineServiceClientConfig:
# Optional Airflow for scheduling
apiEndpoint: http://airflow:8080I had OpenMetadata running with real Snowflake ingestion in under two hours. The bottleneck was configuring Snowflake service accounts, not the catalog itself.
Metadata ingestion
Both projects use Python-based ingestion frameworks that work as source-sink pipelines. The approaches differ in how they are structured and how you extend them.
DataHub ingestion
DataHub's ingestion framework is called DataHub CLI / datahub ingest. Recipes are YAML files:
source:
type: snowflake
config:
account_id: "xy12345.us-east-1"
username: "${SNOWFLAKE_USER}"
password: "${SNOWFLAKE_PASSWORD}"
warehouse: "COMPUTE_WH"
sink:
type: datahub-rest
config:
server: "http://datahub-gms:8080"DataHub has 80+ connectors covering databases, warehouses, BI tools, orchestrators, and cloud services. The connector quality varies — Snowflake, BigQuery, and dbt are excellent. Some of the less popular connectors lag behind. Writing a custom source means implementing a Python class that emits MetadataChangeEvent objects, which requires understanding DataHub's entity/aspect model (a learning curve, but well documented).
OpenMetadata ingestion
OpenMetadata manages ingestion through its server directly. You configure connectors in the UI or via API:
{
"service": {
"type": "Snowflake",
"config": {
"account": "xy12345.us-east-1",
"username": "OM_SERVICE_ACCOUNT",
"password": "...",
"warehouse": "COMPUTE_WH"
}
},
"sourceConfig": {
"config": {
"type": "DatabaseMetadata",
"includeViews": true,
"markDeletedTables": true
}
}
}OpenMetadata has around 50+ connectors as of mid-2026. Fewer than DataHub, but growing fast. The connector SDK is simpler — you implement a Source class that yields standard JSON entities. I found writing a custom connector for an internal system took about half a day with OpenMetadata vs a full day with DataHub.
Lineage
Both tools extract lineage automatically from SQL queries, dbt manifests, Airflow DAGs, and Spark jobs.
DataHub's lineage is more mature. It has had years of refinement at LinkedIn scale, supports column-level lineage for most major warehouses, and the graph visualization handles thousands of nodes without choking. The Neo4j backend means complex graph traversals (impact analysis across 5+ hops) are fast.
OpenMetadata's lineage has caught up significantly. Column-level lineage landed in 2023 and is solid for Snowflake, BigQuery, and Redshift. The UI for lineage exploration is arguably nicer than DataHub's — cleaner, less cluttered. But for very deep graphs (500+ nodes in a single lineage view), it can stutter because it relies on the relational store rather than a dedicated graph database.
Data quality and observability
This is an area where OpenMetadata has pushed ahead. It ships built-in data quality tests (Great Expectations-style) that you define directly in the UI — null checks, uniqueness, freshness, custom SQL assertions. Results display alongside table metadata, and you get alerts without needing a separate observability tool.
DataHub has data quality integrations (it can ingest results from Great Expectations, dbt tests, etc.) but does not run tests itself. It is a catalog, not an observability platform. The philosophy is: let specialized tools handle quality checks, and DataHub surfaces the results alongside other metadata.
Neither approach is wrong. If you already run Great Expectations or dbt tests, DataHub's integration approach avoids duplication. If you want quality checks without adding another tool to the stack, OpenMetadata's built-in tests are genuinely useful.
Community and governance
| DataHub | OpenMetadata | |
|---|---|---|
| GitHub stars (mid-2026) | ~10,500 | ~5,500 |
| Contributors | 600+ | 250+ |
| Release cadence | Monthly-ish | Every 4-6 weeks |
| Backing | LinkedIn + Acryl Data | Collate (commercial entity) |
| Slack community | ~12,000 members | ~5,000 members |
| License | Apache 2.0 | Apache 2.0 |
| Managed offering | Acryl Cloud ($20k+/yr) | Collate ($15k+/yr) |
DataHub has the larger community, which translates to more Stack Overflow answers, more blog posts, and more people who have hit the same obscure Kafka consumer-lag issue you are debugging. OpenMetadata's community is smaller but notably active — the maintainers are responsive on Slack, and PRs from external contributors get reviewed within days, not weeks.
One thing I will flag: DataHub's release cadence has slowed slightly as Acryl focuses on the managed product. Core features still land in the open-source version, but some polish (improved onboarding flows, richer RBAC) shows up in Acryl Cloud first. OpenMetadata has been more aggressive about shipping features into the open-source product directly.
Comparison table
| Dimension | DataHub | OpenMetadata |
|---|---|---|
| Architecture | Multi-service (GMS + Kafka + ES + Graph + DB) | Single Java service + DB + ES |
| Min containers (prod) | 7-10 | 3-4 |
| Setup time (experienced eng) | 2-3 days | 2-4 hours |
| Connectors | 80+ | 50+ |
| Column-level lineage | Mature, most warehouses | Solid, major warehouses |
| Built-in data quality | No (integrates external) | Yes (native tests) |
| RBAC | Policies + roles | Policies + roles + teams |
| API-first | Yes (GraphQL + REST) | Yes (REST + JSON Schema) |
| Kafka dependency | Required | Not needed |
| Custom connector difficulty | Medium (entity/aspect model) | Low (simple Source SDK) |
| Scale ceiling | Millions of entities (proven) | Tens of thousands (proven), beyond that untested |
| Managed option | Acryl Cloud | Collate |
When to pick DataHub
- Your organization already runs Kafka and has engineers comfortable operating it
- You are cataloging 1,000+ datasets, dashboards, and pipelines
- You need proven scale — DataHub runs at LinkedIn, Saxo Bank, Optum, and other large enterprises
- You want the option to move to Acryl Cloud later without a migration
- Event-driven metadata (streaming downstream consumers off metadata changes) is a real use case for you
When to pick OpenMetadata
- You are a team of 5-20 engineers who do not want to hire someone to babysit Kafka and Neo4j
- Simplicity of deployment matters more than theoretical infinite scale
- You want built-in data quality tests without bolting on another tool
- Faster iteration speed appeals to you — new features land in open-source faster
- You prefer a system you can fully understand in a week rather than one that takes a quarter to master
The honest middle ground
Most teams I talk to do not have LinkedIn-scale metadata problems. They have 100-500 tables across two or three warehouses, a handful of dbt models, and some Airflow DAGs. For that scale, OpenMetadata is the pragmatic choice — it does everything you need with a fraction of the operational overhead.
If you are at a larger organization with thousands of data assets, a platform team, and existing Kafka infrastructure, DataHub's maturity and scale story is hard to argue against. The Acryl Cloud managed offering also removes the biggest objection (operational complexity) if you have the budget.
Neither tool solves the harder organizational problem: getting people to actually use the catalog. Both have good UIs, both support tags and glossaries and ownership, but adoption depends on culture and workflow integration, not features. Pick the one you will actually keep running, not the one with the longer feature checklist.
A note on lightweight alternatives
Not every team needs a full data catalog. If what you actually want is schema visibility — seeing what tables exist, what columns they have, how they relate — a connected schema browser might be enough. Fastero gives you schema browsing and AI-powered querying across connected databases without the overhead of deploying and maintaining a standalone catalog. It is not a replacement for DataHub or OpenMetadata if you genuinely need lineage, governance, and organizational metadata — but for teams whose real problem is "I cannot find what columns are in this table," it solves that in minutes instead of days.
Related reading:
- Best Data Catalog Tools
- How to Choose a Data Catalog Without Overengineering
- Atlan vs Alation: Data Catalogs Compared
- How to Monitor Schema Drift in BigQuery
Try Fastero free — automate your data workflows with triggers, scheduling, and monitoring — connect your sources and start building in minutes. No credit card required.

