1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/lianzt-job-timer

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Job-Timer

Инструмент для управления задачами по расписанию, в настоящее время поддерживает три типа задач: Spark job, DataX (для импорта и экспорта данных), а также shell-скрипты.

Каждая задача имеет следующие атрибуты: название, описание, тип (Spark, DataX или Shell), параметры запуска, время начала и периодичность выполнения. Задачи управляются группами, и для анализа данных обычно требуется совместная работа нескольких задач. Например, сначала данные экспортируются в HDFS, затем анализируются с помощью Spark, а во время экспорта могут потребоваться дополнительные операции, такие как перемещение файлов, переименование и т. д. Эти задачи выполняются в строгом порядке, образуя группу задач. Если анализ данных простой, группа может содержать только одну задачу.

Функциональные модули:

  • Управление группами задач (добавление, удаление, изменение и поиск).
  • Интеграция с Livy-консолью.
  • Загрузка файлов непосредственно в HDFS.
  • Мониторинг состояния.
  • Модуль таймера.

Среда:

Разработка на Node.js версии 8.9. Для работы требуется Node.js не ниже версии 8.1.

UI-интерфейс основан на Vue и ElementUI, требуется Chrome версии 45 или выше.

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

Для Spark: взаимодействие со Spark-кластером осуществляется через Livy, однако журналы выполнения собираются с помощью команды yarn. Таким образом, проект предоставляет полный функционал для режима Spark on Yarn, но для других режимов Spark-кластеров он может только запускать задачи, без сбора журналов (журналы Livy всё ещё доступны).

Для DataX: проект Alipay с открытым исходным кодом, зависит от Python 2.7, требует настройки Python в переменной PATH.

Для Shell: скрипты запускаются из каталога проекта. Если скрипт требует определённых путей, рекомендуется использовать команду cd в начале скрипта для изменения каталога. В среде Windows могут возникнуть проблемы с китайскими символами (Node.js использует формат UTF-8 по умолчанию, а файлы bat в Windows используют системный формат).

Hadoop: функция загрузки файлов использует команду hadoop fs, позволяя загружать файлы непосредственно в HDFS. Отсутствие Hadoop не влияет на запуск задач, только на функцию загрузки файлов.

Зависимости:

  • Node.js версии не ниже 8.1.
  • MongoDB версии не ниже 3.4.
  • Apache Livy версии 0.5.
  • DataX версии 3.0.
  • Chrome версии 45.
  • Операционная система Linux.
  • Spark версии 2.0x.
  • Hadoop версии 2.7.x.
  • Другие зависимости указаны в package.json и admin/package.json.

Описание задач:

Spark Job:

Вторичная разработка на основе инструмента Apache Livy. Через Livy отправляет jar-файлы в YARN, при этом jar-файл для выполнения должен быть размещён в HDFS.

Для справки см. документацию по REST API Livy: https://livy.incubator.apache.org/docs/latest/rest-api.html.

Процесс установки: http://note.youdao.com/noteshare?id=ca7126842d0abc74c52998fab8e27306&sub=D7CED5916C2748A7BBAA6072297F5174.

DataX Job:

Открытый инструмент Alipay для импорта и экспорта данных, поддерживает обмен данными между большинством хранилищ, обычно используется для переноса данных из Oracle в Hive.

Зависит от Python версии 2.7.

Документация: https://github.com/alibaba/DataX.

Shell Job:

Разработан на основе функции execFile модуля child_process в Node.js. Система сохраняет shell-скрипт как файл sh, а затем выполняет его с помощью функции execFile. Обратите внимание, что вывод скрипта не должен превышать 200 КБ.

Документация: http://nodejs.cn/api/child_process.html#child_process_child_process_execfile_file_args_options_callback.

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

Streaming Job:

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

Система проверяет состояние всех потоковых задач через определённые промежутки времени. При аварийном завершении задачи система пытается автоматически восстановить её. Интервал проверки настраивается в config.js, а при создании потоковой задачи можно выбрать, следует ли автоматически восстанавливать её после сбоя.

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

