Установка Apache Hive и настройка MySql Metastore для Hive

Опубликовано: 18 Февраля, 2022

Apache Hive был первоначально разработан Facebook в 2010 году. Это пакет хранилища данных, используемый для анализа данных. Hive используется для управления структурированными данными и запросов к ним с помощью языка запросов, известного как HQL или HIVEQL, который очень похож на язык запросов SQL. Hadoop предоставляет MapReduce в качестве инструмента программирования для работы с Hadoop, который использует язык программирования Java, поэтому разработчики Facebook представили Hive, чтобы упростить задачу для пользователей, которым удобнее работать с SQL, чем с Java.

Особенности улья:

  • Данные хранятся в HDFS
  • Код MapReduce можно легко подключить
  • Для отказоустойчивости используется Hadoop
  • Драйверы JDBC / ODBC также доступны в Hive.

Metastore хранит записи схем базы данных и другую связанную информацию, такую как метаданные таблиц, столбцы в таблице и их типы данных и т. Д. По умолчанию Hive использует Metastore, состоящий из баз данных Derby, что хорошо для целей тестирования, но когда дело доходит до production, хорошо использовать Metastore типа MySql. Одним из основных недостатков использования баз данных Derby является то, что здесь мы не можем получить доступ к нескольким экземплярам Hive, поэтому мы используем MySql для производственных целей.

Предварительные требования: для установки Apache Hive у вас должны быть предварительно установлены Hadoop и Java.

Шаги по загрузке и настройке MySql Metastore для Hive

Шаг 1. Загрузите Hive с официального сайта, нажав на эту ссылку, и загрузите tar-файл, показанный на изображении ниже, размером около 143 МБ.

Как только файл будет загружен в вашу папку / downloads, извлеките этот файл с помощью приведенной ниже команды, перейдя в каталог / Downloads, а затем поместите его в желаемое место. В моем случае я перемещаю его в папку / Documents, поскольку мой Hadoop также установлен в этом каталоге.

 tar -xvf apache-hive-2.1.1-bin.tar.gz

Шаг 2. После того, как вы загрузили Hive, установите Java-коннектор MySQL, используя следующую команду.

 sudo apt-get установить libmysql-java

Затем создайте связь между файлом jar и папкой hive lib и скопируйте jar в папку lib.

 sudo ln -s /usr/share/java/mysql-connector-java.jar $ HIVE_HOME / lib / mysql-connector-java.jar

Шаг 3. Перейдите в папку / lib внутри папки apache-hive-2.1.1-bin, а затем удалите файл log4j-slf4j-impl-2.4.1.jar . Мы удалили этот файл, потому что тот же файл также присутствует в папке Hadoop, из-за чего иногда возникает ошибка.

Шаг 4: Теперь запустите Hadoop с помощью следующей команды:

 start-dfs.sh
 start-yarn.sh

Для пряжи

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

Шаг 5. После запуска Hadoop мы создадим каталоги для улья. Реализуйте нижеприведенные команды в своем терминале, чтобы создать каталоги.

 hdfs dfs -mkdir -p / пользователь / улей / склад
 hdfs dfs -mkdir -p / tmp / hive

В Warehouse мы будем хранить все данные наших баз данных и таблиц. Весь этот каталог по умолчанию и уже настроен.

Шаг 6: Теперь мы изменим разрешение для всего этого каталога с помощью команды ниже.

 hdfs dfs -chmod 777 / tmp /
 hdfs dfs -chmod 777 / пользователь / улей / склад
 hdfs dfs -chmod 777 / tmp / улей

Шаг 7: Теперь мы установим MySQL с помощью команды ниже.

 sudo apt-get установить mysql-server

Шаг 8: Создайте базу данных Metastore после входа в терминал MySQL, выполните для этого все приведенные ниже команды (используйте root в качестве пароля для SQL).

 mysql> sudo mysql -u корень -p

