xboost dmlc-submit 吃命令引号(需要通过 scl 启用 运行 python 作业)

xboost dmlc-submit eats command quotes (needed to run python job via scl enable)

我的 YARN 集群节点使用 RedHat 6.8,它使用 Python 2.6.6。为了在 RedHat 中获得 Python 2.7,请使用软件集。要激活软件集合,必须执行 scl enable。例如要打印 Python 版本 scl enable python27 'python -V'

问题是当我尝试按如下方式将 Python 作业提交给 YARN 时

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

它似乎耗尽了引号并产生了这个错误(而不是预期的 Python 2.7.8):

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

这与在任何机器上 bash 提示符下执行以下操作时得到的输出相同

scl enable python27 python -V

我正在想办法让 argparse 让它通过。

查看了 argparser(dmlc-core 和 xgboost 使用的)源代码,试图找出任何可能的转义机制。找不到任何东西,但确实发现 dmlc-submit 会选择作业提交节点环境并在每个执行节点上重新创建。查看 scl enable/opt/rh/python27/enable 脚本并意识到 LD_LIBRARY_PATH 是重要的。 PATH 也是,但由于某种原因它不会延续,所以我现在指定提供的 SCL 的完整路径 python27

以下现在可以在我的 YARN 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