oozieНачало работы с oozie


замечания

Oozie - это проект с открытым исходным кодом Apache, первоначально разработанный в Yahoo. Oozie - это система планирования общего назначения для многоступенчатых рабочих мест Hadoop.

  • Oozie позволяет сформировать логическую группировку соответствующих заданий Hadoop в объект под названием Workflow . Рабочие процессы Oozie представляют собой DAG (Направленный циклический график) действий.
  • Oozie предоставляет способ планирования рабочего процесса, зависящего от времени или данных, с помощью объекта под названием « Coordinator .
  • Кроме того, вы можете объединить связанные координаторы в объект под названием Bundle и может быть запланирован на сервере Oozie для выполнения.

Oozie поддержка большинства Hadoop рабочих мест как Oozie действий Узлов как: MapRedude , Java , FileSystem (операции HDFS), Hive , Hive2 , Pig , Spark , SSH , Shell , DistCp и Sqoop . Он обеспечивает возможность принятия решений с использованием действия Decision Control Node и параллельного выполнения заданий с использованием Fork-Join Control Node . Это позволяет пользователям настраивать параметры электронной почты для уведомления об успешном завершении / сбое рабочего процесса с помощью действия Email .

Версии

Версия Oozie Дата выхода
4.3.0 2016-12-02

Установка или настройка

Предварительные условия

В этой статье была продемонстрирована установка oozie-4.3.0 на Hadoop 2.7.3

  1. Java 1.7+
  2. Hadoop 2.x (здесь, 2.7.3)
  3. Maven3 +
  4. Блок Unix

Шаг1: файл Dist

Загрузите файл oozie tar.gz с http://www-eu.apache.org/dist/oozie/4.3.0/ и извлеките его

cd $HOME
tar -xvf oozie-4.3.0.tar.gz
 

Шаг 2: Постройте Оози

cd $HOME/oozie-4.3.0/bin
./mkdistro.sh -DskipTests
 

Шаг 3: Установка сервера

Скопируйте созданные двоичные файлы в домашний каталог как «oozie»

cd $HOME
cp -R $HOME/oozie-4.3.0/distro/target/oozie-4.3.0-distro/oozie-4.3.0 .
 

Шаг 3.1: libext Создайте каталог libext внутри каталога oozie

 cd $HOME/oozie
 mkdir libext
 

