本文介绍如何将E-MapReduce HDFS上的数据迁移到文件存储HDFS。

背景信息

阿里云E-MapReduce是构建在阿里云云服务器ECS上的开源Hadoop、Spark、Hive、Flink生态大数据PaaS产品。提供用户在云上使用开源技术建设数据仓库、离线批处理、在线流式处理、即时查询、机器学习等场景下的大数据解决方案。

准备工作

  1. 开通并创建E-MapRedece集群,详情请参见创建集群
    说明 当使用阿里云文件存储HDFS替换E-MapReduce HDFS服务时,您可以选择使用高效云盘、SSD云盘或者本地盘作为Shuffle数据的临时本地存储。具体存储规划可以参考:存储说明
  2. 开通文件存储HDFS服务,并创建文件系统实例、添加挂载点,创建权限组和权限组规则,详情请参见文件存储HDFS快速入门
    说明 配置挂载点时选择的专有网络和交换机要与E-MapReduce集群侧的配置保持一致。您可以通过以下方法获取:
    1. 登录阿里云E-MapReduce控制台
    2. 集群管理页面,找到需要挂载文件存储HDFS的目标E-MapReduce集群,单击管理
    3. 单击集群基础信息,在网络信息区域中获取专有网络和交换机信息。

数据迁移

  1. 登录阿里云E-MapReduce控制台
  2. 集群管理页面,找到需要挂载文件存储HDFS的目标E-MapReduce集群,单击管理
  3. 配置链接。
    1. 选择集群服务 > HDFS,单击配置
    2. 服务配置中,选择core-site,并单击自定义配置
    3. 新增如下配置项,单击确定
      • (必须配置)配置项fs.dfs.impl,其值:com.alibaba.dfs.DistributedFileSystem
      • (必须配置)配置项fs.AbstractFileSystem.dfs.impl,其值:com.alibaba.dfs.DFS
      • (可选)配置项io.file.buffer.size,其值:4194304
      • (可选)配置项dfs.connection.count,其值:1
    4. 确认自定义配置成功后,单击保存,在确认保存对话框中,输入执行原因,单击确定
    5. 单击部署客户端配置,在确认保存对话框中,输入执行原因,单击确定
  4. 执行以下命令将文件存储HDFS最新的SDK包(单击此处下载),放置到E-MapReduce HDFS服务存放jar包的路径下。
    cp ~/aliyun-sdk-dfs-1.0.2-beta.jar    /opt/apps/ecm/service/hadoop/2.8.5-1.3.1/package/hadoop-2.8.5-1.3.1/share/hadoop/hdfs/

    在E-MapReduce服务中,对应的路径为/opt/apps/ecm/service/hadoop/x.x.x-x.x.x/package/hadoop-x.x.x-x.x.x/share/hadoop/hdfs

    说明 集群中的每台机器都需要在相同位置添加该SDK包。
  5. 暂停服务。

    为了保证在数据迁移过程中数据不丢失,需要暂停数据处理服务(如:YARN服务、Hive服务、Spark服务、HBase服务等),HDFS服务仍需保持运行。此处以暂停Spark服务为例进行说明。

    1. 选择集群服务 > Spark
    2. 在页面右侧的操作栏中,单击停止 All Components
    3. 在执行集群操作对话框中,填写执行原因,并单击确定

      当组件前面的图标变成红色,表示该组件服务已停止。直到Spark服务运行的组件全部停止后,再进行其他服务的组件停止操作。无需关注xxx Client组件的状态。

    4. 重复上述步骤,停止剩余服务。
      说明 只保留HDFS服务正常运行,以方便进行数据迁移。但是如果要迁移的数据量大,请开启YARN服务,以便使用hadoop的数据迁移工具hadoop distcp进行快速地数据迁移。
  6. 迁移数据。

    建议将/user、/hbase、/spark-history 、/apps等服务目录和相关的数据目录全量迁移至文件存储HDFS。

    • 如果涉及将云下集群的数据迁移到云上,请参见迁移开源HDFS的数据到文件存储HDFS
    • 如果E-MapReduce HDFS文件系统上的数据量较小,可以使用hadoop fs -cp命令进行数据迁移。

      为了避免因为权限问题导致数据迁移失败,建议使用root用户执行命令。

      hadoop fs -cp /user  dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290/

      其中f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com为您的文件存储HDFS挂载点域名,请根据实际情况进行修改。

    • 如果E-MapReduce HDFS文件系统上的数据量较大,需要使用数据迁移工具hadoop distcp进行数据迁移,详情请参见迁移开源HDFS的数据到文件存储HDFS
      hadoop distcp hdfs://emr-header-1.cluster-xxxx:9000/  dfs://f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com:10290/

      其中f-xxxxxxxxxxxxxxx.cn-xxxxxxx.dfs.aliyuncs.com为您的文件存储HDFS挂载点域名,需要根据实际情况进行修改。

后续步骤

配置E-MapReduce服务使用文件存储HDFS