大数据问题排查系列-因hive中元数据与hdfs中实际的数据不一致引起的问题的修复(代码片段)

明哥的IT随笔 明哥的IT随笔     2022-12-28     358

关键词:

大数据问题排查系列 - 因HIVE 中元数据与HDFS中实际的数据不一致引起的问题的修复

前言

大家好,我是明哥!

本片博文是“大数据问题排查系列”之一,讲述某HIVE SQL 作业因为 HIVE 中的元数据与 HDFS中实际的数据不一致引起的一个问题的排查和修复。

以下是正文。

问题现象

客户端报错如下:

Unable to move source xxx to destination xxx

问题分析

客户端的报错信息,并没有完全展现问题背后的全貌。我们进入 hiveserver2 所在节点查看hiveserver2的日志,可以看到如下相关信息:

2021-09-01 11:47:46,795 INFO  org.apache.hadoop.hive.ql.exec.Task: [HiveServer2-Background-Pool: Thread-1105]: Loading data to table hs_ods.ods_ses_acct_assure_scale partition (part_date=20210118) from hdfs://hs01:8020/user/hundsun/dap/hive/hs_ods/ods_ses_acct_assure_scale/part_date=20210118/.hive-staging_hive_2021-09-01_11-47-31_216_694180642957006705-35/-ext-10000
2021-09-01 11:47:46,795 INFO  hive.metastore: [HiveServer2-Background-Pool: Thread-1105]: HMS client filtering is enabled.
2021-09-01 11:47:46,795 INFO  hive.metastore: [HiveServer2-Background-Pool: Thread-1105]: Trying to connect to metastore with URI thrift://hs01:9083
2021-09-01 11:47:46,795 INFO  hive.metastore: [HiveServer2-Background-Pool: Thread-1105]: Opened a connection to metastore, current connections: 54
2021-09-01 11:47:46,796 INFO  hive.metastore: [HiveServer2-Background-Pool: Thread-1105]: Connected to metastore.
2021-09-01 11:47:46,928 INFO  org.apache.hadoop.hive.ql.exec.MoveTask: [HiveServer2-Background-Pool: Thread-1105]: Partition is: part_date=20210118
2021-09-01 11:47:46,945 INFO  org.apache.hadoop.hive.common.FileUtils: [HiveServer2-Background-Pool: Thread-1105]: Creating directory if it doesn't exist: hdfs://hs01:8020/user/hundsun/dap/hive/hs_ods/ods_ses_acct_assure_scale/part_date=20210118
2021-09-01 11:47:46,947 ERROR hive.ql.metadata.Hive: [HiveServer2-Background-Pool: Thread-1105]: Failed to move: 
2021-09-01 11:47:46,947 ERROR org.apache.hadoop.hive.ql.Driver: [HiveServer2-Background-Pool: Thread-1105]: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.MoveTask. Unable to move source hdfs://hs01:8020/user/hundsun/dap/hive/hs_ods/ods_ses_acct_assure_scale/part_date=20210118/.hive-staging_hive_2021-09-01_11-47-31_216_694180642957006705-35/-ext-10000 to destination hdfs://hs01:8020/user/hundsun/dap/hive/hs_ods/ods_ses_acct_assure_scale/part_date=20210118
2021-09-01 11:47:46,948 INFO  org.apache.hadoop.hive.ql.Driver: [HiveServer2-Background-Pool: Thread-1105]: Completed executing command(queryId=hive_20210901114731_d7a78302-fb2a-4b45-9472-db6a9787f710); Time taken: 15.489 seconds
2021-09-01 11:47:46,957 ERROR org.apache.hive.service.cli.operation.Operation: [HiveServer2-Background-Pool: Thread-1105]: Error running hive query: 
org.apache.hive.service.cli.HiveSQLException: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.MoveTask. Unable to move source hdfs://hs01:8020/user/hundsun/dap/hive/hs_ods/ods_ses_acct_assure_scale/part_date=20210118/.hive-staging_hive_2021-09-01_11-47-31_216_694180642957006705-35/-ext-10000 to destination hdfs://hs01:8020/user/hundsun/dap/hive/hs_ods/ods_ses_acct_assure_scale/part_date=20210118
	at org.apache.hive.service.cli.operation.Operation.toSQLException(Operation.java:329) ~[hive-service-2.1.1-cdh6.3.2.jar:2.1.1-cdh6.3.2]
	at org.apache.hive.service.cli.operation.SQLOperation.runQuery(SQLOperation.java:258) ~[hive-service-2.1.1-cdh6.3.2.jar:2.1.1-cdh6.3.2]
	at org.apache.hive.service.cli.operation.SQLOperation.access$600(SQLOperation.java:92) ~[hive-service-2.1.1-cdh6.3.2.jar:2.1.1-cdh6.3.2]
	at org.apache.hive.service.cli.operation.SQLOperation$BackgroundWork$1.run(SQLOperation.java:345) [hive-service-2.1.1-cdh6.3.2.jar:2.1.1-cdh6.3.2]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_271]
	at javax.security.auth.Subject.doAs(Subject.java:422) [?:1.8.0_271]
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1875) [hadoop-common-3.0.0-cdh6.3.2.jar:?]
	at org.apache.hive.service.cli.operation.SQLOperation$BackgroundWork.run(SQLOperation.java:357) [hive-service-2.1.1-cdh6.3.2.jar:2.1.1-cdh6.3.2]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_271]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_271]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_271]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_271]
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_271]
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: Unable to move source hdfs://hs01:8020/user/hundsun/dap/hive/hs_ods/ods_ses_acct_assure_scale/part_date=20210118/.hive-staging_hive_2021-09-01_11-47-31_216_694180642957006705-35/-ext-10000 to destination hdfs://hs01:8020/user/hundsun/dap/hive/hs_ods/ods_ses_acct_assure_scale/part_date=20210118
	at org.apache.hadoop.hive.ql.metadata.Hive.getHiveException(Hive.java:3449) ~[hive-exec-2.1.1-cdh6.3.2.jar:2.1.1-cdh6.3.2]
	at org.apache.hadoop.hive.ql.metadata.Hive.getHiveException(Hive.java:3405) ~[hive-exec-2.1.1-cdh6.3.2.jar:2.1.1-cdh6.3.2]
	at org.apache.hadoop.hive.ql.metadata.Hive.moveFile(Hive.java:3400) ~[hive-exec-2.1.1-cdh6.3.2.jar:2.1.1-cdh6.3.2]
	at org.apache.hadoop.hive.ql.metadata.Hive.replaceFiles(Hive.java:3697) ~[hive-exec-2.1.1-cdh6.3.2.jar:2.1.1-cdh6.3.2]
	at org.apache.hadoop.hive.ql.metadata.Hive.loadPartitionInternal(Hive.java:1614) ~[hive-exec-2.1.1-cdh6.3.2.jar:2.1.1-cdh6.3.2]
	at org.apache.hadoop.hive.ql.metadata.Hive.loadPartition(Hive.java:1525) ~[hive-exec-2.1.1-cdh6.3.2.jar:2.1.1-cdh6.3.2]
	at org.apache.hadoop.hive.ql.metadata.Hive.loadPartition(Hive.java:1489) ~[hive-exec-2.1.1-cdh6.3.2.jar:2.1.1-cdh6.3.2]
	at org.apache.hadoop.hive.ql.exec.MoveTask.execute(MoveTask.java:501) ~[hive-exec-2.1.1-cdh6.3.2.jar:2.1.1-cdh6.3.2]
	at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:199) ~[hive-exec-2.1.1-cdh6.3.2.jar:2.1.1-cdh6.3.2]
	at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:97) ~[hive-exec-2.1.1-cdh6.3.2.jar:2.1.1-cdh6.3.2]
	at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:2200) ~[hive-exec-2.1.1-cdh6.3.2.jar:2.1.1-cdh6.3.2]
	at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1843) ~[hive-exec-2.1.1-cdh6.3.2.jar:2.1.1-cdh6.3.2]
	at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1563) ~[hive-exec-2.1.1-cdh6.3.2.jar:2.1.1-cdh6.3.2]
	at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1339) ~[hive-exec-2.1.1-cdh6.3.2.jar:2.1.1-cdh6.3.2]
	at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1334) ~[hive-exec-2.1.1-cdh6.3.2.jar:2.1.1-cdh6.3.2]
	at org.apache.hive.service.cli.operation.SQLOperation.runQuery(SQLOperation.java:256) ~[hive-service-2.1.1-cdh6.3.2.jar:2.1.1-cdh6.3.2]
	... 11 more
Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: org.apache.hadoop.hive.ql.metadata.HiveException: Unable to move source hdfs://hs01:8020/user/hundsun/dap/hive/hs_ods/ods_ses_acct_assure_scale/part_date=20210118/.hive-staging_hive_2021-09-01_11-47-31_216_694180642957006705-35/-ext-10000/000000_0 to destination hdfs://hs01:8020/user/hundsun/dap/hive/hs_ods/ods_ses_acct_assure_scale/part_date查看详情  

