Skip to content
QuorlyticTalk to a Data ExpertContact
Menu

Engineering guide

Cloudera to Databricks migration: disposition every workload.

A Cloudera estate can contain several systems with different responsibilities. Moving a Spark job does not by itself settle Hive metadata, storage ownership, scheduling, permissions or a non-Spark serving dependency. Start with a workload map, then trace the identity that runs the job and the identity that reads its result.

Direct answer

Cloudera to Databricks migration evaluates source workloads individually across storage, tables, Spark code, scheduling, identity and consumers. Choose a named target cloud and runtime, classify each responsibility, and compare both data behavior and effective access. Components outside the selected Databricks design need an explicit retain, adapt, replace or exclude decision.

Engineering reference guideUpdated Oct 23, 202615 min read

Illustrative architectureCloudera migration · disposition the whole workload path
Inspect a workload layer

Source responsibility

Cloudera estate

Target responsibility

Databricks on AWS
  1. 01
    Data + metadataHDFS, Hive tables and source ownership
    01
    Storage + catalogueNamed object/table paths and governed ownership
  2. 02
    Compute + scheduleSpark, libraries, jobs and non-Spark services
    02
    Runtime + jobsSelected runtime, dependencies and run identity
  3. 03
    Identity + policySource principals and intended access boundaries
    03
    Consumer controlsEffective privileges and tested alternate paths

Behavior contract

  • Retain / adapt
  • Replace / exclude
  • Data + access evidence
Responsibility pathDisposition boundarySelected layer

Illustrative AWS reference. Non-Spark components retain an explicit disposition; a successful notebook is not whole-estate compatibility evidence.

  1. 01Inventory the estate
  2. 02Disposition each workload
  3. 03Compare data and access
  4. 04Move a consumer boundary

What does the source estate actually contain?

Inventory the source distribution and versions, storage paths, Hive metadata, Spark jobs, libraries, schedulers, security policies and consuming systems. Group these by the decision or data product they serve. The word Hadoop does not identify one migration unit or establish that every component has the same target.

For each workload, record its entry point, execution identity, runtime, file/table formats, input/output locations, schedule and external dependencies. Identify jobs that rely on a particular local file layout, native library, network path or service outside Spark. Those details often decide whether code is portable or needs a different implementation.

Use an AWS target as the bounded reference here: object storage, a selected Databricks runtime, governed tables and named job/consumer identities. Other clouds have their own identity and storage controls. The Databricks platform page gives destination context without turning this example into a whole-estate product compatibility claim.

Illustrative decision treeChoose a disposition for each part of the estate
Which behavior does this component contribute to the data product?
  1. 01

    Adapt a represented job

    Spark code and dependencies fit the selected target execution model.

    Compare output under named runtimes, libraries and identities.

    Example: a scheduled Spark transformation with explicit file/table inputs.

  2. 02

    Move a data reference

    Storage/table ownership and consumers need a governed target path.

    Specify location, format, metadata and effective-access checks.

    Example: a Hive-backed report whose target reference is a governed table.

  3. 03

    Retain or replace separately

    A non-Spark service or external dependency has another responsibility.

    Name its retained owner or selected replacement and evidence.

    Example: an HBase serving dependency outside the Spark migration scope.

Illustrative AWS/Databricks decisions. Matching platform names or a successful notebook does not disposition every Hadoop service.

How can a working job still expose the wrong data?

Test effective access separately from job execution. The pipeline identity may need to write a restricted table while an analyst may read only an authorised result. A successful job run proves neither that the analyst's permitted query works nor that the analyst's restricted path is denied.

The illustrative matrix below uses two invented identities and two data products. A pipeline principal can publish both products; an analyst can read the aggregate and must be denied the restricted detail. Run the checks using the identities and paths that the application will actually use, including any direct storage path relevant to the architecture.

Databricks' SDK reference distinguishes direct grants from effective permissions that include inherited privileges. Capture that context when assessing the target. Recreating a familiar role name does not establish policy equivalence, and a table-level denial is incomplete evidence if another permitted path exposes the same restricted records.

