HDFS 跨集群数据同步(hive,hadoop)

两个不同的HDFS 集群数据迁移( A集群的数据 -> B 集群) 采用的是 SHELL 脚本

  1.  按表进行;

  2. 日期分区进行;

  3. #!/bin/bash
    #####################
    #创建人:DZH
    #创建日期: 2020-04
    #内容: 数据迁移
    #####################
    #####################################
    [ "$#" -ne 0 ] && FILE=$1
    path=$(cd `dirname $0`; pwd)
    ############## 获取执行时间范围 (默认7天) ###################
    #if [ "$#" -eq 3 ]; then
    # START_DATE=$2
    # END_DATE=$3
    #else
    # START_DATE=`date -d"-1 day" +%Y-%m-%d`
    # END_DATE=`date -d "-0 day" +%Y-%m-%d`
    #fi
    #
    #echo ${START_DATE}
    #echo ${END_DATE}
    # 读取账户列表
    cat $FILE|while read dbtablelist
    do
    db_name=`echo $dbtablelist|awk -F "|" '{print $1}'`
    table_name=`echo $dbtablelist|awk -F "|" '{print $2}'`
    part_field=`echo $dbtablelist|awk -F "|" '{print $3}'`
    start_date=`echo $dbtablelist|awk -F "|" '{print $4}'`
    end_date=`echo $dbtablelist|awk -F "|" '{print $5}'`
    #if [${start_date} -eq "2999-01-01" ]; then
    # start_date=`date -d"-1 day" +%Y-%m-%d`
    # end_date=`date -d "-0 day" +%Y-%m-%d`
    #fi
    #将日期转为的时间戳格式
    startDate=`date -d "${start_date}" +%s`
    endDate=`date -d "${end_date}" +%s`
    #计算两个时间戳的差值除于每天86400s即为天数差
    stampDiff=`expr $endDate - $startDate`
    days=`expr $stampDiff / 86400`
    echo "${days} 天数据"
    ############# for 单个分区表循环迁移 ################
    for((i=0;i<=${days};i++))
    do
    part_date=`date -d "${start_date} +${i} day" +'%Y-%m-%d'`
    echo "${db_name}.${table_name} ${part_date} 迁移开始"
    #迁移 网络限制300M 增量形式迁移
    hadoop distcp -bandwidth 300 -m 90 -update
    hdfs://10.13.128.4:8020/user/hive/warehouse/${db_name}.db/${table_name}/${part_field}=${
    part_date}
    hdfs://172.21.12.223:8020/user/hive/warehouse/${db_name}.db/${table_name}/${part_field}=
    ${part_date}
    echo "${db_name}.${table_name} ${part_date} 迁移完成"
    done
    ############# for 单个分区表循环迁移 ################
    ######################################
    done
  • 34
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值