Hadoop集群迁移至DataLake集群

本文将详细阐述如何将您已有的旧版数据湖集群(Hadoop),高效地迁移至数据湖集群(DataLake),以下分别简称“旧集群”和“新集群”。迁移过程将充分考虑旧集群的版本、元数据类型以及存储方式,并针对这些因素,提供适应新集群的迁移策略与步骤。

背景信息

E-MapReduce(简称EMR)新版控制台是EMR发布的下一代云原生开源大数据平台,为用户提供全新平台体验、全新开发平台、全新资源形态和全新分析场景。新版控制台的功能特点,详情请参见EMR新版控制台上线公告

EMR on ECS作为EMR主要资源形态之一已实现多项功能更新,特别是EMR新版控制台提供了DataLake、Dataflow、OLAP和Custom新集群业务场景,相比EMR旧版控制台的集群场景(例如,Hadoop、Data Science等),在集群管控效能和引擎性能方面实现了显著提升。数据湖集群(DataLake)作为旧版数据湖(Hadoop)的升级版,升级至数据湖集群(DataLake)后您将获得多方面的显著好处,详细功能对比请参见数据湖集群

准备工作

梳理旧集群整体架构

梳理当前大数据业务架构,明确旧集群应用场景,并关注以下信息:

  • 服务范围与版本:记录每个旧集群上正在运行的服务范围和版本信息,以便评估升级兼容性和功能更新需求。

  • 元数据类型:确认旧集群采用的元数据类型(DLF、自建RDS),以规划新架构中元数据管理系统的对接和迁移策略。

  • 数据存储架构:分析旧集群的数据存储架构(本地HDFS、OSS、JindoFS block模式),为后续数据迁移路径设计提供依据。

  • 用户认证&鉴权架构:确认是否使用旧平台集群OpenLDAP、Ranger、Kerberos等服务,确保迁移后的新架构能够无缝继承现有的安全机制。

  • 调度系统:请确认当前使用的开发和调度系统,以便在迁移过程中保持任务调度的一致性和平稳过渡。

如果有多个旧集群需要升级,建议采取逐个集群逐步迁移的方法,确保业务连续性和稳定性。根据业务的实际需求和优先级,制定出切实可行的迁移顺序和计划,确保将旧集群平滑迁移到新集群中。