Примечание . Библиотека ExtJS (2.2+) (необязательно, чтобы включить веб-консоль Oozie). Но библиотека ExtJS не связана с Oozie, потому что она использует другую лицензию :( Теперь вам нужно положить банды хаопа внутри каталога libext, иначе он будет бросать ниже Ошибка в файле oozie.log

WARN ActionStartXCommand: 523 - SERVER [data01.teg.io] USER [hadoop] GROUP [-] TOKEN [] APP [map-reduce-wf] JOB [0000000-161215143751620-oozie-hado-W] ACTION [0000000-161215143751620- oozie-hado-W @ mr-node] Ошибка при запуске [mr-node]. ErrorType [TRANSIENT], ErrorCode [JA009], Сообщение [JA009: Не удается инициализировать кластер. Проверьте конфигурацию для mapreduce.framework.name и соответствующих адресов сервера.]

Итак, давайте поместим ниже jars внутри каталога libext

cp $HADOOP_HOME/share/hadoop/common/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/common/lib/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/hdfs/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/hdfs/lib/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/mapreduce/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/mapreduce/lib/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/yarn/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/yarn/lib/*.jar oozie/libext/
 

Шаг 3.2: Оози Олицетворение Чтобы избежать олицетворения ошибки в oozie, измените core-site.xml, как показано ниже

<!-- OOZIE -->
  <property>
    <name>hadoop.proxyuser.[OOZIE_SERVER_USER].hosts</name>
    <value>[OOZIE_SERVER_HOSTNAME]</value>
  </property>
  <property>
    <name>hadoop.proxyuser.[OOZIE_SERVER_USER].groups</name>
    <value>[USER_GROUPS_THAT_ALLOW_IMPERSONATION]</value>
  </property>
 

Предполагая, что мой пользователь oozie является более отзывчивым, а host - localhost, а группа - hasoop

<!-- OOZIE -->
  <property>
    <name>hadoop.proxyuser.huser.hosts</name>
    <value>localhost</value>
  </property>
  <property>
    <name>hadoop.proxyuser.huser.groups</name>
    <value>hadoop</value>
  </property>
 

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

Шаг 3.3: Подготовьте войну

cd $HOME/oozie/bin
./oozie-setup.sh prepare-war
 

Это создаст файл oozie.war внутри каталога oozie. Если эта война будет использоваться дальше, вы можете столкнуться с этой ошибкой:

ERROR ActionStartXCommand: 517 - SERVER [data01.teg.io] USER [hadoop] GROUP [-] TOKEN [] APP [map-reduce-wf] JOB [0000000-161220104605103-oozie-hado-W] ACTION [0000000-161220104605103- oozie-hado-W @ mr-node] Ошибка, java.lang.NoSuchFieldError: HADOOP_CLASSPATH

Зачем? потому что, компиляция oozie производила баночки Hadoop 2.6.0 даже при указании Hadoop 2.7.3 с опцией «-Dhadoop.version = 2.7.3».

Таким образом, чтобы избежать этой ошибки, скопируйте файл oozie.war в другой каталог

mkdir $HOME/oozie_war_dir
cp $HOME/oozie/oozie.war $HOME/oozie_war_dir
cd $HOME/oozie_war_dir
jar -xvf oozie.war
rm -f oozie.war/WEB-INF/lib/hadoop-*.jar
rm -f oozie.war/WEB-INF/lib/hive-*.jar
rm oozie.war
jar -cvf oozie.war ./*
cp oozie.war $HOME/oozie/
 

Затем восстановите двоичные файлы oozie.war для oozie с подготовкой войны

cd $HOME/oozie/bin
./oozie-setup.sh prepare-war
 

Шаг 3.4: Создание sharelib на HDFS

cd $HOME/oozie/bin
./oozie-setup.sh sharelib create -fs hdfs://localhost:9000
 

Теперь эта настройка sharelib может привести к ошибке ниже:

org.apache.oozie.service.ServiceException: E0104: Не удалось полностью инициализировать службу [org.apache.oozie.service.ShareLibService], не удалось кэшировать sharelib. Администратору необходимо установить sharelib с помощью oozie-setup.sh и выпустить команду CLI «oozie admin» для обновления sharelib

Чтобы этого избежать, измените oozie-site.xml, как показано ниже.

cd $HOME/oozie
vi conf/oozie-site.xml
 

Добавить ниже свойство

<property>
    <name>oozie.service.HadoopAccessorService.hadoop.configurations</name> 
    <value>*=/usr/local/hadoop/etc/hadoop/</value>
</property>
 

Значение должно быть вашим $ HADOOP_HOME / etc / hadoop, где присутствуют все файлы конфигурации hadoop.

Шаг 3.5: Создание Oozie DB

cd $HOME/oozie
./bin/ooziedb.sh create -sqlfile oozie.sql -run
 

Шаг 3.6: Запуск Daemon

Чтобы запустить Oozie в качестве демона, используйте следующую команду:

./bin/oozied.sh start
 

Прекратить

./bin/oozied.sh stop
 

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

cd $HOME/oozie/logs
tail -100f oozie.log
 

Используйте следующую команду, чтобы проверить статус Oozie из командной строки:

$ ./bin/oozie admin -oozie http://localhost:11000/oozie -status
System mode: NORMAL
 

Шаг 4: Установка клиента

$ cd
$ cp oozie/oozie-client-4.3.0.tar.gz .
$ tar -xvf oozie-client-4.3.0.tar.gz
$ mv oozie-client-3.3.2 oozie-client
$ cd bin
 

Добавьте $ HOME / oozie-client / bin в переменную PATH в файл .bashrc и перезапустите свой терминал или выполните

source $HOME/.bashrc
 

Для получения дополнительной информации о настройке вы можете ссылаться на этот URL https://oozie.apache.org/docs/4.3.0/DG_QuickStart.html

Теперь вы можете отправлять задания на работу в oozie в своем терминале.

Чтобы запустить пример, вы можете следовать этому URL-адресу и настроить свой первый пример для запуска https://oozie.apache.org/docs/4.3.0/DG_Examples.html

Вы можете столкнуться с ошибкой при запуске примера сокращения карты в приведенном выше URL-адресе

java.io.IOException: java.net.ConnectException: Вызов от localhost.localdomain / 127.0.0.1 до 0.0.0.0:10020 не удалось при отключении подключения: java.net.ConnectException: соединение отклонено; Подробнее см .: http://wiki.apache.org/hadoop/ConnectionRefused

Решение. Запустите mr-jobhistory-server.sh

cd $HADOOP_HOME/sbin
./mr-jobhistory-server.sh start historyserver
 

Еще одно замечание об изменении файла job.properties:

nameNode=hdfs://localhost:9000
jobTracker=localhost:8032
 

в вашем случае это может быть другим, поскольку я использую apache hadoop, вы можете использовать cloudera / hdp / anything

To run spark job, I have tried running in local[*], yarn-client and
yarn-cluster as master, but succeeded in local[*] only