mysql> СОЗДАТЬ БАЗУ ДАННЫХ metastore_db;
 mysql> ИСПОЛЬЗОВАТЬ metastore_db;

Измените имя пользователя в соответствии с вашими предпочтениями и путь, также если он отличается.

 mysql> ИСТОЧНИК /home/{user-name}/Documents/apache-hive-2.1.1-bin/scripts/metastore/upgrade/mysql/hive-schema-0.14.0.mysql.sql;

Шаг 9: Теперь создайте пользователя улья и пароль улья с помощью следующей команды на терминале mysql.

 mysql> СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'hiveusr' @ '%' ИДЕНТИФИЦИРОВАНО 'hivepassword';
 mysql> ПРЕДОСТАВИТЬ все на *. * 'hiveusr' @ localhost, идентифицированному 'hivepassword';
 mysql> очистить привилегии;

В моем случае имя пользователя моего улья - hiveusr, а пароль - hivepassword . По умолчанию ваш пользователь улья - APP, а пароль - мой , вы можете изменить имя пользователя и пароль, если хотите.

Затем введите exit, чтобы выйти из терминала MySQL.

 mysql> выход

Шаг 10: Теперь перейдите в apache-hive-2.1.1-bin, затем перейдите в папку conf и переименуйте hive-default.xml.template в hive-site.xml и hive-env.sh.template в hive-env.sh.

Шаг 11: Теперь мы начинаем настройку улья, поэтому перейдите к hive-site.xml и измените следующее свойство (используйте clrl + f для поиска свойства в файле)

A: ConnectionURL

<name>javax.jdo.option.ConnectionURL</name>

B: ConnectionUserName

<name>javax.jdo.option.ConnectionUserName</name>
<value>hiveusr</value>

// Измените имя пользователя в значении, если вы изменили его выше.

C: ConnectionPassword

<name>javax.jdo.option.ConnectionPassword</name>
<value>hivepassword</value>

// изменить пароль в значении, если вы изменили его выше.

D: ConnectionDriverName

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

Шаг 12: Теперь откройте hive-env.sh и добавьте в него свой путь к hadoop.

 экспорт HADOOP_HOME = / home / dikshant / Documents / hadoop

Шаг 13: Также замените указанные ниже значения в hive-site.xml (свойство поиска с помощью ctrl + f и введите имя в поле поиска)

A: Replace this properties

<property>
    <name>hive.exec.local.scratchdir</name>
    <value>${system:java.io.tmpdir}/${system:user.name}</value>
    <description>Local scratch space for Hive jobs</description>
  </property>

With this property

<property>
    <name>hive.exec.local.scratchdir</name>
    <value>/tmp/${user.name}</value>
    <description>Local scratch space for Hive jobs</description>
  </property>

B: Replace this property

<property>
    <name>hive.downloaded.resources.dir</name>
    <value>${system:java.io.tmpdir}/${hive.session.id}_resources</value>
    <description>Temporary local directory for added resources in the remote file system.</description>
  </property>

With these properties

<property>
  <name>hive.downloaded.resources.dir</name>
  <value>/tmp/${user.name}_resources</value>
  <description>Temporary local directory for added resources in the remote file system.</description>
</property>

Шаг 14: Теперь самая важная часть - установить путь для Hive в нашем файле .bashrc , поэтому откройте .bashrc с помощью команды ниже.

 sudo gedit ~ / .bashrc

Copy the Hive path shown in the below image and update it according to your hive path (if different).

#Hive Path
export HIVE_HOME=/home/dikshant/Documents/apache-hive-2.1.1-bin
export PATH=$PATH:$HIVE_HOME/bin

Затем создайте этот файл с помощью следующей команды.

 источник ~ / .bashrc

Шаг 15: Теперь запустите эту команду ниже, чтобы инициализировать схему для базы данных MySQL.

 schematool -initSchema -dbType mysql

Шаг 16: теперь он запускает оболочку hive, набрав hive в терминале.

 улей