2016-04-19 4 views
0

Я использую RedHat 6.8 для своих узлов кластера YARN и использует Python 2.6.6. Чтобы получить Python 2.7 в RedHat, вы используете Software Collections. Чтобы активировать коллекцию программного обеспечения, необходимо активировать scl. Чтобы напечатать версию Python, например, один делает scl enable python27 'python -V'xboost dmlc-submit eats command quotes (требуется для запуска задания python через разрешение scl)

Проблема заключается в том, когда я пытаюсь представить свою Python работу ПРЯЖИ следующим

dmlc-submit --cluster=yarn scl enable python27 'python -V' 

кажется, съедают котировки и производит эту ошибку (вместо ожидаемого Python 2.7.8):

Unable to open /etc/scl/prefixes/python! 

То есть тот же результат, один получает при выполнении следующих на Баш строке на любой машине

scl enable python27 python -V 

Я пытаюсь понять, как обмануть argparse, разрешив это.

ответ

0

Посмотрел на argparser (используемый dmlc-core и xgboost) исходный код, пытающийся выяснить любой возможный механизм экранирования. Не удалось найти, но обнаружил, что dmlc-submit создает среду узла подачи задания и воссоздает на каждом из узлов выполнения. Посмотрел на сценарий scl enable и /opt/rh/python27/enable, и реализованный LD_LIBRARY_PATH является важным. PATH также, но по какой-то причине он не переносится, так я теперь указать полный путь к моему SCL при условии python27

После теперь счастливо работает на моих ПРЯЖАХ 2.7.1 кластера

cd xgboost 
dmlc-core/tracker/dmlc-submit --cluster=yarn --num-workers=9 --worker-cores=4 /opt/rh/python27/root/usr/bin/python tests/distributed/test_basic.py 
+0

Привет Эдите, я встретил проблема с xgboost. Я получил «Нет модуля с именем xgboost» при запуске образца в папке «xgboost/tests/distribution/runtests.sh». Я бы подумал: «-файлы xgboost.egg» следует добавить как параметр «dmlc-core». Из вашей текущей команды я думаю, что есть лучший способ добавить модуль xgboost в узел кластеров. Не могли бы вы рассказать мне, как вы это сделали, большое вам спасибо! – LTzycLT

+0

Если вы загрузите xgboost, там есть папка python-package - с README с набором параметров установки, «pip install xgboost» - это один, а «python setup.py install» из этой папки - другой. Это тот, который я использовал, - на каждом узле кластера. Конечно, вы можете сделать это только после того, как вы создали и установили собственную библиотеку xgboost. –

+0

Спасибо большое! Раньше я думал, что использование xgboost с dmlc-core похоже на pyspark, который автоматически копирует соответствующую библиотеку python в драйвер для кластера. Теперь мне кажется, что я должен сделать библиотеку xgboost вручную и отправить с ней исполнительный файл. – LTzycLT