Оглавление:

1. Краткое описание Hive (что это и зачем).

2. Установка Hive.

3. Установка Derby.

4. Настройка мета-хранилища и запуск Hive.


Краткое описание Hive (что это и зачем).

В данной статье мы рассмотрим еще одно практическое применение Hadoop на примере фреймворка Hive.

Многие ошибочно считают, что Hive - это база данных, однако это не так. Насколько я понял, Hive - это движок, преобразующий SQL-запросы в MapReduce -задачи над файлами в HDFS. Следует отметить, что данные таблиц хранятся в HDFS распределенно в виде файлов различных форматов (мы рассмотрим CSV). Для хранения метаданных Hive использует обычную SQL базу данных, наиболее распространенная сборка в комплекте с Apache Derby (реляционная база данных, написанная на Java). Но следует отметить, что могут использоваться и другие БД: MySQL, PostgreSQL или Oracle.

Для работы Hive требуется установленный Hadoop в однонодовой или многонодовой конфигурации, в данном случае это неважно, так как устанавливается фреймворк только на Мастер-машине. Установка Hadoop описана в предыдущих статьях.

Приступим к установке.


Установка Hive.

Для начала необходимо запустить Мастер-машину и скачать необходимые дистрибутивы Hive и Derby.

Описание совместимости дистрибутивов Hive с Hadoop представлено на этой странице. Так как мы установили Hadoop 2.9.1, подходит версия Hive release 2.3.6. Скачиваем файл apache-hive-2.3.6-bin.tar.gz либо с помощью браузера, либо командой wget.

Далее смотрим версии Apache Derby по совместимости с установленной версией Java здесь. Так как мы устанавливали 8-ю версию, Derby 10.14.2.0 подходит. Качаем файл db-derby-10.14.2.0-bin.tar.gz

Далее распакуем скачанные архивы в текущем каталоге Downloads и перенесем их содержимое в каталог /usr/local/.

Распаковать архив hive:

cd home/user/Downloads

Где user - текущий пользователь, под которым скачали файл

tar zxvf apache-hive-2.3.6-bin.tar.gz

Далее переносим содержимое:

sudo mv apache-hive-2.3.6-bin /usr/local/hive

Перейдем в созданный каталог:

cd /usr/local/hive

ls

Увидим следующее содержимое каталога:

Далее необходимо прописать переменные окружения в файле bashrc:

Перейти в домашний каталог и открыть файл в текстовом редакторе:

cd

sudo gedit .bashrc

В конце файла прописать следующие строки:

export HIVE_HOME=/usr/local/hive

export PATH=$PATH:$HIVE_HOME/bin

export CLASSPATH=$CLASSPATH:/usr/local/hadoop/hadoop-2.9.1/lib/*:.

export CLASSPATH=$CLASSPATH:/usr/local/hive/lib/*:.

Мой пример представлен на рисунке ниже

Применить изменения:

source .bashrc

Проверить:

cd $HIVE_HOME

Теперь пропишем каталог установки Hadoop в настройках hive. Для этого необходимо создать файл настроек на основе шаблона в каталоге /usr/local/hive/conf

cd $HIVE_HOME/conf

sudo cp hive-env.sh.template hive-env.sh

Прописать путь к Hadoop

sudo gedit hive-env.sh

И добавить строку: export HADOOP_HOME=/usr/local/hadoop/hadoop-2.9.1

Установка hive завершена, теперь установим базу данных Derby.


Установка Derby.

Последовательность действий такая же как и с Hive: распаковываем архив в каталоге Downloads, извлеченный каталог db-derby-10.14.2.0-bin копируем в каталог /usr/local/Derby:

sudo mv db-derby-10.14.2.0-bin /usr/local/Derby

Далее в файле bashrc пропишем следующие строки:

export DERBY_HOME=/usr/local/Derby

export PATH=$PATH:$DERBY_HOME/bin

export CLASSPATH=$CLASSPATH:$DERBY_HOME/lib/derby.jar:$DERBY_HOME/lib/derbytools.jar

Применить изменения

sudo source .bashrc

Создать файл мета-хранилища Derby:

sudo mkdir $DERBY_HOME/data

На этом все для Derby.


Настройка мета-хранилища и запуск Hive.

Основной файл конфигурации Hive - hive-site.xml. Его скопируем из файла-шаблона:

cd $HIVE_HOME/conf

cp hive-default.xml.template hive-site.xml

Теперь откроем файл для редактирования и вставим следующие строки (смотрите рисунок):



Обратите внимание на строку jdbc:derby, путь к метахранилищу должен соответствовать вашему!

Далее нужно создать файл jpox.properties (естественно в каталоге $HIVE_HOME/conf). Открытие несуществующего файла в редакторе приводит к его созданию:

sudo gedit jpox.properties

Прописать в нем следующее:


javax.jdo.PersistenceManagerFactoryClass =

org.jpox.PersistenceManagerFactoryImpl

org.jpox.autoCreateSchema = false

org.jpox.validateTables = false

org.jpox.validateColumns = false

org.jpox.validateConstraints = false

org.jpox.storeManagerType = rdbms

org.jpox.autoCreateSchema = true

org.jpox.autoStartMechanismMode = checked

org.jpox.transactionIsolation = read_committed

javax.jdo.option.DetachAllOnCommit = true

javax.jdo.option.NontransactionalRead = true

javax.jdo.option.ConnectionDriverName = org.apache.derby.jdbc.ClientDriver

javax.jdo.option.ConnectionURL = jdbc:derby://Master1:1527/usr/local/hive/metastore_db;create = true

javax.jdo.option.ConnectionUserName = APP

javax.jdo.option.ConnectionPassword = mine


Внимание на выделенную строку! Имя хоста и путь должны соответствовать вашим.

Далее необходимо инициализировать метахранилище:

cd $HIVE_HOME/bin

schematool -initSchema -dbType derby


Если ошибок (exeption) нет, все прошло успешно.

Осталось настроить каталоги HDFS для Hive и назначить им права доступа:

hadoop fs -mkdir /tmp

hadoop fs -mkdir /user/hive/warehouse

hadoop fs -chmod g+w /tmp

hadoop fs -chmod g+w /user/hive/warehouse


Все готово к запуску Hive:

cd $HIVE_HOME/bin

hive


Если у вас вывод как на картинке снизу, поздравляем, вы запустили командную строку Hive!


Если все успешно, проверим работоспособность командой:

show tables;

Точка с запятой обязательны! Результат такой:

Если все так, то все работает правильно. Иногда требуется запуск сервера Derby руками (если show tables тупит и выдает ошибку) с помощью команды startNetworkServer

Почему-то у меня получилось именно так, выдает ошибку:

FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

Решение проблемы пока не нашел, поэтому запускаем еще один терминал CTRL+SHIFT+T и в нем запускаем startNetworkServer. Запустить новую консоль нужно, так как сервер блокирует вывод, можно запустить демоном, пока не пробовал. Мой результат на рисунке ниже.

Комментарии

Комментировать могуть только зарегистрированные пользователи

Мы в социальных сетях
Перевести страницу (translate page)
Реклама