On this page
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 or Cloudera component | Databricks target | What changes |
|---|---|---|
| HDFS | Cloud object storage (S3, ADLS, GCS) with Delta Lake | Data is copied, then converted. Storage and compute scale separately. |
| Hive metastore | Unity Catalog | Three-level names (catalog.schema.table), grants, lineage and audit. |
| Hive SQL | Spark SQL and Databricks SQL | Mostly translates. Hive SerDe tables and Hive UDFs need rework. |
| Impala | Databricks SQL warehouses | Retest every query; dialect and function differences surface one query at a time. |
| Oozie | Lakeflow Jobs | A workflow becomes a job, actions become tasks, coordinators become triggers. |
| MapReduce, Pig, Sqoop | Spark and Lakeflow ingestion | Refactor MapReduce into Spark; Databricks recommends Lakeflow for Pig and Sqoop flows. |
| Spark on YARN | Spark on Databricks compute | Per Databricks, existing Spark jobs typically need only cluster configuration changes. |
| HBase | Delta Lake or a cloud NoSQL service | Analytical tables move to Delta; low-latency operational use may need a managed NoSQL service. |
| Ranger or Sentry | Unity Catalog grants, row filters and column masks | Policies are rewritten as grants to account-level groups. |
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 returnsDRY_RUN_SUCCESSfor 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.
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 DELTAandSYNCboth refuse them, so find them in the inventory. - Shared directories. Several external tables over one path break the others on conversion and trip
LOCATION_OVERLAPon sync. - Writers still running. Appends during conversion create files Delta cannot see.
- Small files. They arrive with the data. Compact them with
OPTIMIZEafter 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.