2015-02-17 10 views
0

Основной вопрос: могу ли я использовать Presto в качестве основы для моего метастара в улье?Могу ли я создать метастор улья, используя Presto?

Я пытаюсь установить presto и улей на amazon aws, и у меня возникли проблемы с созданием метафора улья. Presto, похоже, установлен и работает правильно, кроме того, что он не подключается к метасторе. Проблема в том, что когда я запускаю Hive, он не может создать метастор.

Когда я бегу улей я получаю следующие ошибки:

Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient 
    at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:444) 
    at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:672) 
    at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:616) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:483) 
    at org.apache.hadoop.util.RunJar.main(RunJar.java:212) 

Caused by: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient 
    at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1449) 
    at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.<init>(RetryingMetaStoreClient.java:63) 
    at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:73) 
    at org.apache.hadoop.hive.ql.metadata.Hive.createMetaStoreClient(Hive.java:2661) 
    at org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:2680) 
    at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:425) 
    ... 7 more 
Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:408) 
    at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1447) 
    ... 12 more 
Caused by: MetaException(message:Could not connect to meta store using any of the URIs provided. Most recent failure: org.apache.thrift.transport.TTransportException: java.net.ConnectException: Connection refused 
     at org.apache.thrift.transport.TSocket.open(TSocket.java:185) 
     at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.open(HiveMetaStoreClient.java:358) 
     at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:215) 
     at org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient.<init>(SessionHiveMetaStoreClient.java:73) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:408) 
     at org.apache.hadoop.hive.metastore.MetaStoreUtils.newInstance(MetaStoreUtils.java:1447) 
     at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.<init>(RetryingMetaStoreClient.java:63) 
     at org.apache.hadoop.hive.metastore.RetryingMetaStoreClient.getProxy(RetryingMetaStoreClient.java:73) 
     at org.apache.hadoop.hive.ql.metadata.Hive.createMetaStoreClient(Hive.java:2661) 
     at org.apache.hadoop.hive.ql.metadata.Hive.getMSC(Hive.java:2680) 
     at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:425) 
     at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:672) 
     at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:616) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:483) 
     at org.apache.hadoop.util.RunJar.main(RunJar.java:212) 
Caused by: java.net.ConnectException: Connection refused 
     at java.net.PlainSocketImpl.socketConnect(Native Method) 
     at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345) 
     at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 
     at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 
     at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
     at java.net.Socket.connect(Socket.java:589) 
     at org.apache.thrift.transport.TSocket.open(TSocket.java:180) 
     ... 20 more 
) 
at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.open(HiveMetaStoreClient.java:404) 
    at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.<init>(HiveMetaStoreClient.java:215) 
    at org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient.<init>(SessionHiveMetaStoreClient.java:73) 
    ... 17 more 

Мой конф/улей-site.xml выглядит следующим образом:

<property> 
<name>hive.metastore.uris</name> 
<value>thrift://ec2..........amazonaws.com:8080</value> 
<description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore. </description> 

<property> 
<name>javax.jdo.option.ConnectionURL</name> 
<value>jdbc:presto://ec2...........amazonaws.com:9083/hive;databaseName=metastore_db;create=true</value> 
<description>JDBC connect string for a JDBC metastore</description> 

<property> 
<name>javax.jdo.option.ConnectionDriverName</name> 
<value>presto-jdbc-0.90.jar</value> 
<description>Driver class name for a JDBC metastore</description> 

Могу ли я использовать presto для создания своего метастара или мне нужно использовать mySQL или дерби? Если смогу, я бы очень признателен за любую помощь, которую я могу решить.

Спасибо!

+0

Просто любопытно, почему вы хотите это сделать? Интересный случай использования. –

+0

Честно говоря, в основном потому, что я новичок во всей престо-улей, поэтому, когда я следил за учебниками по созданию улья, он предлагал использовать mySQL или Derby, я думал, что могу просто заменить Presto. Только сейчас, после многих неудачных попыток, мне показалось, что это может быть невозможно. –

ответ

0

В теории вы должны быть в состоянии сделать это. Но Presto нуждается в бэкэнд; который поддерживался в Presto, используя для вашего метастара db? Какой бы бэкэнд вы ни использовали, он должен поддерживать вставки.

0

Спасибо за ответы.

@Dain Sundstrom: Я попробовал ваше предложение о ботстрап-действии, но не имел настоящей радости.

Сделав больше исследований структуры улья, я не думаю, что можно использовать престо, как я пытался. Из того, что я понимаю сейчас, presto использует куст как свою базу данных, но сам куст нуждается в базовой базе данных mySQL или дерби, где я ошибаюсь. Таким образом, мой план заключается в том, чтобы установить mySQL, ссылку на улей на него и сделать это именно так. Шаг 2 этого плана - молиться, чтобы он работал без особых проблем.

Благодарим за помощь.

0

Вы можете использовать следующие шаги при хранении metastore к MySQL:

CREATE DATABASE metastore_db; 

CREATE USER 'hiveuser'@'%' IDENTIFIED BY 'hivepassword'; 

GRANT all on *.* to 'hiveuser'@localhost identified by 'hivepassword'; 

flush privileges; 

После этого добавьте ниже вашего улья site.xml в $ HIVE_HOME/CONF/

<property> 
     <name>javax.jdo.option.ConnectionURL</name> 
     <value>jdbc:mysql://10.0.0.96/metastore_db?createDatabaseIfNotExist=true</value> 
     <description>metadata is stored in a MySQL server</description> 
     </property> 

     <property> 
     <name>javax.jdo.option.ConnectionDriverName</name> 
     <value>com.mysql.jdbc.Driver</value> 
     <description>MySQL JDBC driver class</description> 
     </property> 

     <property> 
     <name>javax.jdo.option.ConnectionUserName</name> 
     <value>hiveuser</value> 
     <description>user name for connecting to mysql server </description> 
     </property> 

     <property> 
     <name>javax.jdo.option.ConnectionPassword</name> 
     <value>hivepassword</value> 
     <description>password for connecting to mysql server </description> 
     </property> 

     <property> 
     <name>hive.metastore.uris</name> 
     <value>thrift://10.0.0.96:9083</value> 
     <description>Hive metastore Thrift server</description> 
     </property> 

Тогда запустить службу metastore:

улей --service metastore &

Просто прокомментируйте, если вы хотите узнать больше или застрять в чем-то.

С уважением, Devi Prasad.

+0

Если я запускаю его в одной машине, какой IP-адрес я должен положить в hive.metastore.uris и javax.jdo.option.ConnectionURL? – AritzBi

+0

Вы можете указать локальный или IP-адрес, который вам подходит лучше всего. Я бы предложил вам использовать localhost, если улей, metastore db и presto все работают на одной машине. –

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

  • Нет связанных вопросов^_^