使用yarn运行分布式xgboost的问题

im9ewurl  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(689)

我在教程中看到了一些关于xgboost在Yarn上的分布式模式的问题。
我听从了他们的指示,但有一些问题我没能解决。
我正在用hadoop2.6.0运行2个ec2示例(它似乎配置正确)。
当我使用以下命令运行他们的演示时:

cd xgboost/demo/distributed-training

# Use dmlc-submit to submit the job.

../../dmlc-core/tracker/dmlc-submit --cluster=yarn --num-workers=2 --worker-cores=2\
../../xgboost mushroom.aws.conf nthread=2\
data=s3://${BUCKET}/xgb-demo/train\
eval[test]=s3://${BUCKET}/xgb-demo/test\
model_dir=s3://${BUCKET}/xgb-demo/model

我从hadoop容器中得到以下错误:

Traceback (most recent call last):
 File "./launcher.py", line 82, in <module>
 main()
 File "./launcher.py", line 77, in main
 ret = subprocess.call(args=sys.argv[1:], env=env)
 File "/usr/lib/python2.7/subprocess.py", line 523, in call
 return Popen(*popenargs,**kwargs).wait()
 File "/usr/lib/python2.7/subprocess.py", line 711, in __init__
  errread, errwrite)
 File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory

显然看起来 subprocess 函数无法找到某些文件。所以我试着看看python想要调用什么。两个参数 subrpocess 是:

['../../xgboost', './mushroom.aws.conf', 'nthread=1', 'data=s3://awstest.xgboost/xgb-demo/train', 'eval[test]=s3://awstest.xgboost/xgb-demo/test', 'model_dir=s3://awstest.xgboost/xgb-demo/model']

以及环境词典。环境字典调用 ${PYTHONPATH} 变量,但它似乎是空的,或者至少当我从终端回显它时,它是空的。
你知道哪里出了问题吗?
谢谢您。

gc0ot86w

gc0ot86w1#

问题中的问题是由xgboost的失败生成引起的。
之后,我开始有以下错误 what(): [19:15:47] src/io/s3_filesys.cc:779: Check failed: curl_easy_perform(curl) == CURLE_OK Aborted (core dumped) 最后一个错误是因为s3 bucket没有有效的ssl证书,所以我修改了 s3_filesys.cc 源,替换所有 httpshttp

fae0ux8s

fae0ux8s2#

我在代码中看到的主要问题是使用相对路径。这个 dmlc-submit 命令不会在它将使用的每个节点中设置当前目录。这导致python子进程告诉您它找不到 ../.../xgboost 二进制作为路径是不一样的。
我使用绝对路径来克服这个问题。

相关问题