cdh 5.3.2:在路径中加载数据失败,出现“无可见文件”错误

knpiaxh1  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(418)

我们在cdh5.3.2上使用hadoop、hive和impala构建了一个报告应用程序。我们所有的作业都是从一个节点(称为编排节点)调度的。此节点上未部署hadoop服务。但是,由于它是整个应用程序的潜在单点故障,我们通过添加另一个被动编排节点并使用rcron(keep alive)来维护主动-被动同步,从而为它引入了高可用性。
但是,由于实现中的一些缺陷,出现了两个节点中都出现的情况。在此期间,有一些作业试图写入同一hdfs目录,导致以下异常在日志中引发:

8/03/16 07:26:16 WARN hdfs.DFSClient: Error Recovery for block BP-793706682-10.3.8.147-1434350563384:blk_1128320405_57247539 in pipeline 10.3.3.163:50010, 10.3.8.130:50010, 10.3.3.252:50010: bad datanode 10.3.3.163:50010
18/03/16 07:26:16 WARN hdfs.DFSClient: DataStreamer Exception
org.apache.hadoop.ipc.RemoteException(java.io.IOException): BP-793706682-10.3.8.147-1434350563384:blk_1128320405_57247539 does not exist or is not under Constructionnull

其中一个orch节点被手动关闭,但是我们开始看到下面的错误,它来自我们的一个脚本,该脚本试图从hdfs将数据加载到一个表中

Query: load DATA INPATH '/tmp/aaa/bbbb' INTO TABLE temp.data_aaa_bbbb_temp
ERROR: AnalysisException: INPATH location 'hdfs://xyz-nameservice/tmp/aaa/bbbb' contains no visible files.
Could not execute command: load DATA INPATH '/tmp/aaa/bbbb' INTO TABLE temp.data_aaa_bbbb_temp

我不确定是什么导致了这个错误。当两个作业试图同时写入同一位置时,hdfs目录是否损坏?
我可以通过删除和重新创建hdfs位置来解决这个问题,但是这个问题似乎一再出现。
除了可能的根本原因,我也在寻找永久解决这个问题的建议。

kiayqfof

kiayqfof1#

这里的问题是剧本的设计。它做了两件事:1)将数据加载到暂存表中;2)在一些处理之后将数据插入主表中。
脚本在第2步失败,但是由于脚本中内置的重试机制,它从第1步开始重试脚本,而不仅仅是它失败的部分。
因此,再次执行加载数据步骤。但是,此步骤已成功执行,并且没有要移动的文件,因此没有可见文件异常。
我终于将我的脚本重构成两个单独的组件来处理这个问题。

相关问题