Так как потоковые задачи работают в сеансе Livy, перезапуск Job-Timer не повлияет на их выполнение.

Конфигурация:

Интерфейс администратора (UI):

Каталог интерфейса — /admin, разработан на Vue. Это проект, созданный с использованием инструмента vue-cli. Если требуется дополнительная разработка, обратитесь к шаблону проекта webpack для Vue.

В интерфейсе администратора используется iframe для отображения консоли Livy, поэтому необходимо настроить адрес URL Livy Host. Конфигурационные переменные: LIVY_HOST. Для разработки и производства используются разные файлы конфигурации:

  • /admin/config/dev.env.js — для разработки.
  • /admin/config/prod.env.js — для производства.

Конфигурация сервера:

Все конфигурации сервера находятся в файле /config.js. Проект определяет, является ли среда RUN_MODULE = proc производственной, а все остальные значения считаются средой разработки.

Конфигурации в файле представляют собой условные выражения с использованием символа ? :. Если значение не указано, предполагается, что конфигурация одинакова для обеих сред.

Обычно при начальной настройке необходимо изменить следующие параметры:

  • upload — каталог для временных файлов загрузки.
  • livy — API-адрес Apache Livy.
  • mongo — конфигурации MongoDB, если требуется аутентификация, см. документацию MongoDB.
  • datax — домашний каталог DataX 3.0.
  • log4js — конфигурация журнала.
  • listenPort — порт, который занимает проект. Если этот параметр изменён, это повлияет на интерфейс администратора, работающий на порту 8080, также необходимо обновить конфигурацию порта в /admin/config/index.js.

Запуск:

Интерфейс администратора использует Vue и Element UI. Запустите с помощью следующих команд:

# Производство:

# Запуск Livy и MongoDB, настройка переменных среды Python и Hadoop:

cd admin

npm install     # Установить пакеты, связанные с интерфейсом администратора.

npm run build  # Собрать систему интерфейса администратора.

./publish.sh   # Развертывание в каталоге public.

cd ..

npm install   # Установить пакеты, необходимые для сервера.

npm start   # Запустить сервер или pm2 start bin/www.

# Разработка:

cd admin

npm install     # Установить пакеты, связанные с интерфейсом администратора.

npm run dev  # Запустить интерфейс администратора, по умолчанию использует порт 8080. Если порт занят, будет выбран другой порт. Подробности см. в выводе команды.

# Также запустите сервер:

npm install

npm start

Структура таблицы:

Используется база данных MongoDB.

Jobs:

Группа задач.

{
    _id: '', // Автоматически генерируется MongoDB.
    title: '',
    description: '',
    beginTime: new Date(''),    // Время начала выполнения.
    cycle: 10000,       // Период выполнения, в миллисекундах.
    status: '1',        // Статус: 0 — недоступно, 1 — доступно.
    lastRunTime: Date,
    lastLog: '_id of logs',
    group: [{           // Задачи в группе выполняются последовательно.
        id: 0,      // Идентификатор в группе, уникальный в пределах группы.
        title: '',
        description: '',
        type: 'spark | datax | shell',      // Тип задачи, соответствующий различным исполнителям.
        args: {},       // Параметры задачи.
        lastRunTime: Date
    }, ...]
}

Logs:

Журналы.

{
    _id: '', // Автоматически генерируется MongoDB.
    jobId: '_id of jobs',
    title: '',
    group: [{
        id: 0,
        title: '',
        type: 'spark | datax | shell',
        args: {},
        log: 'text | file',
        begin_time: Date,
        end_time: Date
    }],
    beginTime: Date,
    endTime: Date
}

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Инструмент для управления периодическими задачами, который обеспечивает выполнение и сбор журналов задач анализа на платформах больших данных Spark и Yarn; интегрирован с ETL-инструментом Alidatax 3.0 и предоставляет графический интерфейс для управления; централизованно управляет выполнением сценариев оболочки и собирает журналы. Предоставляет ... Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/lianzt-job-timer.git
git@api.gitlife.ru:oschina-mirror/lianzt-job-timer.git
oschina-mirror
lianzt-job-timer
lianzt-job-timer
master