KDP场景教程 | 从外部 HDFS 导入数据到 KDP HDFS

从老集群迁移数据到新集群是一个常见需求。在传统模式部署的 HDFS 集群上可以使用 distcp 进行数据迁移。但 KDP 上没有 YARN,无法直接使用 distcp 进行数据迁移。作为替代,我们可以使用 spark-distcp 进行数据迁移。

组件依赖

请安装以下组件:

  • spark-on-k8s-operator

进行数据迁移

假设老集群的 HDFS 开启了 Namenode 高可用,地址分别为

  • hdfs://namenode-1:8020

  • hdfs://namenode-2:8020

KDP 上的 HDFS Namenode 地址则分别为

  • hdfs-namenode-0.hdfs-namenode.kdp-data.svc.cluster.local:8020

  • hdfs-namenode-1.hdfs-namenode.kdp-data.svc.cluster.local:8020

我们将老集群的 hdfs:///data 目录迁移到 KDP HDFS 集群上的 hdfs:///data。

在本地创建文件 spark-distcp.yaml,内容如下:

apiVersion: sparkoperator.k8s.io/v1beta2
kind: SparkApplication
metadata:
  name: spark-distcp
  namespace: kdp-data
spec:
  type: Scala
  mode: cluster
  image: od-registry.linktimecloud.com/ltc-spark:v1.0.0-3.3.0
  sparkVersion: 3.3.0
  mainClass: com.coxautodata.SparkDistCP
  mainApplicationFile: https://repo1.maven.org/maven2/com/coxautodata/spark-distcp_2.12/0.2.5/spark-distcp_2.12-0.2.5-assembly.jar
  hadoopConf:
    "dfs.nameservices": "source,target"
    "dfs.ha.namenodes.source": "nn0,nn1"
    "dfs.namenode.rpc-address.source.nn0": "hdfs://namenode-1:8020"
    "dfs.namenode.rpc-address.source.nn1": "hdfs://namenode-2:8020"
    "dfs.client.failover.proxy.provider.source": "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"
    "dfs.ha.namenodes.target": "nn0,nn1"
    "dfs.namenode.rpc-address.target.nn0": "hdfs-namenode-0.hdfs-namenode.kdp-data.svc.cluster.local:8020"
    "dfs.namenode.rpc-address.target.nn1": "hdfs-namenode-1.hdfs-namenode.kdp-data.svc.cluster.local:8020"
    "dfs.client.failover.proxy.provider.target": "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"
  driver:
    cores: 1
    memory: 512m
  executor:
    cores: 1
    instances: 2
    memory: 512m
  arguments:
    - hdfs://source/data
    - hdfs://target/data

注意 spec.hadoopConf 中的内容,我们将老集群命名为 source,KDP HDFS 集群命名为 target。

driver 和 executor 的资源可以按需要调整。

执行以下命令开始进行数据迁移:

kubectl apply -f spark-distcp.yaml

迁移进度可以查看 spark-distcp-driver pod 的日志,或者通过以下命令从本地浏览器访问 Spark UI:

# 执行完毕后可以从浏览器访问 localhost:4040
kubectl port-forward spark-distcp-driver -n kdp-data 4040:4040

可选参数

可以在 spark-distcp.yaml 的 spec.arguments 中增加以下标识:

2d2bafbb32cbe1156ff550ec5f89d797.jpeg

更多参数和注意事项可以参考 https://index.scala-lang.org/coxautomotivedatasolutions/spark-distcp

🚀🚀项目地址👇👇

https://github.com/linktimecloud/kubernetes-data-platform

abffd8fa3997f4dbe0dffecafa95c76f.png

扫码获取项目地址

🚀社区🚀

我们期待您的贡献和建议!最简单的贡献方式是参与Github议题/讨论的讨论。如果您有任何问题,请与我们联系,我们将确保尽快为您解答。

微信群:添加小助手微信拉您进入交流群

98f4b5c183728aa849bb4ae4280c0a1d.jpeg

 钉钉群:搜索公开群组号 82250000662

🚀贡献🚀

参考开发者指南,了解如何开发及贡献 KDP。

https://linktimecloud.github.io/kubernetes-data-platform/docs/zh/developer-guide/developer-guide.html

👇点击阅读原文,获取项目地址。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值