前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >distcp 并行同步脚本

distcp 并行同步脚本

原创
作者头像
王旭平
发布2023-03-14 15:30:31
5730
发布2023-03-14 15:30:31
举报
文章被收录于专栏:大数据生态

DistCp(distributed copy)是用于大型内部/集群内复制的工具。它使用 MapReduce 来实现其分发、错误处理和恢复、报告的功能。它将文件和目录的列表扩展为映射任务的输入,每个任务将复制源列表中指定的文件的分区。DistCp 是 Hadoop 自带的文件迁移工具。

在迁移数据的过程中,如果单个目录下数据量较大那么使用 distcp 直接同步整个目录,则会有同步时间长、同步报错的问题。这种情况建议是将这个目录进行拆分再进行同步。

如下脚本用于将数据目录拆分后的同步。其中使用的是hadoop用户提交任务;默认最大discp任务并行个数为 10;distcp同步日志在当前目录下的logs目录下。

代码语言:javascript
复制
#!/bin/bash


if [ ! -n "$1" ] ;then
    echo "you have not input a file!"
else
    echo "the file you input is $1"
fi

dataline=$(cat $1 | awk -F "," '{print $1}')

# 源集群的schema
sourceCluster=hdfs://172.16.77.187:4007

# 目标集群的schema
targetCluster=hdfs://172.16.77.128:4007

#最大discp任务并行个数
runningnum=10

export HADOOP_USER_NAME=hadoop
num=0

for line in $dataline
do

   num=$[$num+1]
    echo "source Cluster files:"  ${sourceCluster}${line} 
    echo "target Cluster files:"  ${targetCluster}${line}
    echo "The number of discp tasks:  $num "
    task_name=`echo $line | awk -F"/" '{print $NF}'`
    echo "discp task name:  $task_name "   
    runningapp=$(ps -ef | grep distcp |wc -l)
    echo "The number of discp tasks running in the cluster:" $runningapp

    while [ $runningapp -ge $runningnum ]
    do
      runningapp=$(ps -ef | grep distcp |wc -l)
      echo "yarn正在执行的 distcp 任务数:"$runningapp",sleep 5秒...."
      sleep 5
    done

    dir=`dirname $1`
    cd $dir
    fullPath=`pwd -P`
    mkdir ${fullPath}/logs   &>>/dev/null
    
    #可按照具体的情况调整
    #使用-update -delete 进行同步
    nohup hadoop distcp -Dmapreduce.job.name=$task_name  -Dmapreduce.map.memory.mb=4096 -pbugpt  -i -strategy dynamic -skipcrccheck -update -delete -numListstatusThreads 30  -bandwidth 100 -m 10 ${sourceCluster}${line}  ${targetCluster}${line} > ${fullPath}/logs/${task_name}.log 2>&1 &
    #使用 -overwrite  进行同步
    #nohup hadoop distcp -Dmapreduce.job.name=$task_name  -Dmapreduce.map.memory.mb=4096 -pbugpt -i -strategy dynamic -skipcrccheck -overwrite -numListstatusThreads 30  -bandwidth 100 -m 10 ${sourceCluster}${line}  ${targetCluster}${line} > ${fullPath}/logs/${task_name}.log 2>&1 &

sleep 0.1
done
wait

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
迁移服务平台
迁移服务平台(Migration Service Platform,MSP)是帮助客户将系统从源平台迁移到腾讯云的工具。为迁移上云项目提供源端资源调研、上云规划、目标资源创建、批量迁移实施等能力,帮助降低客户迁移上云的复杂度,提升迁移效率。迁移服务平台 MSP 不收取任何额外费用,您只需为购买的资源及 DTS 数据迁移工具付费。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档