Подтвердить что ты не робот

Java.lang.RuntimeException: невозможно выполнить экземпляр org.apache.hadoop.hive.metastore.HiveMetaStoreClient

Я установил свой куст как указано в ссылке: http://www.youtube.com/watch?v=Dqo1ahdBK_A, но при создании таблицы в Hive я получаю следующую ошибку. Я использую hasoop-1.2.1 и hive-0.12.0.

hive> create table employee(emp_id int,name string,salary double);
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
4b9b3361

Ответ 1

Похож на проблему с вашим метасторе. Если вы используете встроенное дерби, установленное по умолчанию улей метастара. Файл блокировки будет там в случае ненормального выхода. если вы удалите этот файл блокировки, эта проблема будет решена

rm   metastore_db/*.lck

Ответ 2

Это может быть проблемой с метасторе, описанным в описании sachinjose или проблемой подключения. Запустите консоль куста в режиме отладки следующим образом:

hive -hiveconf hive.root.logger=DEBUG,console

Затем выполните простой запрос, например show tables;, и посмотрите, что произойдет. Я столкнулся с этой проблемой после перезапуска namenode, и это произошло из-за того, что в конфигурационных файлах был установлен неправильный хост (при перезагрузке ec2 генерирует новое личное имя IP/хоста).

Ответ 3

Запустите эту команду с консоли:

./hive -hiveconf hive.root.logger=DEBUG,console

Теперь запустите

show databases;

Если вы видите исключение, как показано ниже:

java.sql.SQLException: A read-only user or a user in a read-only database is not permitted to disable read-only mode on a connection.

Это означает, что с метастаром_db возникает некоторая проблема с правами. Вам необходимо изменить права доступа к полной папке. Я запускаю свой куст как пользователь hdfs. Итак, я использовал команду

chown -R hdfs:hadoop * 

в каталоге hive. Это решило проблему.

Ответ 4

hive> show databases;
FAILED: Error in metadata: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

Чтобы решить эту проблему, сначала запустите службы hadoop.

$ start-all.sh

Затем я запустил

hive> show database;

Это отлично работает для меня.

Ответ 5

rm metastore_db/*.lck

Это работает и для меня. Его можно найти в вашем каталоге home/user. Вы можете использовать команду locate, чтобы найти ее: locate metastore_db

После удаления файлов блокировки закройте текущий сеанс. Вызов оболочки hive в новом сеансе

Ответ 6

сделать hive.metastore.schema.verification = false в файле hive-site.xml эта ошибка будет удалена. В моем случае он работает хорошо.

Ответ 7

Перезапуск виртуальной машины или системы также должен освободить блокировку.

Ответ 8

это может быть связано с более чем одним "metastore_db". Удалите "metastore_db", перезапустите кластер hasoop и откройте оболочку hive из папки $HIVE_HOME/bin

Ответ 10

Будучи новичком, я получил тот же набор ошибок.
Было обнаружено, что один из демонов в моем случае namenode не был инициирован. При установке hadoop было бы разумно сделать так, чтобы он ударил по следующим командам:
ps -ef | grep "namenode"
ps -ef | grep "datanode"
ps -ef | grep "tracker"

Нужно проверить соответствующий журнал, если какой-либо из демона не работает.

Ответ 11

Если он находится на локальной машине, похоже, что у вас есть другой терминал, открытый с помощью оболочки/сеанса hive. Вы можете иметь только один сеанс, используя встроенную базу данных дерби. Закройте все другие сеансы улья и попробуйте.

Ответ 12

удалить код в hive-site.xml и вставить этот код в hive-site.xml.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:derby:;databaseName=/home/hadoop/Desktop/apache-hive-2.1.1-bin/metastore_db;create=true</value>
<description>
JDBC connect string for a JDBC metastore.
To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
</description>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>location of default database for the warehouse</description>
</property>
<property>
<name>hive.metastore.uris</name>
<value/>
<description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>org.apache.derby.jdbc.EmbeddedDriver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.PersistenceManagerFactoryClass</name>
<value>org.datanucleus.api.jdo.JDOPersistenceManagerFactory</value>
<description>class implementing the jdo persistence</description>
</property>
</configuration>

Ответ 13

Я столкнулся с той же проблемой, есть некоторые важные моменты, которые могут решить эту проблему.

1. Поместите следующее в начале hive-site.xml

  <property>
    <name>system:java.io.tmpdir</name>
    <value>/tmp/hive/java</value>
  </property>
  <property>
    <name>system:user.name</name>
    <value>${user.name}</value>
  </property>
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:derby:,databaseName=$HIVE_HOME/metastore_db;create=true</value>
    <description>JDBC connect string for a JDBC metastore </description>
  </property>

это установить относительный путь в абсолютном URI и настроить Metastore, где хранится база данных

2. $HIVE_HOME/metastore_db Но $HIVE_HOME/metastore_db, что это полностью удалит вашу схему!

3. Теперь вы должны инициализировать базу данных Derby. По умолчанию Hive использует базу данных Derby.

$ HIVE_HOME/bin/schematool -initSchema -dbType derby

также я предполагаю, что ваша переменная окружения была установлена правильно, если нет, пожалуйста, проверьте их, как показано ниже:

export HADOOP_HOME=/usr/local/hadoop 
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HIVE_HOME=/usr/lib/hive
export PATH=$PATH:$HIVE_HOME/bin

а затем запустите команду hive и введите show databases;

Ответ 14

Я удивлен, увидев, что никто не указал на актуальную проблему, которая чаще всего имеет место.

System.setSecurityManager(null)

Поместите эту строку в начале вашего приложения.

Ответ 15

Я получал ту же ошибку, но не мог даже запустить оболочку улья. Попробовав очень полезную команду отладки куста:

hive -hiveconf hive.root.logger=DEBUG,console

Я смог увидеть, что Hive не может найти действительный Kerberos TGT. В отладочной информации вы увидите что-то о сбое согласования SASL, и нет действительного Kerberos TGT. Моим решением было запустить

kinit

перед запуском улья CLI.

Ответ 16

Я столкнулся с одной и той же проблемой - для решения этой проблемы использовались следующие шаги:

  • Создайте файл hive-site.xml и введите данные (для режима Local/Prod). Убедитесь, что нижеследующее расположение существует /home/hadoop/bhishm/warehouse

    Пример:

    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/home/hadoop/bhishm/warehouse</value>
        <description>
        Local or HDFS directory where Hive keeps table contents.
        </description>
    </property>
    <property>
        <name>hive.metastore.local</name>
        <value>true</value>
        <description>
        Use false if a production metastore server is used.
        </description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:derby:;databaseName=/home/hadoop/bhishm/warehouse/metastore_db;create=true</value>
        <description>
        The JDBC connection URL.
        </description>
    </property>
    </configuration>
    
  • Отредактируйте hive-env.sh → добавьте путь java в первую строку после сокращения использования памяти:

    Пример:

    # Hive Client memory usage can be an issue if a large number of clients
    # are running at the same time. The flags below have been useful in 
    # reducing memory usage:
    
    # The java implementation to use.  Required.
    
    export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk
    
  • Запустите запрос куста.