两个不同的HDFS 集群数据迁移( A集群的数据 -> B 集群) 采用的是 SHELL 脚本
-
按表进行;文章来源:https://www.toymoban.com/news/detail-859500.html
-
日期分区进行;文章来源地址https://www.toymoban.com/news/detail-859500.html
-
#!/bin/bash######################创建人:DZH#创建日期: 2020-04#内容: 数据迁移##########################################################[ "$#" -ne 0 ] && FILE=$1path=$(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 dbtablelistdodb_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++))dopart_date=`date -d "${start_date} +${i} day" +'%Y-%m-%d'`echo "${db_name}.${table_name} ${part_date} 迁移开始"#迁移 网络限制300M 增量形式迁移hadoop distcp -bandwidth 300 -m 90 -updatehdfs://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
到了这里,关于HDFS 跨集群数据同步(hive,hadoop)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!