2015-10-27 2 views
0

конфигурации (Hortonworks)Hive: приобретать явный монопольную блокировку

  • улей: BUILD улей-1.2.1.2.3.0.0
  • Hadoop 2.7.1.2.3.0.0-2557

Я пытаюсь выполнить

lock table event_metadata EXCLUSIVE; 

улей ответ:

Ошибка при обработке инструкции: FAILED: Ошибка выполнения, код возврата 1 из org.apache.hadoop.hive.ql.exec.DDLTask. Текущий менеджер транзакций не поддерживает явные запросы блокировки. Менеджер транзакций: org.apache.hadoop.hive.ql.lockmgr.DbTxnManager

В коде есть очевидное место, где явные блокировки отключены: http://grepcode.com/file/repo1.maven.org/maven2/org.apache.hive/hive-exec/1.2.0/org/apache/hadoop/hive/ql/lockmgr/DbTxnManager.java#DbTxnManager

321 @Override 
322 public boolean supportsExplicitLock() { 
323 return false; 
324 } 

Вопросы:

как я могу сделать явные блокировки? В какой версии улья они появляются?

Ниже приведен пример http://www.ericlin.me/how-table-locking-works-in-hive для cloudera, в котором работают явные блокировки.

ответ

0

Hive включает в себя функцию locking, который использует Apache Zookeeper для locking. Zookeeper обладает высоконадежной распределенной координацией. Кроме некоторых дополнительных настройки и конфигурации шагов, Zookeeper является невидимым к Hive пользователей.

В файле $HIVE_HOME/hive-site.xml установите следующие свойства:

<property> 
    <name>hive.zookeeper.quorum</name> 
    <value>zk1.site.pvt,zk1.site.pvt,zk1.site.pvt</value> 
    <description>The list of zookeeper servers to talk to. 
       This is only needed for read/write locks. 
    </description> 
</property> 

<property> 
    <name>hive.support.concurrency</name> 
    <value>true</value> 
    <description>Whether Hive supports concurrency or not. 
    A Zookeeper instance must be up and running for the default Hive lock manager to support read-write locks.</description> 
</property> 

После перезапуска hive, запустите команду

hive> lock table event_metadata EXCLUSIVE; 

Ссылка: Programing улей, O'REILLY

EDIT:

DummyTxnManager.java, которая обеспечивает стандартное поведение улей, имеет

@Override 
    public boolean supportsExplicitLock() { 
    return true; 
    } 

DummyTxnManager размножается pre Hive-0.13 behavior не поддерживает transactions

где, как

DbTxnManager.java, который хранит transactions в metastoredatabase, имеет:

@Override 
    public boolean supportsExplicitLock() { 
    return false; 
    } 
+0

Спасибо за ответ. К сожалению, у меня уже есть все настройки в hive-site.xml – Natalia

+0

DummyTxnManager, который обеспечивает поведение по умолчанию, имеет '@Override public boolean поддерживаетExplicitLock() { return true; } 'https://github.com/apache/hive/blob/86f7af66f03a5b467709a9845d07430b2d729d28/ql/src/java/org/apache/hadoop/hive/ql/lockmgr/DummyTxnManager.java – Vinkal

+0

BTW, я тестировал то же самое на своем cloudera VM. эксклюзивный замок работает хорошо. 'Hive version - Hive 1.1.0-cdh5.4.2' – Vinkal

Смежные вопросы