美文网首页
Hive中的锁的用法和使用场景

Hive中的锁的用法和使用场景

作者: 大数据技术派 | 来源:发表于2020-12-19 15:25 被阅读0次

前面遇到过一次因为Hive中表被锁住了,导致定时任务一直失败。这两天又出现了表被锁,原因是连接hiveserver2过于频繁,mysql连接被打满,引发的连锁反应,导致我们的小时任务一直失败,下午重点注意到这个问题,才解决好。

Hive中的锁

在执行insert intoinsert overwrite任务时,中途手动将程序停掉,会出现卡死情况(无法提交MapReduce),只能执行查询操作,而drop insert操作均不可操作,无论执行多久,都会保持卡死状态。

查看Hive的中死锁,可以使用show locks [table]来查看。

clipboard

可以看到里面的那个Type下的EXCLUSIVE,这是一种互斥锁,需要解决,否则后续的查询和插入任务都会影响。

hive存在两种锁,共享锁Shared (S)和互斥锁Exclusive (X)

S X
S
X

锁的基本机制是:

  • 元信息和数据的变更需要互斥锁
  • 数据的读取需要共享锁

触发共享锁的操作是可以并发执行的,但是触发互斥锁,那么该表和该分区就不能并发的执行作业了。

微信截图_20201207211428

对于上面的情况,使用解锁命令:

unlock table tableName

注意表锁和分区锁是两个不同的锁,对表解锁,对分区是无效的,分区需要单独解锁

解锁方法

查看表被锁的情况:

show locks tableName

常规解锁方法:

unlock table 表名;  -- 解锁表
unlock table 表名 partition(dt='2014-04-01');  -- 解锁某个分区

高版本hive默认插入数据时,不能查询,因为有锁

可能出现的问题

解锁之路通常不是一帆风顺的,可能会遇到各种问题,笔者是在Hive2.1.1下面测试,比如:

clipboard3

这个命令无法执行,说LockManager没有指定,这时候需要执行命令:

set hive.support.concurrency=true;
set hive.txn.manager = org.apache.hadoop.hive.ql.lockmgr.DummyTxnManager;

这样重新执行,命令就可以执行了

如果还!是!不!行,终极方法,可以直接去mysql元数据执行:

select * from HIVE_LOCKS;

查到所有的锁,然后根据条件把对应的锁删掉,这个锁住的表即可释放出来了。

delete from HIVE_LOCKS where HL_DB = 'cdn' and HL_TABLE = 'cdn_log';

注意表名和字段都需要大写

通过这种办法,通常可以彻底解决锁的问题。

相关文章

  • Hive中的锁的用法和使用场景

    前面遇到过一次因为Hive中表被锁住了,导致定时任务一直失败。这两天又出现了表被锁,原因是连接hiveserver...

  • Spark 数据倾斜调优

    1.使用Hive ETL预处理数据 方案适用场景:如果导致数据倾斜的是Hive表。如果该Hive表中的数据本身很不...

  • sqoop:导出MySQL数据至Hive时,数据中包含\001或

    场景 使用sqoop从MySQL导出数据至Hive时,如果数据中包含hive指定的列分隔符,如\001 或\t,那...

  • 【案例-hadoop】hadoop和mysql实时流处理

    一、hadoop和mysql的配合使用 几种hadoop组件的用法: hadoop的hdfs:分布式存储;hive...

  • confluent入库hive安全认证问题

    使用confluent将Kafka中的数据入库hive失败的解决方案 应用场景: 用户想在 HD平台使用confl...

  • 20-Sqoop

    Sqoop: SQL to Hadoop 场景:数据在RDBMS中,我们如何使用Hive或者Hadoop来进行数据...

  • hive积累大全

    此篇内容:hive自定义函数UDF、UDTF,压缩存储方式,hive优化、hive实际编程SQL中的if表达式用法...

  • hbase+hive应用场景

    一.Hive应用场景本文主要讲述使用 Hive 的实践,业务不是关键,简要介绍业务场景,本次的任务是对搜索日志数据...

  • hive中with...as...的用法

    with...as...也叫做子查询部分,语句允许hive定义一个sql片段,供整个sql使用 简介 with.....

  • 乐观锁和悲观锁的使用场景

    悲观锁和乐观锁只适用于更新操作。 使用哪种机制,取决于你的场景,本质上原则和目标:提高写效率。 悲观锁是避免冲突,...

网友评论

      本文标题:Hive中的锁的用法和使用场景

      本文链接:https://www.haomeiwen.com/subject/hskcnktx.html