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

在一次 Sqoop 从 MySQL 导入数据到 Hive 的过程中,发现790W+记录仅导入了500W左右。通过日志分析,发现4个MapTask中有3个失败,而后续操作的MapTask数量与数据文件数量不符。Log中显示文件移动时出现 LeaseExpiredException 错误,怀疑是 DN 节点配置问题。解决方案包括:增加 DN 处理文件上限、扩大 NN 内存以及修改 Sqoop 代码以处理文件数量不一致的情况。
摘要由CSDN通过智能技术生成

问题描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值