大数据问题排查系列-大数据集群开启kerberos认证后hive作业执行失败(代码片段)

大数据问题排查系列-大数据集群开启kerberos认证后HIVE作业执行失败1前言大家好,我是明哥!本文是大数据问题排查系列的kerberos问题排查子序列博文之一,讲述大数据集群开启kerberos安全认证后,hive作业执行失败... 查看详情

大数据问题排查系列-tdh大数据平台中hive作业长时间无法执行结束

前言大家好,我是明哥!本片博文是“大数据问题排查系列”之一,讲述某星环TDH大数据平台中,研发同学提交的Hive作业在成功提交后,客户端长时间收不到任何结果信息也收不到任何报错信息问题的排查。... 查看详情

大数据线上问题排查系列-hive踩坑记(代码片段)

大数据线上问题排查系列-HIVE踩坑记前言大家好,我是明哥!本片博文是“大数据线上问题排查系列”大类别之一,讲述前段时间我司某产品在某券商遇到的一个问题及解决方案,其背后涉及到hive的一个BUG,在hive3.... 查看详情

hive与hbase的区别与联系

...ve与HBase的区别与联系二者区别Hive:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能。Hive本身不存储和计算数据,它完全依赖于HDFS和MapReduce,Hive中的表纯逻辑。hive... 查看详情

