BOB综合体育APP 因HIVE元数据与HDFS上的数据纷歧致引首的题目修复

BOB综合体育APP

本文转载自微信公多号「明哥的IT随笔」,作者IT明哥。转载本文请有关明哥的IT随笔公多号。

BOB综合体育APP序言 BOB综合体育APP

行家益,吾是明哥!

BOB综合体育APP

本片博文是“大数据题目排查系列”之一,讲述某HIVESQL作业由于HIVE中的元数据与HDFS中实际的数据纷歧致引首的一个题目的排查和修复。

BOB综合体育APP

以下是正文。

BOB综合体育APP题目表象 BOB综合体育APP

客户端报错如下:BOB综合体育APP

BOB综合体育APP
Unable to move source xxx to destination xxx 
BOB综合体育APP

BOB综合体育APP客户端报错

BOB综合体育APP题目分析 BOB综合体育APP

客户端的报错新闻,并异国十足表现题目背后的全貌。吾们进入hiveserver2所在节点查望hiveserver2的日志,能够望到如下有关新闻:

BOB综合体育APP
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 =29e01dfe-8b9b-427a-a610-1d58c526faca] 2021-09-01 11:47:46,973 INFO  org.apache.hadoop.hive.conf.HiveConf: [d9b4646b-3c22-4589-8912-a68b92efcca7 HiveServer2-Handler-Pool: Thread-474]: Using the default value passed in for log id: d9b4646b-3c22-4589-8912-a68b92efcca7 2021-09-01 11:47:46,973 INFO  org.apache.hadoop.hive.ql.session.SessionState: [d9b4646b-3c22-4589-8912-a68b92efcca7 HiveServer2-Handler-Pool: Thread-474]: Resetting thread name to  HiveServer2-Handler-Pool: Thread-474 2021-09-01 11:47:47,025 INFO  org.apache.hive.service.cli.thrift.ThriftCLIService: [HiveServer2-Handler-Pool: Thread-474]: Session disconnected without closing properly.  2021-09-01 11:47:47,025 INFO  org.apache.hive.service.cli.thrift.ThriftCLIService: [HiveServer2-Handler-Pool: Thread-474]: Closing the session: SessionHandle [d9b4646b-3c22-4589-8912-a68b92efcca7] 2021-09-01 11:47:47,025 INFO  org.apache.hive.service.CompositeService: [HiveServer2-Handler-Pool: Thread-474]: Session closed, SessionHandle [d9b4646b-3c22-4589-8912-a68b92efcca7], current sessions:0 
BOB综合体育APP

从以上新闻能够望到,hivesql行使的是spark实走引擎,且spark作业已经实走成功了,但是在hiveser2做扫尾做事时,移动一时文件到现在的现在录下时报错了,最底层的报错新闻是renameforsrcpathxxxtodestpathxxxreturnedfalse.

BOB综合体育APP

顺藤摸瓜,接下往hdfs上查望题目。始末hdfsdfs-ls发现hdfs上现在的文件已经存在了,且始末时间新闻能够发现该文件是几天前创建的,跟现在sql作业的实走异国有关:

BOB综合体育APP

BOB综合体育APPhdfs-destination-path

BOB综合体育APP题目因为 BOB综合体育APP

始末上述排查分析,题目直接因为已经清亮:hivesql底层的spark作业已经实走成功,对答的数据已经计算完毕,但在移动一时效果文件到最后现在的现在录时,由于hdfs上最后现在的现在录已经存在且现在的现在录下存在同名文件,rename操作无法完善,BOB综合体育APP作业实走战败。

BOB综合体育APP

回头望下吾们的sql其内心就是个对分区外某个分区的insertoverwrite照道理说答该会遮盖现在的分区对答的现在录下的数据文件但为什么这边异国实走删除行为呢?

BOB综合体育APP

这其实是由于该分区外在HIVE中的元数据与HDFS中的数据纷歧致。始末showcreatetable和showpartitions能够发现在HIVE元数据中该分区外只有一个分区但HDFS上存在该外其它分区对答的现在录和文件:

BOB综合体育APP

BOB综合体育APPshowcreatetable

BOB综合体育APP

BOB综合体育APPshowpartitions

BOB综合体育APP

于是题目的根本因为是:该分区外在HIVE中的元数据与HDFS上实际的数据纷歧致当实走insertoverwrite操作时hive始末存储在metastore中的元数据新闻发现现在的分区并不存在也就不会尝试往实走hdfs上该分区对答现在录的删除操作了而实际上hdfs上该分区对答的现在录和文件都是存在的于是作业底层的rename操作战败了。

BOB综合体育APP题目解决 BOB综合体育APP

清新了题目的直接因为和根本因为解决手段也就顺理成章了:修复hive元数据跟hdfs实际的数据相反即可。

BOB综合体育APP

能够行使命令msckrepairtablexxx修复hive外的元数据:

BOB综合体育APP

BOB综合体育APP

元数据修复完毕始末showpartitionsxx发现hive中已经能够查到原失踪的分区。然后重新实走上述insertoverwrite语句作业成功实走。

BOB综合体育APP题目总结 BOB综合体育APP BOB综合体育APP当HIVE中的元数据与HDFS上实际的数据纷歧致时一些平常的HIVESQL操作能够会实走战败。 BOB综合体育APPHIVE中的元数据与HDFS上实际的数据纷歧致的因为有许多常见的有: BOB综合体育APP BOB综合体育APP行使了HIVE外外由于外外的特性在HIVE中删除外外或外外的某些分区时HDFS上对答的现在录和文件仍会存在此时就会造成纷歧致; BOB综合体育APPHIVE的元数据和底层HDFS的数据是从其他集群同步过的但同步过程中有题目比如时间没对齐状态纷歧致; BOB综合体育APPHIVE中的元数据或HDFS上的数占有损坏和丢失。  BOB综合体育APP BOB综合体育APP BOB综合体育APP BOB综合体育APP BOB综合体育APP能够始末msckrepairtablexxx修复hive外的元数据:MSCK[REPAIR]TABLEtable_name[ADD/DROP/SYNCPARTITIONS]; BOB综合体育APP BOB综合体育APP

BOB综合体育APP BOB综合体育APP BOB综合体育APP运营也用的首的数据分析工具:QuickBI即席分析详解 BOB综合体育APP五秒内克隆你的声音并生成任何内容这个开源工具细思极恐 BOB综合体育APP用这个开源工具在Linux上访问你的iPhone BOB综合体育APP牛!这个工具能将公式转化为LaTeX格式 BOB综合体育APP微柔命令走工具WindowsTerminal预览版1.11发布:相符Windows11设计 BOB综合体育APP BOB综合体育APP BOB综合体育APP

posted on 2021-11-21  BOB(中国)官方入口-BOB电竞平台  阅读量:

版权信息

Powered by BOB(中国)官方入口-BOB电竞平台 @2018 RSS地图 HTML地图