梳理旧集群详细信息

  • 查看集群实例配置信息

    在迁移至新平台创建集群时,旧集群的实例基础信息可应用于新集群,详情请参见创建新集群。除了需要重点关注的软件配置和硬件配置信息外,其余配置新旧集群可使用相同配置。

    在EMR on ECS的旧集群的基础信息节点管理页面,查看集群和节点组的配置信息,并重点关注以下信息。

    配置类型

    配置名称

    需要梳理的内容

    软件配置

    • 集群版本

    • 服务版本

    • 实际使用的组件列表

    • Hive元数据类型

    目前集群中使用的服务列表和对应的版本。

    硬件配置

    • 集群所在可用区

    • 各节点组的规格及付费类型

    集群所在可用区,以及各个节点组硬件配置情况。例如,CPU、内存、系统盘、数据盘等。

  • (可选)导出集群服务组件配置

    在集群的日常运维中,用户常常会根据实际需求对服务组件的默认配置进行个性化调整或添加额外自定义配置。为了高效地实现这些配置信息在不同集群间的迁移,可以充分利用EMR的配置导出功能,一次性批量导出原有集群的所有配置设置,在新集群初始化阶段再批量导入这些配置,从而轻松快捷地完成服务组件配置的迁移工作。当然,如果不采用此批量操作方式,您也可选择在新建集群成功启动后,逐一在服务管理界面中手工修改和调整各项服务配置。

    1. 导出服务配置。

      您可以参见导出和导入服务配置,一键导出目标服务组件的配置文件。

      说明
      • 选择配置文件:建议仅勾选编辑过的配置文件,可多选。

      • 导出模式:当前Hadoop集群暂不支持只导出自定义或者修改过的配置

      • 文件导出格式:请选择JSON格式,以便能够方便导入新集群。

      导出的配置文件各参数含义如下表所示。

      参数

      描述

      ApplicationName

      服务名。

      ConfigFileName

      配置文件名称。

      ConfigItemKey

      配置项的名称。

      ConfigItemValue

      配置项设置的具体值。

    2. 编辑配置文件。

      请务必仔细审查从旧集群导出的配置信息,筛选出并保留适用于新环境的必要配置项,同时删除不需要的配置。

      • 调整YARN相关资源参数配置时,通常需要紧密关联集群的实际硬件资源规格。因此,请务必确保新集群中导入的配置参数值是合理的。

      • 如果配置了JindoFS相关的配置(例如,Credential Provider),建议参照OSS/OSS-HDFS的相关配置进行调整,详情请参见配置OSS/OSS-HDFS Credential Provider

    3. 将编辑后的配置文件应用于(可选)软件自定义配置中,作为新集群的预设配置。

  • (可选)梳理引导操作

    您可以在查看集群实例配置信息阶段,查看旧集群是否配置了引导脚本。如果已添加引导操作脚本,应仔细评估每个脚本的功能,确认它们是否需要在新集群中继续使用。

    对于需要在新集群中继续使用的引导脚本,请按照以下步骤进行调整,确保它们能在新集群中正常运行。

    • 修改脚本中与开源组件版本相关的JAR包名称、路径等信息。新旧平台文件路径请参见常用文件路径

    • 如果脚本执行中涉及从OSS下载文件,相应的OSS命令可能需要修改,详情请参见管理引导操作

    脚本修改完成后,将其上传到OSS,并在新平台集群创建过程中填入修正后的引导脚本OSS地址。

    重要

    在将引导脚本部署至生产集群之前,请务必确保该脚本已在测试环境中验证通过。

  • (可选)梳理旧集群弹性伸缩规则

    旧平台集群中如果配置了弹性伸缩规则,请查看已配置的弹性伸缩规则,重点关注信息(例如,最大实例数、最小实例数、优雅下线、触发方式、触发规则),并在新平台集群创建完成后,重新配置弹性伸缩规则,详情请参见添加弹性伸缩规则

    1. 进入弹性伸缩页面。

      1. 登录E-MapReduce控制台

      2. 单击目标集群的集群名称。

      3. 单击弹性伸缩页签。

    2. 查看弹性伸缩规则。

      弹性伸缩页签,单击已配置弹性伸缩规则的节点组操作列的配置规则。重点关注以下信息:

      • 最大实例数

      • 最小实例数

      • 优雅下线

      • 触发方式

      • 触发规则(扩容、缩容)

    说明

    实例选择方式、计费类型、实例规格、优雅下线等参数在新集群上配置在节点组属性面板中,详情请参见管理节点组

  • (可选)查看旧平台集群负载情况

    查看集群资源负载可观测旧集群日常资源水位,用于评估新集群所需的硬件配置。您也可以选择先平滑迁移集群,即确保新旧平台集群采用相同的硬件规格设置,后续再根据实际运行过程中的资源利用率对新集群的硬件资源配置进行调整。

    • 方法一:查看集群监控

      查看集群负载指标,重点关注YARN和HDFS的使用情况,详情请参见查看服务监控指标

    • 方案二:查看EMR Doctor集群日报

      Doctor集群日报中提供当前集群计算资源、YARN调度资源、HDFS存储资源的全局分析,您可以查看集群已有数据总量、冷热数据分布情况以及集群计算任务分布情况等信息,详情请参见查看集群日报与分析

      说明

      EMR Doctor在旧平台集群需要申请安装,详情请参见开通EMR Doctor(Hadoop集群类型)

明确迁移方案和时间节奏

根据您当前大数据业务情况和实际每个旧集群配置情况,确定最终迁移目标,明确以下关键信息,并参考后续迁移步骤合理规划人力资源和时间周期。

  • 新集群所选产品版本和服务范围,服务组件兼容性请参见产品版本及可选服务

  • 新集群元数据选型(DLF或自建RDS)

  • 新集群存储方案(OSS-HDFS或OSS)

步骤一:构建新环境集群

创建新集群

