Общий шаг
- Установить файл окружения
hive-env.sh
- Установить основной файл конфигурации
hive-site.xml
- Настройка пользователя куста MySQL / пароль и грант
- Загрузите и установите коннектор MySQL JDBC
- Запуск schemaTool должен увидеть здесь таблицу Hive
- Создать расположение Hive по умолчанию
- Контрольная точка с командой
hive
- Запустите хранилище метаданных службы и server2
- Подключиться к инструменту базы данных
Шаг 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
Затем вы можете увидеть 
, которые вызывают ошибку
Возможная проблема № 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 раза, но каждый раз это кажется болезненным.
Поэтому я пишу это себе в будущее, если мне придется сделать это снова, а также для людей в Интернете.
Надеюсь, это поможет вам сэкономить время.