[关闭]
@guodong 2021-01-13T01:31:50.000000Z 字数 3198 阅读 627

历史数据迁移工具使用说明V1.4

数据迁移


变更历史

版本 日期 修订者 变更内容
1.0 2018-09-12 赵国栋 版本初定义
1.1 2018-09-26 赵国栋 1、vin,vid对照文件增加 获取部分车辆的脚本 2、完善HDFS数据补录增加补录脚本
1.2 2018-11-09 赵国栋 上传hdfs脚本支持多厂商,增加使用<厂商名称英文简写>作为文件名,防止文件冲突覆盖
1.3 2018-11-16 赵国栋 增加报文删除工具说明,修改HDFS数据补录章节 增加支持数据覆盖方法的描述
1.4 2019-02-25 赵国栋 增加前置机日志解析工具说明

总体说明

数据迁移目前常见有2种情况

  1. 历史数据在托管平台需要我们帮助导出
    执行步骤:

    • 原平台vin,vid对照文件获取
    • 原平台报文导出
    • 拷贝数据到目标平台
    • 目标平台vin,vid对照文件获取
    • 数据解析
    • 原始报文导入
    • 内部协议导入
    • hdfs内部协议上传
  2. 历史数据由用户提供
    执行步骤:

    • 拷贝数据到目标平台
    • 目标平台vin,vid对照文件获取
    • 数据解析
    • 原始报文导入
    • 内部协议导入
    • hdfs内部协议上传

vin,vid对照文件获取

全量获取

登录待导出或者待导入平台的redis集群服务器,执行以下命令

echo 'hgetall XNY.CARINFO' |redis-cli > records
cat records|awk 'NR%2==1' > vins
cat records|awk 'NR%2==0' |awk -F',' '{print $1}' > vids
paste -d',' vins vids > info

最终生成的info文件即为对照文件,格式为 vin,vid

指定部分车辆获取

复制用户提供的vin粘贴到文本文件另存为 vin.txt,然后执行以下脚本

  1. for i in `cat vin.txt`;do
  2. vid=`echo 'hget XNY.CARINFO' $i|redis-cli |awk -F',' '{print $1}'`
  3. if [ ! $vid ];then
  4. continue
  5. fi
  6. echo $i,$vid >>info
  7. done

最终生成的info文件即为对照文件,格式为 vin,vid

注意:如果是数据导出则需要在待导出的平台获取,如果是数据解析或者导入需要在目标平台再次获取,因为两个平台的对应关系可能不同,切记。。要不然会出现导入的数据不可查询或者数据错乱

报文导出工具说明

导出工具下载地址:

svn://192.168.6.140/document/企业平台/企业平台升级部署/历史数据迁移工具/exportPacket.zip

文件结构说明

  1. exportPacket
  2. |-- lib 依赖包
  3. |-- hadoop-java-api-1.0.0.jar 工具代码包
  4. |-- hbase.properties 配置文件

使用之前根据平台信息修改配置文件
配置文件说明,hbase.properties

  1. # HBase ZK地址,需要根据平台修改
  2. hbase.zookeeper.quorum=192.168.2.128,192.168.2.129,192.168.2.140
  3. # vin,vid对照文件路径,文件需要dos2unix,此文件可参照《vin,vid对照文件获取》章节来获取
  4. vid2vin.file.path=/root/info.txt
  5. # 结果文件路径 需要预先创建
  6. result.file.path=/root/res/
  7. # 导出数据的开始日期 13位毫秒数时间戳
  8. start.row.timestamp=1431234000000
  9. # 导出数据的结束日期 13位毫秒数时间戳
  10. stop.row.timestamp=1526533200000

修改完毕配置文件之后执行以下命令即可导出

nohup java -cp hadoop-java-api-1.0.0.jar com.bitnei.main.ExportPacket &

报文删除工具说明

程序包以及配置信息与 报文导出工具说明 章节完全一致,只需要执行以下脚本

nohup java -cp hadoop-java-api-1.0.0.jar com.bitnei.main.DeleteRealinfo <表名[packet或者realinfo]> &

前置机日志解析工具说明

工具下载地址

svn://192.168.6.140/document/企业平台/企业平台升级部署/历史数据迁移工具/split_source.tar.gz

先把term_gb_svr.log 日志拷贝到一个in的目录下

[/home/root]# mkdir in
[/home/root]# cp /opt/comm_app/lbs/log/ws/2019/02/22/term_gb_svr.log* in
[/home/root]# mkdir out
[/home/root]# ./split_source in/ out/

此工具输出的数据格式与报文导出工具导出的数据格式一致
输出的结果文件需要使用报文解析工具进行下一步操作

报文解析工具说明

解析工具下载地址:

svn://192.168.6.140/document/企业平台/企业平台升级部署/历史数据迁移工具/offline_new_tools_packet.tar.gz

文件解压之后有一个可执行命令 offline_new_tools_packet

执行以下命令进行数据解析

./offline_new_tools_packet -d <源数据路径> -i <vinvid映射文件> -c <内部协议输出路径> -p <内部协议packet输出路径>

命令说明:

源数据路径: 指通过导出工具生成的文件或者厂商提供的数据文件路径,要求全路径
vinvid映射文件: 指《vin,vid对照文件获取》章节生成的对照文件
内部协议输出路径:解析过后的内部协议文件路径,后面会根据这些文件生成realinfo数据
内部协议packet输出路径:解析过后的packet文件路径,后面会根据这些文件生成packet数据

HBase数据导入工具说明

导入工具下载地址:

svn://192.168.6.140/document/企业平台/企业平台升级部署/历史数据迁移工具/import.zip

解压之后文件结构:

import
    |-- realinfo.py   导入程序
    |-- config.ini    配置文件

配置文件说明:

  1. [info]
  2. thrift_host = 192.168.6.104 hbaseThriftServer地址
  3. root_paths = F:/test/2017,F:/test/2018 待导入文件的路径,可指定多个路径,每个路径会启动一个进程来处理
  4. table_name = packet 导入的数据类型 packet:代表导入原始报文,realinfo:代表内部协议

启动导入程序之前,需要两个依赖项:

  1. HBase添加ThriftServer组件,cm上面操作即可完成
  2. 安装python3运行环境

Python3.6.5安装.pdf170.2kB

依赖项安装完毕后修改配置文件执行以下命令启动脚本:

nohup ./realinfo.py &

HDFS数据补录

如果迁移后数据需要出报表则需要把realinfo数据上传hdfs

  1. 需要的数据为《报文解析》部分生成的realinfo数据
  2. 对每天的多个文件进行追加合并为一个文件
  3. 使用lzop命令对每天文件进行压缩
  4. 使用hadoop put命令对数据上传

整个步骤可以使用以下脚本完成,此脚本需要在datenode节点所在服务器执行,如果数据传输错误需要重新上传请在上传脚本 hadoop put语句中增加 -f 参数强制覆盖

使用示例

./upload.sh <realinfo数据文件路径>  <厂商名称英文简写(防止文件冲突覆盖)>

upload.sh0.7kB

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注