大数据问题排查系列-hdfsfilesystemapi的正确打开方式,你get了吗?(代码片段)

大数据问题排查系列-HDFSFileSystemAPI的正确打开方式,你GET了吗?前言大家好,我是明哥!本片博文是“大数据问题排查系列”之一,我们首先会聊聊一个问题的现象原因和解决方法,然后给出HDFSFileSystemAPI... 查看详情

大数据问题排查系列-sparkstandaloneha模式的一个缺陷点与应对方案(代码片段)

大数据问题排查系列-SPARKSTANDALONEHA模式的一个缺陷点与应对方案前言大家好,我是明哥!作为当今离线批处理模式的扛把子,SPARK在绝大多数公司的数据处理平台中都是不可或缺的。而在底层使用的具体资源管理器上&... 查看详情

大数据系列之数据仓库hive安装

...e主要分为以下几个部分?户接口1.包括CLI,JDBC/ODBC,WebUI元数据存储(metastore)1.默认存储在?带的数据库derby中,线上使?时?般换为MySQL驱动器(Driver)1.解释器、编译器、优化器、执?器Hadoop1.?MapReduce进?计算,?HDFS进?存储 前提... 查看详情

大数据生态安全框架的实现原理与最佳实践(上篇)

前言数字化转型大背景下,数据作为企业重要的战略资产,其安全的重要性不言而喻。我们会通过系列文章,来看下大数据生态中安全框架的实现原理与最佳实践,系列文章一共两篇,包含以下章节:大数... 查看详情

hive底层与数据库交互原理?

...询功能是由HDFS和MapReduce结合起来实现的,对于大规模数据查询还是不建议在hive中,因为过大数据量会造成查询十分缓慢。Hive与MySQL的关系:只是借用MySQL来存储hive中的表的元数据信息,称为metastore(元数据信... 查看详情

hive底层与数据库交互原理?

...询功能是由HDFS和MapReduce结合起来实现的,对于大规模数据查询还是不建议在hive中,因为过大数据量会造成查询十分缓慢。Hive与MySQL的关系:只是借用MySQL来存储hive中的表的元数据信息,称为metastore(元数据信... 查看详情

大数据生态安全框架的实现原理与最佳实践(下篇)

大数据生态安全框架的实现原理与最佳实践(下篇)前言数字化转型大背景下,数据作为企业重要的战略资产,其安全的重要性不言而喻。我们会通过系列文章,来看下大数据生态中安全框架的实现原理与最... 查看详情

大数据生态安全框架的实现原理与最佳实践(下篇)

大数据生态安全框架的实现原理与最佳实践(下篇)前言数字化转型大背景下,数据作为企业重要的战略资产,其安全的重要性不言而喻。我们会通过系列文章,来看下大数据生态中安全框架的实现原理与最... 查看详情

大数据专题--hive与impala

...技术A由FaceBook开发,贡献给APache。Hive是基于Hadoop的一个数据仓库工具,依赖HDFS完成数据存储,依赖于MapReduce处理数据。其本身并不存储数据。Hive定义了简单的类SQL查询语言,称为HQL,通过编写HiveQL语句,运行具体的MapReduce任务... 查看详情

hadoop内hive之间,hive与dbes等之间数据交互的问题与解决方案

之前做大数据处理,经常遇到各种问题。很多时候是项目作业简单项配置问题,也可能是导入导出参数配置的问题,也可能是公司Hadoop平台的问题。那么如何排查问题,解决问题?这种事情,除了自己要积... 查看详情

开启kerberos安全的大数据环境中,yarncontainer启动失败导致作业失败

大数据问题排查系列-开启Kerberos安全的大数据环境中,YarnContainer启动失败导致spark/hive作业失败前言大家好,我是明哥!最近在若干个不同客户现场,都遇到了大数据集群中开启Kerberos后,spark/hive作业提交到YAR... 查看详情

开启kerberos安全的大数据环境中,yarncontainer启动失败导致作业失败

大数据问题排查系列-开启Kerberos安全的大数据环境中,YarnContainer启动失败导致spark/hive作业失败前言大家好,我是明哥!最近在若干个不同客户现场,都遇到了大数据集群中开启Kerberos后,spark/hive作业提交到YAR... 查看详情

实操|hive数据倾斜问题定位排查及解决(代码片段)

Hive数据倾斜怎么发现,怎么定位,怎么解决多数介绍数据倾斜的文章都是以大篇幅的理论为主,并没有给出具体的数据倾斜案例。当工作中遇到了倾斜问题,这些理论很难直接应用,导致我们面对倾斜时还是... 查看详情