集群文件迁移

概述:
数据迁移的场景:集群数据整体搬迁;数据的准实时同步(数据的双备份可用),冷热集群数据分类存储(线上的数据和另外一个冷数据集群)

需要考虑的因素:
1.BandWidth 带宽
数据量很大。如果占用很多,会有不良影响。
2.Performance性能:
单机,分布式
3.Data-Increment-增量同步
当TB,PB级别的数据需要同步的时候,如果每次以全量的方式去同步数据,结果一定是非常糟糕.增量方式的同步会是不错的选择。有两种情况:
原始数据文件进行了Append追加写
原始数据文件被delete删除或rename重命名

因为一般没有对数据的随机插入,所以没有某个数据内容被修改的情况。上面的两个情况可通过元信息比较出来。
一般情况下是对数据进行追加。一些判断的方法:
先比较文件大小。如改变,截取对应原始长度部分进行checksum比较,如果此checksum不变,则此文件必定发生过改变。
如果文件大小一致,则计算相应的checksum,然后比较2者的cheksum。

4.Syncable-数据迁移的同步性
数据迁移的过程中需要保证周期内数据是一定能够同步完的,不能差距太大

因为近期需要做这个事情,在网上整理了这些资料.下面提供一个查到的脚本.

#!/bin/bash
#set -x
DB=$0
# 迁移脚本:第一次拷贝时候使用
# 传入参数:数据库名
#获取hive表的定义:可以添加不需要迁移的表
ret=$(hive -e 'use ${DB};show tables;' | grep -v _es| grep -v _hb|grep -v importinfo)

for tem in $ret:
do
    hive -e "use ${DB};show create table $tem" >> /tmp/creat.sh
    echo -e ';\n' >> /tmp/creat.sh
done

#这里需要处理一个问题:使用show creat table时候会产生一些不需要的东西。需要再进行删除一些东西。

#迁移hive表数据

ret=$(hive -e 'use ${DB};show tables;' | grep -v _es|grep -v _hb|grep -v importinfo)

for tem in $ret:
do
    hadoop distcp hdfs://src:8020/usr/hive/warehouse/${DB}.db/$tem hdfs://192.168.11.129:8020/usr/hive/warehouse/${DB}.db/$tem >> /hdfs/yxy/${DB}/$tem.log 2>&1
done

猜你喜欢

转载自blog.csdn.net/qq_30901367/article/details/64441415