创建新集群的详细步骤和参数说明,请参见创建集群,可以根据在查看集群实例配置信息中梳理出的集群参数进行填写。以下配置参数需要重点关注。

  • 产品版本及可选服务

    您可以根据在查看集群实例配置信息中梳理出的服务列表,对照服务兼容信息,选择新集群上服务的范围和版本。

    • 组件兼容性说明

      随着开源社区服务的版本更新,DataLake场景中部分服务的版本高于Hadoop中的服务版本。下表展示了高版本服务向下兼容情况。您可以根据旧集群软件版本信息,结合以下表格中的信息,确定新集群的服务版本。

      旧平台集群服务

      向下兼容区间1

      向下兼容区间2

      向下兼容区间3

      向下兼容区间4

      Spark

      2.x

      3.x

      -

      -

      Hive

      2.x

      3.x

      -

      -

      Tez

      全部新旧版本兼容

      -

      -

      -

      Delta Lake

      0.6.x

      0.8.0-1.1.0

      -

      -

      Iceberg

      0.12.x

      0.13.x

      -

      -

      Hudi

      0.6.x

      0.8.x

      0.9.x

      0.10.x

      Sqoop

      全部新旧版本兼容

      -

      -

      -

      Ranger

      1.x

      2.x

      -

      -

      OpenLDAP

      全部新旧版本兼容

      -

      -

      -

      说明
      • 向下兼容性区间表示在该区间内的软件版本,高版本可以兼容低版本。

      • 以上服务兼容信息仅供参考,具体请以各服务在开源社区的官方描述为准。

      • 由于开源社区活跃度变化和新技术更迭,部分开源服务不在EMR新平台上继续支持。

        例如,Hue、Zeppelin、Ooize,建议迁移至EMR Notebook或EMR Workflow,或者在集群上自行搭建相应的引擎。

    • 选择合适的产品版本

      重要

      在软件版本满足要求的情况下,建议选择最新的EMR产品版本,以获得更丰富的功能支持。

      当前DataLake场景下,阿里云EMR产品提供了EMR-3.x和EMR-5.x两个系列。每个系列中包含多个产品版本,这些不同版本中所集成的服务及其版本各异。在构建新集群时,您应根据自身数据湖应用场景以及目标服务的兼容性需求,为新集群选择合适的产品版本。下表为您展示了旧集群与新平台版本之间的对应关系。

      旧集群版本信息

      对应新集群版本信息

      EMR-3.35.0:YARN 2.8.5、HDFS 2.8.5、Hive 2.3.7、Spark 2.4.7

      EMR-3.x系列

      EMR-5.6.0:YARN 3.2.1、HDFS 3.2.1、Hive 3.1.2、Spark 3.2.1

      EMR-5.x系列

    • HDFS&OSS-HDFS选择说明

      在EMR-5.12.1及之后版本,EMR-3.46.1及之后版本中,您可以在可选服务中选择采用HDFS或OSS-HDFS作为集群的存储方式。

      image

      根据在明确迁移方案和时间节奏中明确的集群存储方案,在新集群创建中配置可选服务时需要选择对应的服务。

      新平台集群存储方式

      服务选择

      OSS

      OSS-HDFS

      OSS-HDFS

      OSS-HDFS

      说明

      当在可选服务参数中选择了OSS-HDFS服务时,需要配置集群存储根路径,即选择一个开通了OSS-HDFS服务的Bucket,作为集群的存储根路径。

  • 选择元数据

    EMR新平台支持以下元数据存储方式,请根据明确迁移方案和时间节奏中确定的元数据存储方案进行选择。如果元数据需要迁移,请在新平台集群创建完成后参见元数据迁移

    元数据存储方式

    说明

    DLF统一元数据(推荐)

    元数据存储在数据湖构建DLF中。如果旧平台已在使用DLF,可配置相同的DLF数据目录,则新集群创建完成后自动对接同一份元数据,无需迁移元数据。

    自建RDS

    使用自建的阿里云RDS作为元数据库。选择该方式时,需要配置已有RDS相关的参数,详情请参见配置自建RDS

    内置MySQL

    元数据存储在集群本地环境的MySQL数据库中。

    重要

    该方式仅用于测试场景,请勿用于生产环境。

  • (可选)软件自定义配置

    如果您导出了旧平台集群中的服务配置,或计划在创建集群流程中预置配置,则可以在新平台集群创建流程中开启软件自定义配置,并将编辑好的配置粘贴输入框中,详细使用方法请参见配置自定义软件

  • 硬件配置

    查看集群实例配置信息阶段,您可以全面了解集群中各个节点的硬件配置信息。针对不同实例节点,例如Master、Core和Task,您应当根据业务需求为每个实例节点选择合适的硬件资源配置。

    • 建议在创建新集群时选用ECS最新的实例规格族以及云盘类型,以使用更新的硬件特性。

    • 如需添加更多具有相同角色的节点组,可在集群创建完成后,通过新增节点组功能便捷地完成这一操作。

    • 挂载公网:支持按节点组维度进行开启。一旦开启某个节点组的公网挂载功能,该节点组内所有节点均将分配公网IP。

      当您需要通过公网登录到主节点,或者使用EMR服务提供的访问链接与端口映射功能时,必须为Master节点组开启公网。

