EC2 EMR не выполняет проблемы, искра-отправка не найдена

Я создал файл sh в сеансе haddop в моем главном EMR для выполнения задания Spark.

исполняемый файл выглядит примерно так же, как обычно:

spark-submit s3://bucket/file.sh

Теперь я пытаюсь создать задание cron для автоматического выполнения скрипта с определенной периодичностью. Что ж, после исследования я заметил, что EC2 AMI требует создания файла с расширением без в пути: /etc/cron.d/schedule, а затем файл schedule может содержать ожидаемое выполнение, поэтому я сделал это:

SHELL=/bin/bash
#PATH=/sbin:/bin:/usr/sbin:/usr/bin
PATH=/home/hadoop/
MAILTO=hadoop
HOME=/home/hadoop/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed


*/20 11-22 * * * root /home/hadoop/file.sh > report.log

Я указал перед пользователем root в моем файле scheduler имя пользователя hadoop, но после запроса в службу поддержки AWS они обращаются ко мне, чтобы настроить его как root, дело в том, что теперь я получаю следующее сообщение об ошибке из журнала cron:

From: [email protected] (Cron Daemon)
To: [email protected]
Subject: Cron <root@ip-10-10-1-240> /home/hadoop/file.sh > update.log
Content-Type: text/plain; charset=UTF-8
Auto-Submitted: auto-generated
X-Cron-Env: <LANG=en_US.UTF-8>
X-Cron-Env: <SHELL=/bin/bash>
X-Cron-Env: <PATH=/home/hadoop/>
X-Cron-Env: <MAILTO=hadoop>
X-Cron-Env: <HOME=/home/hadoop/>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>

/home/hadoop/file.sh: line 6: spark-submit: command not found

Я полагаю, что корень не установил переменные среды SPARK, и поэтому не может понять spark-submit. Как вы знаете, это немного чувствительное изменение и игра с переменными среды в EMR. Я не хочу ничего напортачить, поэтому, если у кого-то есть идея, как решить эту проблему, я ценю обратную связь.

Благодарю.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
771
2

Ответы 2

Почему вы заменяете PATH на PATH=/home/hadoop/? spark-submit находится не там. Если вы не укажете полный путь к исполняемому файлу, он будет искать его в каталогах, указанных в переменной среды PATH.

Запустите which spark-submit в обычной оболочке, и он сообщит вам, где находится spark-submit. Убедитесь, что каталог включен в PATH. Например:

PATH=/home/hadoop:/usr/bin

Вы, вероятно, захотите сохранить исходный PATH, чтобы другие скрипты и сам spark-submit могли найти базовые исполняемые файлы, такие как ls и другие.

проверка: PATH = / home / hadoop: / usr / bin Я дам вам знать

Andres Urrego Angel 08.08.2018 18:43

В конце концов я добавил hadoop в качестве пользователя-исполнителя и все :)

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
#PATH=/home/hadoop/:/usr/bin
MAILTO=hadoop
HOME=/home/hadoop/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed


*/20 11-22 * * *  hadoop  /home/hadoop/file.sh > reportlog
10 11-23 * * *  hadoop /home/hadoop/file2.sh > updatelog

Другие вопросы по теме