0


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 >
    
标签: hadoop hdfs hive

本文转载自: https://blog.csdn.net/shijiazhenghu/article/details/137746539
版权归原作者 shijiazhenghu 所有, 如有侵权,请联系我们删除。

“HDFS 跨集群数据同步(hive,hadoop)”的评论:

还没有评论