Guide · Databricks

The Hadoop to Databricks Migration Guide

A Hadoop to Databricks migration is a sequence, not a copy job. You inventory what runs, map each component to a target, move the data, re-register the metadata, convert the jobs and the security model, then run both platforms side by side until nobody reads the old one. This guide takes the steps in order, with the commands that matter and the places migrations stall. It applies to Apache Hadoop and to Cloudera estates alike.

Tyler Eastridge

By Tyler Eastridge, Head of Operations

LinkedIn · Updated · 8 min read · 12 sections

On this page
The migration in one paragraph

The migration in one paragraph

Inventory first: the datasets still read, the jobs still running and who has access. Copy HDFS data to cloud object storage with DistCp, convert Parquet tables to Delta with CONVERT TO DELTA, rewrite ORC, Avro and text tables, and register everything in Unity Catalog. Replace Oozie with Lakeflow Jobs, re-express Ranger or Sentry policies as Unity Catalog grants, and run both platforms in parallel on a few pilot workloads before moving the rest in waves. Retire the cluster only when no approved consumer is left. Databricks' own guidance puts mid-sized migrations at four to six months and large ones at nine to eighteen, so plan for waves, not a weekend.

Start with the destination and the scope

Databricks said on 13 August 2026 that it had crossed a $7 billion revenue run-rate, growing more than 80% year over year in its second quarter. That tells you the destination is widely adopted and well funded. It says nothing about what your migration will cost, and the steps below are the part that decides that.

Scope the estate before you scope the project. Hadoop clusters often carry datasets and jobs nobody owns any more, so the first deliverable is a list of what you will not migrate.

Inventory what is actually in use

Build the inventory from evidence, not documentation. For HDFS, list directories by size and last access, because capacity is not the same as use. For Hive, list databases, tables, storage format (Parquet, ORC, Avro, text, SerDe), partition counts and whether each table is managed or external. For jobs, list every Oozie workflow and coordinator with its actions, schedule and owner. For security, export the Ranger or Sentry policies and the groups they name.

A Cloudera to Databricks move adds three items: Impala workloads and their query patterns, the Oozie schedules, and the authorization layer, which is Sentry on CDH and Ranger on CDP.

Databricks recommends a control map that records each capability, its target equivalent and the evidence of parity. Keep it; it becomes the sign-off checklist at cutover.

Map each component to its Databricks target

Databricks publishes its own mapping for HDFS, Hive, YARN, MapReduce and the ingestion tools. The rows for Impala, Oozie and Ranger are our working mapping, not a one-to-one translation.

Hadoop and Cloudera components and their Databricks targets
Hadoop or Cloudera componentDatabricks targetWhat changes
HDFSCloud object storage (S3, ADLS, GCS) with Delta LakeData is copied, then converted. Storage and compute scale separately.
Hive metastoreUnity CatalogThree-level names (catalog.schema.table), grants, lineage and audit.
Hive SQLSpark SQL and Databricks SQLMostly translates. Hive SerDe tables and Hive UDFs need rework.
ImpalaDatabricks SQL warehousesRetest every query; dialect and function differences surface one query at a time.
OozieLakeflow JobsA workflow becomes a job, actions become tasks, coordinators become triggers.
MapReduce, Pig, SqoopSpark and Lakeflow ingestionRefactor MapReduce into Spark; Databricks recommends Lakeflow for Pig and Sqoop flows.
Spark on YARNSpark on Databricks computePer Databricks, existing Spark jobs typically need only cluster configuration changes.
HBaseDelta Lake or a cloud NoSQL serviceAnalytical tables move to Delta; low-latency operational use may need a managed NoSQL service.
Ranger or SentryUnity Catalog grants, row filters and column masksPolicies are rewritten as grants to account-level groups.
Table · Hadoop and Cloudera components and their Databricks targets. Scroll sideways on small screens.

Move the data from HDFS to cloud storage

Copy with DistCp, which runs as a MapReduce job on the cluster you are leaving:

hadoop distcp -update -direct \
  hdfs://nn1:8020/warehouse/sales \
  s3a://acme-lake/warehouse/sales

-update copies files that are missing or differ. Against an object store it compares modification time and length, not checksums, so run your own checksum or row-count comparison afterwards. -direct skips the temporary-file rename, which is expensive on object stores. The link between your data centre and the cloud sets the schedule, so copy in waves and finish each dataset with one incremental pass at cutover.

Land the files under Unity Catalog external locations, each backed by a storage credential, so access is governed from the first query.

Convert tables to Delta

CONVERT TO DELTA converts a Parquet table in place: it lists the files, writes a Delta transaction log and infers the schema from the Parquet footers.

CONVERT TO DELTA parquet.`s3://acme-lake/warehouse/sales`
  PARTITIONED BY (sale_date DATE);

PARTITIONED BY is required when you point at a path holding partitioned data, and optional when you name a table already registered in the metastore. The command handles Parquet, and Iceberg tables whose files are Parquet. Hive tables stored as ORC, Avro or text need a rewrite instead, for example CREATE TABLE ... AS SELECT into a Delta table.

Stop the writers first. Files the Delta log does not track are invisible and VACUUM can delete them, so do not append or update during conversion and send every later write through Delta. If several external tables share one directory, converting one breaks the others until each is converted. NO STATISTICS finishes faster, and Databricks then recommends liquid clustering to reorganize the layout and generate statistics.

Hive metastore to Unity Catalog

Which tool applies depends on where the metastore lives.

  • On-premises metastore. The data must be in cloud storage first. Hive metastore federation does not support data in on-premises HDFS or a metastore reached in remote Thrift mode, so it cannot bridge a live on-premises cluster. Recreate the tables over the copied files from your exported DDL.
  • SYNC. Upgrades Hive metastore external tables to Unity Catalog external tables. Run the dry run first; it returns DRY_RUN_SUCCESS for each table that can move.
  • Federation. Lets Unity Catalog govern tables in an external Hive metastore or AWS Glue while jobs migrate one at a time. Foreign catalogs on external metastores are read-only, and Hive functions, UDFs and JDBC-backed tables are not supported. Treat it as a bridge, not a destination.
  • UCX. A Databricks Labs project with assessment, group migration and table migration workflows. It is provided as-is, with no SLA.
SYNC SCHEMA main.sales FROM hive_metastore.sales DRY RUN;

The status codes name the blockers: HIVE_SERDE (SerDe tables are not supported), LOCATION_OVERLAP, MULTIPLE_EXT_LOCATIONS and VIEWS_NOT_SUPPORTED (recreate views from SHOW CREATE TABLE). AS EXTERNAL upgrades managed tables as external ones on Databricks Runtime 13.2 and above, and tables in workspace DBFS root need DEEP CLONE instead. SYNC also writes a table property into each source Delta table's log, so the cluster that runs it needs write access to the table location.

15-minute emergency SLA. Named senior engineers.

Contact Us

Convert the jobs: Oozie, Hive, Impala and MapReduce

Oozie to Databricks Workflows. Lakeflow Jobs, previously called Databricks Workflows, runs a DAG of tasks with dependencies, retries, if/else and for-each control flow. Shell, Hive, Spark and Java actions map to notebook, Python script, SQL, JAR and Spark Submit tasks. Coordinators map to triggers: scheduled for time-based runs, file arrival where Oozie waited on a data-availability check, table update, or continuous.

Impala to Databricks SQL. Point interactive and BI traffic at a SQL warehouse and retest each query against the same data. Rank queries by how often they run and move the busiest first.

Hive and MapReduce. Hive SQL translates to Spark SQL with minimal refactoring, per Databricks. MapReduce jobs are rewritten as Spark. Where Kafka feeds the cluster, ingestion becomes Structured Streaming into Delta; the Kafka to Databricks post covers it.

Map the security model

Ranger on CDP and Sentry on CDH both say who can read which table, column and row. In Unity Catalog the same intent becomes grants to account-level groups:

