Ошибка: не удалось установить соединение с jdbc: hive2: // localhost: 10000 / metastore: - PullRequest
0 голосов
/ 12 октября 2019

Я использую 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 работают на портах по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...