使用Datax进行两个集群间的数据同步,在读取HDFS数据时,会出现数据丢失问题,本文针对数据丢失问题做出了分析以及对应解决方案,希望帮助大家在使用Datax过程中避免该问题的出现!
问题描述
最近在使用Datax进行两个集群间的数据同步,将老集群(Hive)数据同步到新集群(Phoenix)中,由于两个集群的大数据节点IP不同,老集群有三个IP段(10、20、30)采用的是30段(大数据专用网断),而新集群是采用的20网断,所以无法通过Datax链接老集群HDFS路径,当然这个并不是问题重点。
第一次同步的时候数据是全部同步到了新集群,然而,因为业务关系某个表需要添加三个字段,之后表数据又重新构建了一遍,我们称之为info表吧,然后再次执行脚本将info表同步一下,本来是5000W+的数据,同步完之后缺失了700W+
请忽略读写失败总数,这个不是问题关键,这个是由于字段长度超出了Phoenix表配置的长度,并非Datax问题。
注意看读出记录总数:4442W,而我实际数据表中是有5152W,少了700W+
之后重试了两次,问题依旧!
问题分析
导入成功了4442w,剩余700w没有导入,可以先查看这未成功导入的700w数据是否有数据问题,之后进行了以下操作,最终定位到问题所在
步骤一
将新集群的HDFS数据,导入到hive中查看数据量是否缺少,发现将数据同步到hive之后,数据量与老集群是保持一致,这里基本可以断定数据本身是没有