GRANT USE CATALOG ON CATALOG main TO `analysts`;
GRANT USE SCHEMA ON SCHEMA main.sales TO `analysts`;
GRANT SELECT ON TABLE main.sales.orders TO `analysts`;

A user needs USE CATALOG and USE SCHEMA on the parents as well as the privilege on the object. Column masking and row-filter policies become Unity Catalog column masks and row filters.

Do not convert policies one by one. Reduce the exported policy set to the groups and tables that are actually used, then write grants for those. Kerberos keytabs go away with the cluster, and identities are managed at the Databricks account level.

Validate and run both platforms in parallel

Pick two or three pilot workloads with clear owners and run them on both platforms, comparing latency, throughput and data accuracy. Databricks recommends automating row-count, checksum and schema checks at every stage. Add aggregates by partition and by business key, because row counts alone miss type coercion and timestamp changes.

Give each wave a hard end date for the parallel run. Dual-platform spend is the cost that quietly grows.

Cut over and retire the cluster

Migrate in waves, high-value and low-complexity pipelines first. For each wave: freeze writes on the source dataset, run a final incremental distcp -update, convert or register the tables, point consumers at the Unity Catalog names and leave the old path read-only for a fixed period. If you used fallback mode on external locations during the move, turn it off at the end.

Retire the cluster only when no approved consumer remains. That condition, not the calendar, is the finish line.

Where migrations stall

  • ORC and SerDe tables found late. CONVERT TO DELTA and SYNC both refuse them, so find them in the inventory.
  • Shared directories. Several external tables over one path break the others on conversion and trip LOCATION_OVERLAP on sync.
  • Writers still running. Appends during conversion create files Delta cannot see.
  • Small files. They arrive with the data. Compact them with OPTIMIZE after conversion.
  • Policies copied, not reduced. Years of Ranger or Sentry sprawl becomes years of grant sprawl.
  • Unowned jobs. A scheduled job nobody owns fails silently after the cluster is gone.

Getting help

If you want a second pair of hands on the inventory or the cutover plan, see our Databricks migration services. Clusters that must keep running while you move still need care, and Hadoop consulting and support covers NameNode, YARN and Kerberos until the last workload is off.

Sources: Databricks Hadoop migration guidance, CONVERT TO DELTA, SYNC, Hive metastore federation, UCX, Lakeflow Jobs, job triggers, Unity Catalog privileges and the 13 August 2026 press release; Apache Hadoop DistCp guide; Cloudera on Sentry to Ranger. Check the docs for your Databricks Runtime version before a migration window.

Frequently asked questions

How long does a Hadoop to Databricks migration take?

Databricks' own guidance says small projects take days to weeks, mid-sized enterprises average four to six months, and large enterprises may need nine to eighteen. The inventory and the security mapping decide where you land in that range more than the volume of data does.

Can Hive metastore federation migrate an on-premises Hadoop cluster?

No. Federation does not support data stored in on-premises HDFS or a metastore reached in remote Thrift mode. Copy the data to cloud storage first, then register tables in Unity Catalog. Foreign catalogs on external metastores are also read-only.

Does CONVERT TO DELTA work on ORC tables?

No. It converts Parquet tables and Iceberg tables whose files are Parquet. ORC, Avro and text tables need a rewrite into Delta, for example with CREATE TABLE AS SELECT.

What replaces Oozie on Databricks?

Lakeflow Jobs, previously called Databricks Workflows. A workflow becomes a job, actions become tasks, and coordinators become scheduled, file arrival, table update or continuous triggers.

Do I migrate Ranger or Sentry policies one for one?

No. Reduce the exported policies to the groups and tables actually in use, then write Unity Catalog grants, column masks and row filters for those. Copying the policy set as it stands carries the sprawl across.

More resources

Other Databricks guides, comparisons and research

Free Consultation

Get Expert Eyes on Your Databricks Environment

Whether you're troubleshooting a production incident, planning a migration, or want a second opinion on your architecture — our team is ready. No pitch, just answers.

Email Us