<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Hive中的鎖的用法場(chǎng)景

          共 1249字,需瀏覽 3分鐘

           ·

          2020-12-08 07:38

          前面遇到過一次因?yàn)?/span>Hive中表被鎖住了,導(dǎo)致定時(shí)任務(wù)一直失敗。這兩天又出現(xiàn)了表被鎖,原因是連接hiveserver2過于頻繁,mysql連接被打滿,引發(fā)的連鎖反應(yīng),導(dǎo)致我們的小時(shí)任務(wù)一直失敗,下午重點(diǎn)注意到這個(gè)問題,才解決好。

          Hive中的鎖

          在執(zhí)行insert intoinsert overwrite任務(wù)時(shí),中途手動(dòng)將程序停掉,會(huì)出現(xiàn)卡死情況(無法提交MapReduce),只能執(zhí)行查詢操作,而drop insert操作均不可操作,無論執(zhí)行多久,都會(huì)保持卡死狀態(tài)。

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

          clipboard

          可以看到里面的那個(gè)Type下的EXCLUSIVE,這是一種互斥鎖,需要解決,否則后續(xù)的查詢和插入任務(wù)都會(huì)影響。

          hive存在兩種鎖,共享鎖Shared (S)和互斥鎖Exclusive (X)

          SX
          S
          X

          鎖的基本機(jī)制是:

          • 元信息和數(shù)據(jù)的變更需要互斥鎖

          • 數(shù)據(jù)的讀取需要共享鎖

          觸發(fā)共享鎖的操作是可以并發(fā)執(zhí)行的,但是觸發(fā)互斥鎖,那么該表和該分區(qū)就不能并發(fā)的執(zhí)行作業(yè)了。

          微信截圖_20201207211428

          對(duì)于上面的情況,使用解鎖命令:

          unlock?table?tableName

          注意表鎖和分區(qū)鎖是兩個(gè)不同的鎖,對(duì)表解鎖,對(duì)分區(qū)是無效的,分區(qū)需要單獨(dú)解鎖

          解鎖方法

          查看表被鎖的情況:

          show?locks?tableName

          常規(guī)解鎖方法:

          unlock?table?表名;??--?解鎖表
          unlock?table?表名?partition(dt='2014-04-01');??--?解鎖某個(gè)分區(qū)

          高版本hive默認(rèn)插入數(shù)據(jù)時(shí),不能查詢,因?yàn)橛墟i

          可能出現(xiàn)的問題

          解鎖之路通常不是一帆風(fēng)順的,可能會(huì)遇到各種問題,筆者是在Hive2.1.1下面測(cè)試,比如:

          clipboard3

          這個(gè)命令無法執(zhí)行,說LockManager沒有指定,這時(shí)候需要執(zhí)行命令:

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

          這樣重新執(zhí)行,命令就可以執(zhí)行了

          如果還!是!不!行,終極方法,可以直接去mysql元數(shù)據(jù)執(zhí)行:

          select?*?from?HIVE_LOCKS where HL_DB=?;

          查到所有的鎖,然后根據(jù)條件把對(duì)應(yīng)的鎖刪掉,這個(gè)鎖住的表即可釋放出來了。

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

          注意表名和字段都需要大寫。

          通過這種辦法,通常可以徹底解決鎖的問題。

          瀏覽 45
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久精品性爱 | 欧美精品成人在线视频 | 2017亚洲天堂 | 欧洲亚洲日本在线 | 国产精品美女www |