有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
文档中心 > 迁移服务平台 > 迁移工具 > 大数据迁移校验工具

概述

客户完成 Hive 文件数据迁移后需要确认迁移是否完整,校验工具以 jar 包的形式提供针对迁移源数据和目的数据的多维度的校验,判断迁移前后数据是否一致。

使用环境

系统环境

Windows、Linux 和 macOS 系统。

软件依赖

Java Platform(JDK)版本1.8以上。
安装 Hadoop 环境。

步骤1:获取工具

2. 在迁移服务概览中,找到大数据迁移校验工具,单击下载

步骤2:解压缩工具包

解压并保存到某个目录,例如:
unzip hive-verify-3.0.1.zip && cd hive-verify

步骤3:使用工具

1. Java 虚拟机的运行参数 请根据实际迁移文件数量和机器的资源进行指定,否则默认配置,具体例子设置如下:
java -Xms???m -Xmx ????m -XX:PermSize=????m -XX:MaxPermSize=???m -XX:MaxNewSize=???m
-XX:NewRatio=??? -XX:SurvivorRatio=???
-jar hive-check.jar
2. 校验模式 目前支持指定格式的校验方式有三种,通过 -m 参数指定:
校验方式
命令参数(-m)
校验内容
HDFS 基本信息校验
hive-base
基于 HDFS 文件总长度、文件空间大小以及包含的副本块数对比校验
ORC 文件中元数据文件内容信息校验
hive-orc-content
基于 ORC 文件结构中列块、行块、每个 ORC 文件的起始偏移量、Footer 中使用压缩方式、统计信息、Stripe 中的所有信息以及每条 Column 中的属性字段等对比校验
PARQUET 元数据文件内容信息校验
hive-parquet-content
基于 PARQUET 文件结构中列块行、组、页大小、每页起始偏移量、每行数据起始偏移量、表 scheme 结构定义以及文件创建使用的 API 库等详细信息进行对比
3. 单目录校验
java -jar hive-check.jar
-src 源数据目录/源数据文件具体路径;注:source&target 库(/表)(/分区)要求一致
-tgt 迁移目的数据数据库目录/目的具体文件绝对路径;注:source&target 库(/表)(/分区)要求一致
-log 对比差异输出文件(若没有该文件会自行创建,无需手动创建,若不传默认输出当前目录difference.log)
-m 校验方式(如果是自动识别,可以不传;指定校验方式的话,请参考下表格中的支持校验方式,如果不传默认元数据文件内容校验)
-checkacl 对文件的权限进行检测(不传则不进行权限校验)
单目录校验示例1:指定文件格式校验
java -jar hive-check.jar
-src hdfs://host:9000/user/hive/warehouse/raw.db/
-tgt hdfs://remote-host:9000/user/hive/warehouse/targe.db/
-log hive-orc-content-diff.log
-m hive-orc-content
-checkacl
单目录校验示例2:自动识别文件格式校验
java -jar hive-check.jar
-checkacl
-src hdfs://host:9000/user/hive/warehouse/raw.db/
-tgt hdfs://remote-host:9000/user/hive/warehouse/targe.db/
-log hive-orc-content-diff.log
4. 批量校验
java -jar hive-check.jar
-plist:批量文件目录,具体文件内容格式请参考下述的表格,若格式不符合,将无法读取;注意:source&target 库(/表)(/分区)要求一致
-log:对比差异输出文件(若没有该文件会自行创建,无需手动创建,若不传默认输出 difference.log)
-m:校验方式(若自动识别,可以不传;指定校验方式的话,请参考下表格中的支持校验方式;若不传默认元数据文件内容校验)
-t:并发线程数(如果不指定,该参数可以不传,默认异步线程256个)
-checkacl:对文件的权限进行检测(不传则不进行权限校验)
批量文件中,每一行是一个校验的源和目标记录。源目录和目的目录之间支持英文符号,;以及以一个 tab 三种方式作分割,即“\\t”;示例如下:
hdfs://host:9000/user/hive/warehouse/source.db0;hdfs://host:9000/user/hive/warehouse/target.db0
hdfs://host:9000/user/hive/warehouse/source.db1;hdfs://host:9000/user/hive/warehouse/target.db1
hdfs://host:9000/user/hive/warehouse/source.db2,hdfs://host:9000/user/hive/warehouse/target.db2
批量校验示例1:指定文件格式校验
java -jar hive-check.jar
-plist filePath.txt (文件格式最好是 txt 或 log,避免因为格式而出现解析出错)
-log hive-orc-content-diff.log
-m hive-orc-content
-t 300(指定线程数300)
-checkacl
批量校验示例2:自动识别文件格式校验
java -jar hive-check.jar
-plist filePath.txt (文件格式最好是 txt 或 log,避免因为格式而出现解析出错)
-log hive-orc-content-diff.log
-checkacl

工具性能说明

对比校验过程中需要网络请求远程文件,因此性能主要在于寄主机的带宽,而对于性能要求高的场景,需要将校验文件拆成多批,多台服务节点并行分配校验。

在带宽理想的情况下,可适当增加启动内存,保证文件读内存时,不会因 Jvm 发生 GC 而影响性能,至于回收器方式,请启动时自行选择。

文件校验中将读入内存一次性操作,不存在持久对象,则可考虑适当增加年轻代的堆大小,建议比例8:2(G1回收不适用)。

在批量情况下,该版本开放了批量目录任务调度的异步线程数,仅对于批量目录情况下,可指定异步执行各目录的线程数。由于工具在校验完成即关闭进程,并考虑到占用资源的临时性,传入的线程数就是异步线程池的核心线程数也是最大线程数

针对单个目录下的文件异步执行的线程数目前仍是工具默认,考虑到服务的默认线程数在1500个左右以及存在混合部署的进程,因此目前处理目录下的文件对比最大备用异步线程数是300。