Illustrative decision fixtureOne working job. Four access decisions.

Illustrative identities: pipeline principal publishes data; analyst reads the permitted aggregate and is denied restricted detail.

Inputs
  • 01Pipeline principal
  • 02Analyst
  • 03Aggregate product
  • 04Restricted detail
Illustrative permissions: publishing principal versus consuming analyst
DimensionAggregate productRestricted detail
Pipeline principalPublish allowedPublish allowed
AnalystRead allowedRead denied

Check the actual principal and access path. Include inherited privileges and any direct storage route relevant to the architecture.

Which responsibilities should be retained, adapted or replaced?

Give every workload responsibility a disposition and a reason. Retain a component when it continues to have a defined role; adapt a workload when its behavior can be preserved with a bounded change; replace a responsibility with an explicitly selected component; exclude it when it is outside the migration scope.

The modernization service can frame the dependency and operating-model assessment. Keep the disposition precise enough that another engineer can identify what remains on the source after a given consumer moves.

Keep the responsibilities that a tool does not represent visible in the disposition record. Databricks Labs' UCX describes assistance for Unity Catalog table/view migration and downstream references inside Databricks; that is a narrower scope than moving a complete Cloudera estate. Its stated support boundary also matters. Assess any assistant against the source distribution, target cloud/runtime and represented components rather than extending a catalogue tool into an unsupported whole-estate promise.

Cloudera estate dispositions for a bounded AWS and Databricks reference design
DimensionDecision boundaryEvidence to retain
Spark code and runtimeAdapt only the code, dependencies and execution model represented by the workload.Source/target runtime versions, libraries, configuration and equivalent output fixtures.
Hive and storageChoose table ownership, location, format and the target catalogue path explicitly.Metadata, file/table assumptions, update behavior and tested consumer references.
Scheduling and publicationAssign dependencies, retries, secrets and consumer publication to actual components.A complete run/failure path rather than a notebook-only demonstration.
Ranger/Sentry policy intentTranslate the intended access boundary into target identities and controls.Allowed and denied cases, inherited privileges and any alternate storage route.
Other Hadoop servicesGive HBase, specialised serving and other non-Spark dependencies their own disposition.An explicit retained/replacement/excluded scope; no inferred automatic substitute.

What should runtime and data compatibility checks cover?

Compare a representative workload under named source and target conditions. Check schemas, key relationships, decimal/time handling, file/table assumptions and the behavior of updates or late data. Keep the code revision and dependency environment with the observed output.

A Spark application can rely on libraries, configuration, paths or external systems that are absent from a new job environment. Include those dependencies in the fixture and record which are replaced or retained. A notebook that processes a small sample is useful development evidence, but it does not establish the scheduled workload's publication window or production access path.

Select batch or change-driven movement from the consumer's actual freshness requirement. The CDC, batch and streaming guide helps separate those choices. If the source workload has no stable row key or change history, make that constraint visible before promising a continuous incremental path.

The handoff map follows storage/catalogue, runtime/schedule and identity/access as separate lanes. Each needs a named target and an accepted consumer boundary. Include direct storage routes only where they exist in the selected architecture, and retain the effective identities used to observe them. Use the data contracts guide to connect the governed dataset with its intended consumers, freshness and operating responsibilities.

Illustrative dependency swimlaneMove data, permissions and consuming references together
01Storage + catalogue
  1. Source workloadPaths and owners recorded

    Retain source table/file formats and metadata references.

  2. Candidate targetTarget ownership specified

    Choose storage, table/catalogue path and lifecycle responsibility.

  3. Consumer handoffReferences accounted for

    Identify readers, writers and retained source consumers.

02Runtime + schedule
  1. Source workloadJob environment fixed

    Keep libraries, entry point, identity and external dependencies.

  2. Candidate targetScheduled result compared

    Check data, refresh and failure behavior under the selected runtime.

  3. Consumer handoffOperating owner named

    Keep the schedule, dependencies and restore boundary with the product.

