Я использую Cloudera Docker Container с Билайн CLI. Я пытаюсь получить доступ к базе данных метастазов через:
!connect jdbc:hive2://localhost:10000/metastore hive cloudera org.apache.hive.jdbc.HiveDriver
Но вместо успешного подключения выдается ответ:
Error: Could not establish connection to jdbc:hive2://localhost:10000/metastore: Required field 'client_protocol' is unset! Struct:TOpenSessionReq(client_protocol:null, configuration:{use:database=metastore}) (state=08S01, code=0)
Это мой файл hive-site.xml:
`<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>`
`<configuration>`
`<!-- Hive Configuration can either be stored in this file or in the hadoop configuration files -->
<!-- that are implied by Hadoop setup variables. -->
<!-- Aside from Hadoop setup variables - this file is provided as a convenience so that Hive -->
<!-- users do not have to edit hadoop configuration files (that may be managed as a centralized -->
<!-- resource).` -->
`<!-- Hive Execution Parameters -->`
`<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://127.0.0.1/metastore?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>`
`<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>`
`<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>`
`<property>
<name>hadoop.proxyuser.hiveuser.hosts</name>
<value>*</value>
</property>`
`<property>
<name>hadoop.proxyuser.hiveuser.groups</name>
<value>*</value>
</property>`
`<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>cloudera</value>
</property>`
`<property>
<name>hive.metastore.warehouse.dir</name>
<value>/usr/hive/warehouse</value>
</property>`
`<property>
<name>hive.hwi.war.file</name>
<value>/usr/lib/hive/lib/hive-hwi-0.8.1-cdh4.0.0.jar</value>
<description>This is the WAR file with the jsp content for Hive Web Interface</description>
</property>`
`<property>
<name>datanucleus.fixedDatastore</name>
<value>true</value>
</property>`
`<property>
<name>datanucleus.autoCreateSchema</name>
<value>false</value>
</property>`
`<property>
<name>hive.zookeeper.client.port</name>
<value>2222</value>
<description>
The port at which the clients will connect
</description>
</property>`
`<property>
<name>hive.support.concurrency</name>
<description>Enable Hive's Table Lock Manager Service</description>
<value>true</value>
</property>`
`<property>
<name>hive.zookeeper.quorum</name>
<description>Zookeper quorum used by Hive's Table Lock Manager</description>
<value>zk1.myco.com, zk2.myco.com, zk3.myco.com</value>
</property>`
`<property>
<name>hive.metastore.uris</name>
<value>thrift://127.0.0.1:9083</value>
<description>IP address (or fully-qualified domain name) and port of the metastore host</description>
</property>
</configuration>`
Я уже пытался использовать jdbc:thrift://localhost:10000/*
и jdbc:hive2://localhost:9083/*
и jdbc:thrift://localhost:9083/*
. Последний выбрасывает NullPointerException
, первый и второй только что отказались соединиться с java.net.SocketException
.
Я также попытался инициализировать базу данных метастаза с различными сценариями /usr/lib/hive/scripts/metastore/upgrade/mysql/hive-schema-n.n.n.mysql.sql
, включая 0.10.0, 1.1.0(это моя версия куста)
Контейнер запускается с опцией --privileged=true
.
Службы mysqld
, hive-metastore
и hive-server2
работают на портах по умолчанию.