(可选)创建新版Gateway

Gateway主要用于向计算集群提交任务和进行安全隔离。如果您在旧平台已经使用了Gateway集群,则可以参考以下信息在新平台上进行Gateway的创建。

在新平台上,EMR提供了更加灵活的Gateway部署方案,允许您在已有的ECS实例上部署Gateway,并自动同步计算集群的配置。为简化Gateway环境的部署过程,EMR推出了一个名为EMR-CLI的工具,该工具可协助您在已有的阿里云ECS实例上轻松布置Gateway,详情请参见使用EMR-CLI自定义部署Gateway环境

步骤二:迁移及校验

新集群环境构建完毕后,需要对旧集群元数据、数据和作业进行迁移。

元数据迁移

EMR新旧平台均支持自建RDS、DLF和内置MySQL三种元数据管理方式。针对新平台,我们强烈推荐您采用DLF元数据服务。根据新旧集群不同的元数据管理方式,有以下迁移方案。

旧平台元数据方案

新平台元数据方案

迁移方式

DLF

DLF

无需重新迁移数据,只需确保新集群指向与旧集群相同的DLF数据目录即可。

统一meta数据库

DLF

详情请参见EMR元数据迁移公告

本地MySQL

DLF

详情请参见元数据迁移

自建RDS

DLF

详情请参见元数据迁移

数据迁移

在新集群创建完成后,根据新旧集群不同的存储方式,提供以下迁移方式,以确保旧集群数据能够顺利且准确地迁移到新集群中。

旧集群存储

新平台存储

迁移方式

OSS

OSS

无需迁移数据。

OSS

OSS-HDFS

使用JindoDistCp使用说明工具进行数据迁移。

JindoFS Block

OSS-HDFS

HDFS

OSS-HDFS

数据正确性校验

说明

如果新集群不需要数据迁移,您可以跳过数据正确性校验这一环节。

在成功完成新集群的数据迁移任务后,需要对HDFS数据以及Hive库表等数据进行正确性验证。一旦发现数据不一致的问题,应立即采取行动,例如重新运行受影响的任务、补充缺失数据等措施。

针对不同的数据校验需求,您可以根据不同的校验要求选择对应的校验方式。

校验要求

校验方式

文件校验

通过计算文件的checkSum值进行比对,确保文件在迁移过程中未发生任何改变或损坏。

粗略数据校验

适用于快速评估整体数据一致性,主要检查表级别的统计信息,例如:核实表的总行数(count)、数字列的总和(sum)、平均值(avg)、最小值(min)以及最大值(max)。

详细数据校验

针对每行数据的详尽核查,以保证所有数据项在迁移后与源集群完全一致,这种校验方式能更深入地检测数据的完整性和准确性。

作业迁移

为了确保旧集群的作业能在新集群上顺利调度执行,针对不同的调度系统和环境,我们需要采取相应的迁移策略:

  • 对于正在使用EMR旧版数据开发的用户,需要迁移至EMR Workflow,详情请参见EMR旧版数据开发迁移公告

  • 采用其他开发环境(例如,阿里云DataWorks或您自建的开发平台)的用户,则需依据各自所使用的开发环境提供的迁移指南进行操作。

    请仔细参考对应平台的具体迁移说明文档,根据自身实际部署情况及业务需求调整相关配置,例如切换计算集群信息等关键设置,以确保作业能在新集群上正确调度执行。

步骤三:新旧集群并行双跑校验

在进行集群迁移时,为了最大限度地减少对线上业务的潜在影响,实施集群迁移时通常需要进行新旧集群间的双跑校验。这一过程涉及将线上流量复制至新集群,并同时在新集群上执行作业任务,通过这种方式对数据的一致性和业务的正确性进行全面校验。

由于双跑校验的具体方式会根据您的实际开发环境、业务特性以及数据处理需求有所不同,因此强烈建议您在执行这一关键步骤时,结合自身业务场景和需求特点,灵活选择并制定适宜的双跑校验方案。

步骤四:旧集群下线

在顺利完成数据业务校验之后,即可正式进行交付。通过分步骤地将旧集群上的作业负载逐步迁移至新集群,并在新集群上逐渐增加作业处理量,最终确保所有业务均能在新集群上稳定运行。

当旧集群的业务完全迁移到新集群,且旧集群已无任何业务运行时,可以参照释放集群流程,对旧平台集群进行安全、有序的释放操作。