03Identity + access
  1. Source workloadPolicy intent recorded

    Specify allowed and denied populations for actual identities.

  2. Candidate targetEffective paths checked

    Include inherited privileges and applicable direct storage routes.

  3. Consumer handoffConsumer reference moved

    Accept the permitted result and the denied alternate path together.

Illustrative handoff. Catalogue access and storage access are architecture-specific; this map does not assert automatic policy translation or tested enforcement.

What defines a safe consumer handoff?

Carry the data product, its allowed consumers and its publication boundary together. Compare accepted source and target results, verify the target's effective permissions and define the operating owner before moving the consumer reference. Shared storage or metadata dependencies can bind several jobs into one wave.

The workflow below pairs workload disposition with data and permission evidence. Retain the actual identities used for each allowed and denied case. If the target catalogue, inherited policy or source correction changes, revisit the affected cases rather than treating the first successful read as permanent access acceptance.

Record the last recoverable data publication, the source history needed to resume, and any consumer action a restore cannot undo. The pipeline reliability guide provides the publication and restored-state frame. Keep managed table ownership, storage lifecycle and external consumers in that recovery scope.

Illustrative migration workflowMove a consumer boundary with data and access evidence
  1. 01
    Inventory

    Identify storage, metadata, code, scheduling and policy dependencies.

    Keep: distribution/runtime versions and workload ownership.

  2. 02
    Disposition

    Give every responsibility a retain, adapt, replace or exclude decision.

    Keep: rationale and any component left on the source.

  3. 03
    Compare

    Check equivalent data and the permitted/denied consumer paths.

    Keep: runtime context and effective access observations.

  4. 04
    Handoff

    Move the consumer reference with an operating and recovery owner.

    Keep: publication, acknowledgement and restore boundary.

An unresolved non-Spark dependency or restricted access path stays attached to its workload. Do not infer its acceptance from another job's successful run.

How should capacity, cost and run ownership be assessed?

Measure the complete workload path: data movement, storage, runtime, schedule, concurrency and the people or functions that operate it. Compare equivalent accepted outputs and operating conditions. A platform price or a single Spark job duration cannot establish the cost of a full Cloudera exit.

Include source/target overlap, retained services, network constraints, dependency management and incident handling in the assessment. Test whether the selected target job and access model can be operated with the actual run capacity available. An architecture that silently requires an additional operating team is missing a material part of the comparison.

Use the managed data and AI service for responsibilities and exclusions, and the platform cost assessment for bounded cost evidence. Neither a synthetic fixture nor a source inventory establishes a savings result.

Estimate the source responsibilities that remain after the first wave as well as the target workload. Retained serving services, storage, security operations and network dependencies can change the full-exit economics. Keep those residual responsibilities attached to an owner. The boundary pack below makes inherited access, alternate storage and a runtime dependency concrete without implying that this guide executed those checks or validated a selected cluster version.

Illustrative boundary test benchThree boundaries a successful Spark run does not settle

Illustrative acceptance pack for the bounded AWS design. The expected outcomes are specifications to test with the actual environment and identities.

  1. 01

    Inherited privilege

    Input / condition

    Analyst has no direct table grant but inherits a parent privilege

    Expected contract

    Evaluate effective access, not the direct-grant list alone

    Evidence to retainKeep parent context and an actual allowed/denied query observation.

  2. 02

    Alternate storage path

    Input / condition

    Restricted detail is reachable outside the intended table path

    Expected contract

    The declared restricted population stays denied on applicable paths

    Evidence to retainInclude storage identity/routes in the architecture's permission evidence.

  3. 03

    Missing runtime dependency

    Input / condition

    Notebook sample succeeds; scheduled job needs a native library

    Expected contract

    The job environment explicitly supplies or replaces that dependency

    Evidence to retainRetain versioned libraries, job configuration and scheduled-output comparisons.

No live policy or cluster was tested. A catalogue permission result does not by itself describe every storage or execution path.

What should the first Cloudera migration brief include?

Provide a versioned workload inventory, a named target cloud, representative code and table references, the source policy intent, accepted consumer outputs and the freshness requirement. Include at least one non-Spark dependency and one denied-access case so the assessment covers more than code portability.

