Hive导入mysql数据丢失_记录一次 Sqoop 从 MySQL 导入数据到 Hive 问题的排查经过

问题描述

MySQL 中原始数据有 790W+ 的记录数,在 Sqoop 抽取作业成功的情况下在 Hive 中只有 500W 左右的记录数。

排查过程

数据导入脚本 Log

通过 Log 可以发现以下信息:

该 Sqoop 任务被分解为 4 个 MapTask。

MapTask 执行期间有异常,是网络异常导致 MySQL 连接不成功。

Sqoop 任务对应的 MR 执行过程中总的被调起 9 个 MapTask,其中 3 个失败、2 个被 kill,理论上剩余的 4 个 MapTask 是成功执行的。

Sqoop 导入对应的 MR 只有 MapTask,且 MapTask 的数据记录数为 790W+。所以,单纯看 MR 的输出是正常的。

Sqoop 导入完成后,紧跟着有一个读取 Sqoop 目标表数据的 insert overwrite 的操作。该操作只被分解为 2 个 MapTask,说明原数据文件只有两个块。

根据以上信息说明 Sqoop 之后确实只生成了 2 个数据文件,有两个文件丢失了。

详细原始 Log 信息见附件:Sqoop 执行日志

查看 Sqoop 任务对应 MR 的执行日志

根据上面的 Log 中的信息,从 HDFS 上查找对应的日志。Yarn 所有的应用执行日志在 HDFS 的 /data/hadoop/yarn-logs/hadoop/logs/ 目录下。从该目录下查找应用程序 application_1533196506314_4460157 的日志。日志会包含 MR 在各个节点上执行的信息。

从 Log 中发现以下异常信息:

2018-12-10 00:42:30,595 FATAL [IPC Server han

你可能感兴趣的:(Hive导入mysql数据丢失)