Общий шаг

  1. Установить файл окружения hive-env.sh
  2. Установить основной файл конфигурации hive-site.xml
  3. Настройка пользователя куста MySQL / пароль и грант
  4. Загрузите и установите коннектор MySQL JDBC
  5. Запуск schemaTool должен увидеть здесь таблицу Hive
  6. Создать расположение Hive по умолчанию
  7. Контрольная точка с командой hive
  8. Запустите хранилище метаданных службы и server2
  9. Подключиться к инструменту базы данных

Шаг 1: Установите файл hive-env.sh

Скопируйте файл шаблона в файл

cp conf/hive-env.sh.template conf/hive-env.sh

Затем войдите внутрь, чтобы отредактировать путь Hadoop.

# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/home/hadoop/hadoop-3.3.1

Шаг 2: Установите файл hive-site.xml

Прежде всего, вам нужно скопировать шаблон, чтобы он был hive-site.xml

cp conf/hive-site.xml.template conf/hive-site.xml

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

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost/metastore_db?createDatabaseIfNotExist=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>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.cj.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
</property>
<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>Hive111!!!</value>
    <description>password to use against metastore database</description>
</property>
<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hiveuser</value>
    <description>Username to use against metastore database</description>
</property>

Шаг 3: Настройка MySQL

Предположим, что MySQL уже запущен и работает. Теперь создаем пользователя:

CREATE USER 'hiveuser'@'localhost' IDENTIFIED BY 'Hive111!!!';
GRANT ALL PRIVILEGES ON *.* TO 'hiveuser'@'localhost';

Обратите внимание, что это пароль для хранилища метаданных Hive, а не для сеанса Hive.

Это должно совпадать со значением на шаге 2.

Шаг 4: Коннектор MySQL JDBC

Загрузите MySQL Connector и скопируйте Jar в папку Hive

Скачать можно здесь:



Затем wget в определенное место и скопируйте в путь Hive.

cp mysql-connector-java-8.0.28.jar /home/hadoop/hive/lib/

Я пытаюсь установить CLASSPATH в нескольких местах, но это не работает.

Пожалуйста, скопируйте.

Шаг 5: Начальный инструмент схемы Hive

schematool  -initSchema  -dbType mysql

Вы должны увидеть таблицу Hive, похожую на вывод ниже.

Шаг 6. Создайте местоположение улья по умолчанию

hdfs dfs -mkdir /tmp
hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -chmod g+w /tmp
hdfs dfs -chmod g+w /user/hive/warehouse

Шаг 7. Проверка с помощью коннектора командной строки Hive

Теперь вы запускаете команду здесь

hive

Могут возникнуть следующие проблемы:

Возможная проблема №1: недопустимый символ

Строка 3218

Затем вы можете увидеть &#8, которые вызывают ошибку

Возможная проблема № 2: ClassCastException

Это связано с тем, что Hive основан на JDK8, а не на JDK11
Ссылки здесь: https://issues.apache.org/jira/browse/HIVE-22415

Перейдите на JDK 8, затем не забудьте изменить переменную среды как в Hadoop, так и в Hive

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

Вас можно найти JAVA_HOMEпо readlink -f $(which java)

Возможная проблема № 3: tmpdir Относительный путь в абсолютном URI

Добавьте приведенный ниже код в начало файла 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>

Источник: https://stackoverflow.com/questions/27099898/java-net-urisyntaxexception-when-starting-hive

Возможное предупреждение: путь к классу SLF4J содержит несколько привязок SLF4J.

Вы можете игнорировать это, но если это раздражает, вы можете удалить дублированный JAR.

Удалите lib/log4j-slf4j-impl-2.10.0.jar в каталоге Hive

Источник: https://stackoverflow.com/questions/27050820/running-hive-0-12-with-error-of-slf4j

Примечание. Я удаляю только slf4j, но в теме выше предлагается удалить 2 jar.

Шаг 8: Запуск сервера Hive

hive --service metastore &
hive --service hiveserver2 &

Это запускается как фон. Если все выглядит хорошо, вы можете disown предотвратить его отключение после завершения сеанса SSH.

jobs
[1] ... metastore
[2] ... hiveserver2
disown %1
disown %2

Шаг 9: Подключение к улью

Не забудьте изменить порт на 10001, так как улей по умолчанию на 10000.

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

Возможные проблемы: не задано обязательное поле serverProtocolVersion!

Вернитесь на сервер, уничтожьте все процессы улья.

Отредактируйте hive-site.xml со следующим свойством:

<property>
  <name>hive.server2.enable.doAs</name>
  <value>false</value> 
</property>

Выполните шаг 7 еще раз.

Наконец мы закончили

Я хочу, чтобы это было проще.

Я делал это уже 3 раза, но каждый раз это кажется болезненным.

Поэтому я пишу это себе в будущее, если мне придется сделать это снова, а также для людей в Интернете.

Надеюсь, это поможет вам сэкономить время.