Share synthetic identities and appropriately permitted samples. Mark each dependency with its proposed disposition and identify the evidence still needed to confirm it. A concrete consumer boundary makes the initial assessment useful even when the wider estate contains components outside the selected target design.

If workflow conversion is also part of the programme, read the PowerCenter to dbt guide. For a warehouse consumer, use the warehouse migration playbook. Keep those responsibilities connected without presenting them as one universal conversion mechanism.

Questions and trade-offs

Does a working Spark job establish a complete Cloudera migration?

It establishes only the behavior represented by that job and its tested conditions. Storage, Hive metadata, scheduling, identity, non-Spark services and downstream consumers need explicit dispositions and evidence.

Include the scheduled job and its real dependencies, not only an interactive development environment. Retain the distribution/runtime/library versions and accepted data product. The wider estate may still need retained serving, storage or security responsibilities after that one job moves.

Can source policy names simply be recreated in Unity Catalog?

The intended allow/deny boundary must be expressed and tested with the actual target identities and paths. Record effective inherited privileges and alternate storage routes. Matching role names alone does not establish equivalent enforcement.

A direct grant list can omit inherited privileges. Use the target's effective permission context and the applicable storage/execution routes with actual consumer identities. The intended restricted population must remain bounded wherever the architecture permits a consumer to reach it.

Does this guide cover every Hadoop service?

It provides a workload-disposition method and a bounded AWS/Databricks reference. HBase, specialised serving and other components need their own retain, replace or exclude decision. No automatic replacement is inferred from Spark compatibility.

Keep a separate disposition for services outside the represented runtime and catalogue scope. A platform feature or migration assistant should be assessed against the actual component and versions selected, not treated as an automatic replacement for the estate's entire service inventory.

What is the most useful first assessment sample?

Choose a real consumer boundary with representative code, data, scheduling and access requirements. Include a meaningful edge case and an explicit denied path. That sample reveals the dependencies a successful notebook-only demonstration can miss.

Retain the permitted result, a denied access case, the scheduled run environment and the source dependency disposition together. That sample can support a bounded implementation decision without implying that every service or policy in the estate has been migrated.

What is the difference between a Cloudera migration and a Unity Catalog upgrade?

A Cloudera estate can include storage, Hive, Spark, schedulers, policy systems and non-Spark serving. A Unity Catalog transition concerns a selected Databricks data-governance and reference boundary. Databricks Labs' UCX describes assistance for tables/views and downstream Databricks references; it does not establish a whole Cloudera exit.

Keep tool scope and support terms with the workload disposition. Choose evidence for the actual source components, target cloud/runtime and consumers instead of extending one catalogue demonstration into a full-estate claim.

Can HDFS files and Hive tables simply be copied?

Data movement is one responsibility. A usable target also needs explicit storage ownership, table/file format assumptions, catalogue references, update behavior, consumers and access controls. Capture the source metadata and the actual paths each reader and writer uses.

Compare data results and governed access through the selected target reference. A copied directory or recreated table name alone does not establish equivalent lifecycle, permissions, refresh behavior or downstream compatibility.

What determines the migration's cost and sequence?

Group jobs by data products and shared storage, catalogue, runtime, schedule and access dependencies. Estimate adaptation, data movement, retained services, target operation, comparison evidence and recovery separately. Source/target overlap and a service left behind can materially affect the exit boundary.

Use representative observed workloads and record exclusions. A notebook benchmark, cluster count or platform price cannot establish full-estate savings or a fixed project duration.

When can the source cluster be retired?

Retirement needs an accounted-for disposition for every in-scope reader, writer, service and operating responsibility. Confirm that consumer references, retained history, recovery needs, access boundaries and non-Spark dependencies no longer rely on the retiring component.

Keep the agreed retention and recovery evidence before changing that dependency. The first accepted Spark job or a catalogue migration can be a useful wave milestone; it is not by itself evidence that the whole source estate is ready to retire.

Technical references

Share

Your next data decision

Start with a clear problem.
Build what comes next.

Talk to a Data Expert

Bring the business question.
We'll help shape the engineering brief.